簡體   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