0. Qu'est-ce que 0.undetected_chromdriver?
Le scraping web et l'automatisation web jouent un rôle important dans de nombreuses tâches d'analyse de données et de développement web aujourd'hui. Parmi les outils utilisés pour ces tâches, Selenium et Chromedriver sont les plus largement utilisés.
Selenium a été initialement créé comme un outil d'automatisation des tests d'applications web, mais en raison de ses fonctionnalités et de sa polyvalence, il est largement utilisé comme outil de scraping web par les analystes de données et les développeurs web.
Chromedriver est un WebDriver utilisé dans le framework Selenium pour contrôler le navigateur Google Chrome. Cela permet aux développeurs d'exécuter des scripts de test automatisés pour naviguer sur des sites web ou effectuer des actions telles que des clics et des défilements de manière automatique.
Cependant, lorsque vous essayez de scraper un site web en utilisant ces outils de base, la plupart des sites web modernes ont des mécanismes de sécurité qui détectent et bloquent cet accès automatisé. Par exemple, lorsque vous essayez de scraper un site avec une sécurité renforcée en utilisant Selenium et chromedriver, le site détecte ces actions comme étant des bots pour protéger leurs données et les bloque. C'est dans de telles situations que la nécessité de 0.undetected_chromdriver se manifeste.
0.undetected_chromdriver est une bibliothèque Python qui, contrairement au Chromedriver classique, permet d'éviter la détection et le blocage de l'automatisation des sites web. En d'autres termes, il permet d'exécuter des scripts de scraping sans être détecté comme un bot automatisé, donnant l'apparence d'une personne réelle.
Cela permet de collecter les données fournies par un site web de manière plus fiable et efficace. 0.undetected_chromdriver permet aux développeurs familiers avec Selenium et Chromedriver de contourner ces mécanismes de détection sans avoir de connaissances supplémentaires sur la sécurité du scraping web.
Ainsi, 0.undetected_chromdriver est un outil qui facilite la réalisation des tâches de scraping web de manière plus simple et efficace.
1. Installation et utilisation
pip install undetected-chromedriver
Procédez à l'installation de cette manière.
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()
- Diverses options
options = uc.ChromeOptions permettent de créer des options à insérer.
# 팝업 차단을 활성화합니다.
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];},});")
L'utilisation de
fake_useragentpour utiliser une chaîne d'agent utilisateur différente à chaque exécution est une bonne pratique. Cela permet de modifier les informations généralement utilisées pour identifier le navigateur.L'utilisation de
selenium_stealthpermet de masquer certaines caractéristiques utilisées par certains sites pour détecter les scrapers web.L'utilisation de
driver.execute_script()pour exécuter du code JavaScript et redéfinir la propriéténavigator.pluginspermet de bloquer une autre méthode utilisée par les sites web pour détecter les scrapers.L'utilisation de
driver.delete_all_cookies()pour supprimer tous les cookies peut aider à empêcher les sites web de suivre les visites précédentes.
En utilisant ces diverses options, vous pouvez faire fonctionner 0.undetected_chromdriver.
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("치단당함")
Insérez le code de la même manière que vous l'auriez fait avec chromedriver et selenium.
2. Principales différences entre ChromeDriver classique et 0.undetected_chromdriver
1) Fonctionnalités renforcées : 0.undetected_chromdriver possède des fonctionnalités renforcées pour contourner les vérifications anti-bot par rapport au ChromeDriver classique. Il a été conçu pour éviter les mécanismes de défense utilisés par certains sites web pour bloquer les actions automatisées telles que le scraping web.
2) Mode furtif : 0.undetected_chromdriver a introduit quelques techniques supplémentaires pour mieux masquer les actions d'automatisation utilisant Selenium. Cela inclut la suppression du drapeau navigator.webdriver, la configuration des vendeurs WebGL, l'ordre des plugins de langue, la résolution, etc. En d'autres termes, on peut dire qu'il s'agit d'un chromedriver avec toutes les options activées.
3) Réactivité : Certains utilisateurs trouvent que 0.undetected_chromdriver est plus rapide et réactif que le ChromeDriver classique. Cela dépend des sites web et tous les sites ne fonctionnent pas de la même manière.
3. Conclusion
Étant donné que les sites web continuent de développer et d'appliquer de nouvelles mesures de défense, il est nécessaire de poursuivre la recherche et d'explorer de nouvelles approches pour contourner les dernières technologies de défense.
Lisez également :
Collecte de données, automatisez maintenant
Commencez en 5 minutes sans coder · Expérience du scraping de plus de 5 000 sites web




