selenium爬蟲:一行代碼去掉所有webdriver痕跡


問題
首先回顧前兩篇selenium系列selenium爬蟲使用了代理為什么還是被服務器判定為機器人?以及selenium爬蟲使用代理情況下不設置這幾個參數,代理就白加了,正確的關閉webrtc以及設置成代理的時區和地理位置,可以很好的幫我們的瀏覽器偽裝成正兒八經的正常瀏覽器,猶如濾鏡可以把王大媽變身成風靡萬千宅男的喬碧蘿。但是,這還不夠,風控系統有各種方式可以將你揪出來。所以應粉絲的要求,今天動筆了:

怎么如德芙般絲滑地去掉selenium煩人的webdriver痕跡?

原因
原因很簡單,我們使用selenium+chromedriver啟動chrome的時候,會在chrome的navigator以及document對象里注入一些屬性,如果web服務器返回的js代碼里有對這些屬性的檢測,那我們就會被識別為機器人在訪問。

解決方案

解決方案邏輯上很簡單,就是selenium額外加了什么我們去除掉什么。

我們先上沒有去掉webdriver的selenium代碼

from selenium import webdriver
 
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option(
    "excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
chrome_options.add_argument(
    'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36')
driver = webdriver.Chrome(
    "./chromedriver", chrome_options=chrome_options)
driver.get("https://bot.sannysoft.com/")
 

測試結果截圖:

 

 

我們可以看到,webdriver被檢測出來了,也就是說服務器知道你使用了selenium訪問其網站。

我們上去掉webdriver的代碼的selenium代碼

from selenium import webdriver
 
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option(
    "excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
chrome_options.add_argument(
    'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36')
chrome_options.add_argument("disable-blink-features=AutomationControlled")#就是這一行告訴chrome去掉了webdriver痕跡
driver = webdriver.Chrome(
    "./chromedriver", chrome_options=chrome_options)
driver.get("https://bot.sannysoft.com/")
 

測試結果截圖:

 

 

我們可以看到通過在chrome啟動的時候加一個disable-blink-features=AutomationControlled的flag就可以實現降維打擊,移除掉webdriver的痕跡,媽媽再也不用擔心你加班了……

如果你們認為做到以上:關閉webrtc、設置瀏覽器時區和地理位置、去掉webdriver就高枕無憂了嗎?

No,這還不夠,服務器還能揪出你,你只能給老板發送以下短信。

 

 然后繼續加班。 想知道更多的反檢測方式,咱們下期見!

圖片源自:手游


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM