1. 程式人生 > 程式設計 >詳解selenium + chromedriver 被反爬的解決方法

詳解selenium + chromedriver 被反爬的解決方法

問題背景:這個問題是在爬取某夕夕商城遇到的問題,原本的方案是用selenium + chromedriver + mitmproxy開心的刷,但是幾天之後,發現刷不出來了,會直接跳轉到登陸介面(很明顯,是遭遇反爬了)

講實話,這還是第一次用硒被反爬的,於是進行大規模的測試對比。

同臺機器,用鉻瀏覽器正常訪問是不用跳轉到登陸介面的,所以不是IP的問題。再用提琴手抓包對比了一下兩個請求頭,請求頭都是一樣的,所以忽略標頭的反爬。

最後通過分析,可能是硒被檢測出來了。於是就去查資料。大概的查到是和webdriver的有關係的。因為這個在服務端是可以檢測到的。於是通過fiddler抓包,全域性搜尋了一下webdriver,發現在js中果然是有判斷的。導致selenium爬取的時候,被轉到登陸介面。

解決方法:mitmproxy

因為mitmproxy可以攔截請求,所以在響應中,將包含的webdriver的JS中的關鍵字替換成其他的字元就可以了。

  if "/_next/static/js/common_pdd" in flow.request.url:
    flow.response.text = flow.response.text.replace("webdriver","userAgent")

我是這樣替換的。這樣js解析的引數就變了,問題花刃而解。可以正常爬取資料了。

另外國外網上也有很多方法,比如修改webdriver裡的一些特定引數名稱,我嘗試了一下,沒有生效。

到此這篇關於詳解selenium + chromedriver 被反爬的解決方法的文章就介紹到這了,更多相關selenium chromedriver反爬內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!