NOVINKA! |Jedno volání API, čistá data zpět. Žádné scrapery nejsou potřeba.Získejte 10,000 tokenů zdarma →

Selenium Python (3). Jak obejít detekci Selenium pomocí Pythonu: User Agents a spuštění na pozadí

Naučte se, jak obejít detekci automatizovaného prohlížení pomocí Pythonu, user agents a spuštění na pozadí. Zvyšte své dovednosti v oblasti web scrapingu a automatizace.

Publikováno3. června 2024
Doba čtení3 min

Web scraping a automatizace prohlížeče se staly nedílnou součástí pro mnoho podniků a vývojářů. Mnoho webů však nyní detekuje a blokuje automatizované procházení. Tento článek prozkoumá, jak obejít detekci Selenium pomocí Pythonu manipulací user agentů a spuštěním Selenium na pozadí. Projdeme si podrobné kroky, nástroje a best practices, které zajistí úspěšný web scraping.

Porozumění detekci Selenium#

Než abychom detekci obešli, pojďme pochopit, jak funguje. Weby mohou detekovat Selenium kontrolou přítomnosti určitých vlajek a vlastností webového ovladače. Když web identifikuje tyto vlajky, může zablokovat přístup nebo prezentovat zavádějící data. Například když otevřete web pomocí standardního prohlížeče Chrome, reaguje podle očekávání. Ale když otevřete stejný web pomocí Selenium, web může automatizaci detekovat a zablokovat. K detekci dochází, protože Selenium nastavuje specifické vlajky, které si weby mohou všimnout.

Změna vlajek WebDriver#

Abychom obešli detekci Selenium, jednou účinnou metodou je úprava vlajek WebDriver.

  1. Konfigurace Firefoxu: Otevřete stránku konfigurace Firefoxu napsáním about:config do adresního řádku. Vyhledejte vlajku související s WebDriver a nastavte ji na false.
  2. Implementace kódu:
from selenium import webdriver

# Set Firefox preferences
options = webdriver.FirefoxOptions()
options.set_preference("dom.webdriver.enabled", False)
options.set_preference('useAutomationExtension', False)

driver = webdriver.Firefox(options=options)

Tento skript zakáže příznak detekce WebDriver, čímž se prohlížeč jeví jako běžná instance řízená uživatelem.

User Agents#

User agent je řetězec, který prohlížeč odesílá webovému serveru, aby se identifikoval. Změna řetězce user agent může učinit požadavky Selenium nerozlišitelnými od běžných požadavků prohlížeče.

Kroky na změnu User Agent:

  1. Identifikujte běžný řetězec user agent: Příklad: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  2. Implementujte změnu v Selenium:
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)

Nastavením vlastního user agent můžeme obejít mnoho základních detekcí.

Spuštění Selenium na pozadí#

Spuštění prohlížeče na pozadí je dalším zásadním aspektem vyhýbání se detekci. Toho lze dosáhnout spuštěním prohlížeče v režimu headless.

Implementace:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome(options=options)

Spuštění v režimu headless znamená, že se nezobrazuje žádné grafické rozhraní, což je nezbytné pro spouštění automatizovaných úloh na serverech.

Deaktivace oznámení a zvuků prohlížeče#

Automatizovaný prohlížení často zahrnuje zpracování neočekávaných pop-upů a oznámení. Jejich deaktivace může proces zjednodušit.

Příklad kódu:

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
options.add_experimental_option("prefs", prefs)
options.add_argument("--mute-audio")

driver = webdriver.Chrome(options=options)

Tento skript zakáže oznámení a ztlumí zvuk, což zajišťuje bezproblémovou automatizaci.

Příklad analýzy dat#

Pojďme si rozebrat praktický příklad parsování přezdívek z webu, který generuje náhodná uživatelská jména.

Kroky:

  1. Načtěte web a interagujte s prvky:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

# Locate the username field and extract nicknames
usernames = []
for _ in range(10):
    nickname = driver.find_element(By.ID, "nickname").text
    usernames.append(nickname)
    driver.find_element(By.ID, "generate").click()
print(usernames)

Závěr#

Manipulací WebDriver příznaků, změnou user agentů, spuštěním Selenium na pozadí a vypnutím oznámení prohlížeče můžete efektivně obejít detekci Selenium. Tyto techniky jsou nezbytné pro bezproblémové a nezjistitelné web scraping a automatizaci. Implementace těchto metod zajišťuje, že vaše automatizované úkoly zůstávají nepřerušené a efektivní. Pamatujte, že byste měli web scraping a automatizaci používat vždy eticky, s respektem k podmínkám služeb webu a zákonům na ochranu soukromí dat. Více pokročilých technik a pravidelných aktualizací najdete v našem blogu na FineProxy.org. Neváhejte se podělit o své nápady a zpětnou vazbu v komentářích níže. Pokud se vám tento článek líbil, nezapomeňte se přihlásit k odběru našeho kanálu a zanechte like. Vždy šťastné scrapování!

Implementací těchto kroků a úpravou nastavení podle potřeby můžete zajistit bezproblémový a nedetekovaný běh vašich projektů automatizace.