頭條(https://www.toutiao.com/c/user/50083450127/#mid=50083839790)引入了反爬蟲機制,下面通過代理,注入JS代碼,修改相關環境變量,越過爬蟲檢測。
一、下載mitmproxy
下載mitmproxy windows版: https://www.mitmproxy.org/downloads/#5.1.1/
二、安裝mitmproxy
下載後雙擊直接安裝即可,安裝完後在安裝目錄的bin目錄下有兩個exe文件,mitmdump.exe和mitmweb.exe,這裏我們主要使用mitmdump.exe
三、編寫注入JS的Python腳本
我們需要寫一個隱藏webdriver字段的腳本,腳本文件用python編寫,腳本如下:
indject_js_proxy.py
import mitmproxy.http
from mitmproxy import ctx, http
injected_javascript = '''
// Pass the Webdriver test
Object.defineProperty(navigator, 'webdriver', {
value: undefined
});
'''
def response(flow):
# Only process 200 responses of HTML content.
if not flow.response.status_code == 200:
return
# Inject a script tag containing the JavaScript.
html = flow.response.text
html = html.replace('<head>', '<head><script>%s</script>' % injected_javascript)
flow.response.text = str(html)
ctx.log.info('>>>> js代碼插入成功 <<<<')
把腳本文件放在mitmproxy的bin目錄下:
四、啓動mitmproxy代理
在當前目錄起一個cmd,啓動mitmdump並注入腳本:
啓動成功mitmproxy會監聽8080端口。
五、配置HTTPS
由於頭條使用了HTTPS協議,所以需要安裝ca證書。
提示:要先設置代理才能下載證書。
1.設置chrome代理
1).點擊chrome的設置,找到如下選項:
2).點擊局域網設置,如下圖所示:
3).勾選爲LAN使用代理服務器,並點擊高級,如下圖所示:
4).設置http和https的代理地址爲127.0.0.1,端口爲8080,如下圖所示:
2.安裝證書
1).打開chrome瀏覽器,訪問如下網址http://mitm.it/,應看到如下界面:
下載windows版。下載完後雙擊一直點擊下一步即可完成安裝。
提示:安裝完證書後可以取消Chrome代理設置,這樣可以避免正常使用瀏覽器訪問網頁走代理,不會影響後面的程序執行。
六:在webDriver中加入代理
ChromeOptions options = new ChromeOptions();
options.addArguments("--proxy-server=127.0.0.1:8080");
ChromeDriver driver = new ChromeDriver(options);
提示:此處不能開啓無頭模式。
啓動webDriver,即可看到捕獲的網絡數據流了,如下圖所示:
參考資料:
https://blog.csdn.net/javaer_lee/article/details/85160659
https://www.jianshu.com/p/8a9c4b298a1f