繁体   English   中英

检测到具有chrome驱动程序的Python Selenium Web驱动程序

[英]Python Selenium web driver with chrome driver gets detected

我假设Selenium打开的Chrome浏览会话与Google Chrome本地安装相同。 但是当我尝试在这个网站上搜索时,即使只是用selenium打开它并手动控制搜索过程,我会收到一条错误消息,当我使用我自己的个人资料或在隐身窗口中使用常规chrome时,搜索结果会返回正常。 每当我搜索这个问题时,我会发现说明鼠标移动或点击模式的结果会将其丢弃。 但事实并非如此,因为我在打开浏览器后尝试手动控制。 html请求中的某些内容将其丢弃。 无论如何要克服这个问题吗? 有问题的网站是: https//www.avnet.com/wps/portal/us

自动会话中的错误消息。 在此输入图像描述

根据有问题的网站https://www.avnet.com/wps/portal/us,我不确定你所面临的确切问题,或许你的代码块会给我们带来更多的错误。 但是,我能够访问提到的url就好了:

代码块:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('https://www.avnet.com/wps/portal/us')
print("Page Title is : %s" %driver.title)

控制台输出:

Page Title is : Avnet: Quality Electronic Components & Services

快照:

安富利:优质电子元件和服务


更新

我重新审视了你所面临的问题。 我已经阅读了整个HTML DOM,并且没有发现Bot Detection机制的痕迹。 如果有任何Bot检测机制实现,该网站甚至不允许您遍历/刮取DOM树甚至甚至找到搜索框

进一步调试问题以下是我的观察:

  • 通过自动脚本,您可以继续,直到成功将搜索文本发送到搜索框

搜索框

  • 手动搜索有效产品时,自动建议会通过<span>标记显示为下面的html,您可以点击任何自动建议浏览特定产品。

  • 自动建议:

跨度是零部件

  • SPAN标记HTML:

 <span id="auto-suggest-parts-dspl"> <p class="heading">Recommended Parts</p> <dl class="suggestion"> <div id="list_1" onmouseover="hoverColor(this)" onmouseout="hoverColorOut(this)" class=""> <div class="autosuggestBox"> <a href="/shop/us/products/aimtec/am8tw-4805dz-3074457345627076774/?categoryId=&amp;fromPage=autoSuggest" rel="nofollow" id="autosuggest_1" class="autosuggest_link" onkeydown="scrollDown(event,this)">AM8TW-4805DZ</a> <p class="desc1">Aimtec</p> <p class="desc2">Module DC-DC 2-OUT 5V/-5V 0.8A/-0.8A 8W 9-Pin DIP Tube</p> </div> </div> 

  • 当我们使用WebDriver时,这个<span>基本上没有被触发/生成。

spanTagNotTraggered

  • 如果您强制搜索结果进入错误页面,则缺少自动建议

结论

主要问题似乎是表单控件类或与onkeydown事件关联的函数scrollDown(event,this)

#TooLongForComment

重现此问题

from random import randint
from time import sleep
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = webdriver.ChromeOptions()
options.add_argument('--disable-infobars')
options.add_argument('--disable-extensions')
options.add_argument('--profile-directory=Default')
options.add_argument('--incognito')
options.add_argument('--disable-plugins-discovery')
options.add_argument('--start-maximized')
browser = webdriver.Chrome('./chromedriver', chrome_options=options)
browser.get('https://www.avnet.com/wps/portal/us')

try:
    search_box_id = 'searchInput'
    myElem = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, search_box_id)))
    elem = browser.find_element_by_id(search_box_id)
    sleep(randint(1, 5))
    s = 'CA51-SM'
    for c in s:  # randomize key pressing
        elem.send_keys(c)
        sleep(randint(1, 3))
    elem.send_keys(Keys.RETURN)
except TimeoutException as e:
    pass
finally:
    browser.close()

转载

我用hexedit编辑了从$ cdc_到fff的chromedriver键。

hexedit的

  • 通过阅读每个JavaScript块来研究它是如何完成的,请查看此答案以获取检测示例

  • 尝试通过更改user-agent和referrer options.add_extension('/path-to-modify-header-extension')来添加扩展以修改Googlebot下的标题和掩码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM