检测到带有Chrome驱动程序的Python Selenium Web驱动程序

时间:2018-03-31 00:43:15

标签: python selenium

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

自动会话中的错误消息。  enter image description here

2 个答案:

答案 0 :(得分:3)

根据有问题的网站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

快照:

Avnet: Quality Electronic Components & Services

更新

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

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

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

searchbox

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

  • 自动建议:

span-yes-parts

  • SPAN代码HTML:

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

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

spanTagNotTraggered

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

结论

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

答案 1 :(得分:3)

#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()

reproduced

我已经使用hexedit来修改{cdc_到fff的chromedriver密钥..

hexedit

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

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