检测到硒铬

2024-09-29 17:20:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为https://www.phonehouse.nl/verlengchecker制作一个机器人。但当我使用Chrome时,它会被检测到。当我使用Firefox时,它只打开页面,不做任何事情。我在ArchLinux和Windows上试过,结果是一样的

from selenium import webdriver
from time import sleep

capabilities = {
  'browserName': 'chrome',
  'chromeOptions':  {
    'useAutomationExtension': False,
    'forceDevToolsScreenshot': True,
    'args': ['--start-maximized', '--disable-infobars']
  }
}    
driver = webdriver.Chrome(capabilities=capabilities)
def control(provider, number, day, month, year, post, email, street):
    
    driver.get("https://www.phonehouse.nl/verlengchecker")
    sleep(1)

    driver.find_element_by_xpath("//span[@id='businessSelectBoxIt']").send_keys(provider) #provider
    driver.find_element_by_xpath("//input[@name='msisdn']").send_keys(number) #number

Tags: fromhttpsimportnumberwwwdrivernlsleep
2条回答

你的分析方向正确Selenium驱动的ChromeDriver启动的浏览上下文很容易被检测到

深潜

如果您访问DOM Tree,您将发现recaptcha的存在

invisible_recaptcha


结论

Recaptcha可以轻松检测WebDriver启动的浏览上下文

You can find a detailed discussion in How does recaptcha 3 know I'm using selenium/chromedriver?

但是,有一些通用的方法可以避免检测,您可以在How to bypass Google captcha with Selenium and Python?中找到详细的讨论


奥特罗

有关详细讨论,请参见:

“提供者”空间不是输入,所以不能使用send_keys

但您可以将其用作数字:

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
def control(number):
    driver.get("https://www.phonehouse.nl/verlengchecker")
    sleep(1)
    driver.find_element_by_xpath('//*[@id="msisdn"]').send_keys(number)
control("000")

相关问题 更多 >

    热门问题