Limitations of web scraping (crawling) using Selenium and Chromedriver, features of undetected_chromedriver as a solution, detailed explanation of installation and usage, and various related options.

Les limites du web scraping avec Selenium et Chromedriver, les caractéristiques de undetected_chromedriver, les instructions d'installation et d'utilisation, ainsi qu'une explication détaillée des différentes options.

4
Limitations of web scraping (crawling) using Selenium and Chromedriver, features of undetected_chromedriver as a solution, detailed explanation of installation and usage, and various related options.

0. Qu'est-ce que 0.undetected_chromdriver?

image notion

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.

image notion

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_useragent pour 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_stealth permet 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.plugins permet 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

Commencez gratuitement →

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Continuer la lecture

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.