Este es un problema reciente, comenzó creo que hace tres o cuatro días. No está aislado de mi propio sistema, ya que también estaba ejecutando el software en un servidor remoto (Windows 10, Windows Server). Tampoco está aislado de ninguna URL específica, ya que ahora no puedo pasar ninguna URL que tenga esta verificación.
Título: "Un momento..." "Comprobando su navegador antes de acceder a la URL". "Este proceso es automático. Su navegador redirigirá al contenido solicitado en breve". "Espere hasta 5 segundos..." "Protección DDos de Cloudflare" "Ray Id: xxxxxxxxxxxxxxxxxx"
from selenium import webdriver driver = webdriver.Chrome() driver.get('wwww.etherdelta.com')¿Alguien sabe cómo puedo resolver esto; ¿O es hora de dejar al pobre Timmy (el programa)?
Es porque el navegador usa cloudfare para protegerse de DDOS (Distributed Denial Of Service) Attacks . Hay 2 formas de resolver este problema:
Use time.sleep : si la página web tarda 5 segundos en cargarse, simplemente use time.sleep(5) .
Use WebDriverWait ; por ejemplo, un button con id "sample-btn" aparece solo después de esta pantalla. Entonces lo que puedes hacer es:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By btn = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'sample-btn'))) #Web driver waits for 10 seconds until element is visibleSe recomienda el 2do. Pero si el segundo no funciona para ti, entonces ve con el primero. ¡Espero que esto ayude!
Tuve el mismo problema con firefox. Pude resolverlo cambiando a Chrome.
Código de ejemplo:
from selenium import webdriver url = "<WEBSITE>" options = webdriver.ChromeOptions() options.add_argument("--disable-blink-features=AutomationControlled") driver = webdriver.Chrome(options=options) driver.get(url) "--disable-blink-features=AutomationControlled" oculta el indicador "navigator.webdriver".
Consulte Selenium webdriver: modificación del indicador navigator.webdriver para evitar la detección de selenium
Editar
También debe cambiar algunas variables predeterminadas de chromedriver.
Ejemplo con perl:
perl -pi -e 's/cdc_/dog_/g' /path/to/chromedriver Para más detalles mira la publicación original.
Consulte ¿Puede un sitio web detectar cuándo está utilizando selenio con chromedriver?
Editar 2
Cloudflare sigue ajustando su algoritmo para que pueda intentar usar un controlador de cromo no detectado en lugar del cambio manual del controlador de cromo.
Undetected-chromedriver es un parche optimizado de Selenium Chromedriver que no debería activar los servicios anti-bot. Descarga automáticamente el controlador binario y lo parchea.
Si esto funcionará o no, depende del sitio web y del estado actual del desarrollo. Cloudflare parece rastrear el desarrollo de chromedriver no detectado .
import undetected_chromedriver as uc url = "<WEBSITE>" driver= uc.Chrome() driver.get(url)Intenta usar tu carpeta de datos de Chrome
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.utils import ChromeType # Configure browser options = webdriver.ChromeOptions() options.add_argument(f"--user-data-dir=C:\\Users\\daria\\AppData\\Local\\Google\\Chrome\\User Data") options.add_argument("--disable-blink-features=AutomationControlled") chromedriver = ChromeDriverManager(chrome_type=ChromeType.GOOGLE, log_level='0', print_first_line=False).install() driver = webdriver.Chrome(chromedriver, options=options, service_log_path=None) input ("End?")