0. Was ist undetected_chromdriver?
Web-Scraping (Crawling) und Web-Automatisierung spielen heutzutage eine wichtige Rolle bei vielen Datenanalysen und Webentwicklungsprojekten. Unter den Tools, die für diese Aufgaben verwendet werden, sind Selenium und Chromedriver am weitesten verbreitet.
Selenium wurde ursprünglich als Tool zur Automatisierung von Tests für Webanwendungen entwickelt, wird aber aufgrund seiner Funktionalität und Vielseitigkeit von Datenanalysten und Webentwicklern weit verbreitet als Web-Scraping-Tool eingesetzt.
Chromedriver ist ein WebDriver im Selenium-Framework, der zur Steuerung des Google Chrome-Browsers verwendet wird. Entwickler können damit automatisierte Testskripte ausführen, um Websites zu durchsuchen oder Aktionen wie Klicken und Scrollen automatisch auszuführen.
Wenn jedoch versucht wird, Websites mit diesen grundlegenden Tools zu crawlen, haben die meisten modernen Websites Sicherheitsmechanismen, die solche automatisierten Zugriffe erkennen und blockieren. Zum Beispiel, wenn versucht wird, eine Website mit hoher Sicherheit zu crawlen, erkennen und blockieren die Websites diese Aktionen über Selenium und den Chrome-Treiber, um ihre Daten zu schützen. In solchen Situationen wird die Notwendigkeit von undetected_chromedriver deutlich.
undetected_chromedriver ist eine Python-Bibliothek, die im Gegensatz zum herkömmlichen Chromedriver verhindert, dass die Automatisierung von Websites erkannt und blockiert wird. Mit anderen Worten, es ermöglicht es, dass das Crawling-Skript so aussieht, als wäre es keine automatisierte Bot-Handlung, sondern eine echte Person.
Dadurch können Daten, die von der Website bereitgestellt werden, stabiler und effizienter gesammelt werden. undetected_chromedriver ermöglicht es Entwicklern, die mit Selenium und Chromedriver vertraut sind, diese Erkennungsmechanismen zu umgehen, ohne zusätzliches Wissen über die Web-Scraping-Sicherheit zu benötigen.
Auf diese Weise erleichtert undetected_chromedriver die Durchführung von Web-Scraping-Aufgaben auf einfachere und effizientere Weise.
1. Installation und Verwendung
pip install undetected-chromedriver
So wird die Installation durchgeführt.
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from fake_useragent import UserAgent
from selenium_stealth import stealth
from selenium.webdriver.chrome.service import Service
options = uc.ChromeOptions()
- Verschiedene Optionen
options = uc.ChromeOptions erstellt ein Objekt, in dem Optionen angegeben werden können.
# 팝업 차단을 활성화합니다.
options.add_argument('--disable-popup-blocking')
# WebDriver 객체 생성
driver = uc.Chrome( options = options,enable_cdp_events=True,incognito=True)
# selenium_stealth 설정
stealth(driver,
vendor="Google Inc. ",
platform="Win32",
webgl_vendor="intel Inc. ",
renderer= "Intel Iris OpenGL Engine",
fix_hairline=True,
)
options.add_argument('--remote-debugging-port=9222')
# 웹사이트 방문
# driver.get('[원하는 웹사이트 방문]')
# 대기 시간 설정 => 대기 시간을 설정하여, html이 렌더링 되는 시간을 벌어줍니다.
driver.implicitly_wait(2)
# 자바스크립트 코드 실행
driver.execute_script("Object.defineProperty(navigator, 'plugins', {get: function() {return[1, 2, 3, 4, 5];},});")
Die Verwendung von fake_useragent, um bei jedem Durchlauf eine andere Benutzer-Agent-Zeichenfolge zu verwenden, ist eine gute Methode. Dadurch können Informationen, die normalerweise zur Identifizierung des Browsers verwendet werden, geändert werden.
Mit selenium_stealth können einige Merkmale maskiert werden, die von einigen Websites zur Erkennung von Web-Scrapern verwendet werden.
Durch die Verwendung von driver.execute_script() und das Ausführen von JavaScript-Code zur Neudefinition des navigator.plugins-Attributs können Websites daran gehindert werden, eine weitere Methode zur Erkennung von Scrapern zu blockieren.
Das Löschen aller Cookies mit driver.delete_all_cookies() kann dazu beitragen, dass Websites nicht mehr frühere Besuche verfolgen.
Auf diese Weise kann undetected_chromedriver mit verschiedenen Optionen betrieben werden.
try:
driver.find_elements(By.XPATH, "//div[@class='lister__item__inner']/a")[8].click()
driver.implicitly_wait(2)
driver.delete_all_cookies()
driver.execute_script("Object.defineProperty(navigator, 'plugins', {get: function() {return[1, 2, 3, 4, 5];},});")
except:
print("치단당함")
Fügen Sie den Code auf die gleiche Weise ein, wie Sie es zuvor mit chromedriver und Selenium getan haben.
2. Hauptunterschiede zwischen herkömmlichem ChromeDriver und undetected_chromedriver
1) Verstärkte Funktionen: undetected_chromedriver verfügt im Vergleich zum herkömmlichen ChromeDriver über erweiterte Funktionen zum Umgehen von Anti-Bot-Prüfungen. Dies wurde entwickelt, um Abwehrmechanismen zu umgehen, die einige Websites verwenden, um automatisierte Aktionen wie Web-Scraping zu verhindern.
2) Stealth-Modus: undetected_chromedriver hat einige zusätzliche Techniken eingeführt, um automatisierte Aktionen, die mit Selenium durchgeführt werden, besser zu verbergen. Dazu gehören das Entfernen des navigator.webdriver-Flags, die Einstellung der WebGL-Vendor-Konfiguration, die Festlegung der Reihenfolge der Sprach-Plugins, die Einstellung der Bildschirmauflösung usw. Kurz gesagt, man kann sagen, dass der chromedriver vollständig ausgestattet ist.
3) Reaktionsfähigkeit: Einige Benutzer finden, dass undetected_chromedriver im Vergleich zum herkömmlichen ChromeDriver schneller und reaktionsfreudiger ist. Dies kann je nach Website variieren, und nicht alle Websites funktionieren einwandfrei.
3. Fazit
Da Websites kontinuierlich neue Abwehrmechanismen entwickeln und implementieren, ist es erforderlich, kontinuierlich Forschung und Methoden zur Umgehung der neuesten Abwehrtechnologien zu betreiben.
Lesen Sie auch:
Daten sammeln, jetzt automatisieren
Beginnen Sie in 5 Minuten ohne Codierung · Erfahrung mit dem Crawlen von über 5.000 Websites




