通過代理抓取頭條用戶文章列表(selenium(Chrome瀏覽器) Java版)

頭條(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

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章