必知必會:selenuim/pyppeteer模擬登陸防檢測,能夠屏蔽一小部分簡單的檢測

前言

對於使用模擬登陸等操作來爬蟲的手段,已經很容易被檢測了,網上很多教程是說在網站所有js代碼執行之前來執行下面幾個js代碼來到達效果:

js1 = '''() =>{Object.defineProperties(navigator,{ webdriver:{ get: () => false}})}'''
js2 = '''() => {alert(window.navigator.webdriver)}'''
js3 = '''() => {window.navigator.chrome = {runtime: {}, }; }'''
js4 = '''() =>{Object.defineProperty(navigator, 'languages', {get: () => ['en-US', 'en']});}'''
js5 = '''() =>{Object.defineProperty(navigator, 'plugins', {get: () => [1, 2, 3, 4, 5,6],});}'''

確實修改成功了。這種寫法就萬無一失了嗎?並不是這樣的,如果此時你在模擬瀏覽器中通過點擊鏈接、輸入網址進入另一個頁面,或者開啓新的窗口,你會發現,window.navigator.webdriver這個對象又變成true了,所以這樣並非根治。

最近看到兩篇文章,說可以解除使用selenuim/pyppeteer模擬登錄的檢測,設置之後,網站壓根檢測不到是使用自動化工具操作的把柄,下來買介紹一下,這兩個設置神方法。
一、selenuim設置仿被檢測

原理大概如下:在啓動Chromedriver之前,爲Chrome開啓實驗性功能參數 excludeSwitches,它的值爲 [‘enable-automation’]

from selenium.webdriver import Chrome, ChromeOptions

option = ChromeOptions()
option.add_experimental_option("excludeSwitches", ["enable-automation"])
driver = Chrome(options=option)

然後設置這個參數之後,Chrome瀏覽器會提示你,叫你“停用開發者模式運行的擴展程序”,這時候你不要點擊“停用”,你只需要忽略它或者點擊那個叉叉,把它關掉即可。

上面這個方法是能夠有效根治這個被檢測的問題。

二、pyppeteer爬蟲界新秀,設置仿被檢測

由於Selenium啓動的Chrome中,有幾十個特徵可以被識別,所以在爬蟲界已經沒有以前那麼受歡迎了。模擬瀏覽器的新秀Puppeteer異軍突起,逐漸受到了爬蟲界的關注。Puppeteer需要使用JavaScript來控制,如果你是用Python,那麼就需要使用Pyppeteer.

如果你使用模擬瀏覽器爬淘寶,你會發現,無論怎麼修改參數,Selenium總是可以立刻被識別。但是如果你使用了本文的方法,用Pyppeteer抓取淘寶,你就會發現另外一個廣闊的天地。

寫這篇文章的時候(2019-08-15),Pyppeteer的最新版本爲0.0.25

設置教程:

此時,你可以在PyCharm中,按住Command鍵(Windows、Linux用戶按住Ctrl鍵),鼠標左鍵點擊 frompyppeteerimportlaunch中的 launch,自動跳轉到Pyppeteer源代碼中的 launcher.py文件

把代碼往上翻,在第61行左右,找到如下的代碼:

AUTOMATION_ARGS = [
    '--enable-automation',
    '--password-store=basic',
    '--use-mock-keychain',
]

將其改成:

AUTOMATION_ARGS = [
    # '--enable-automation',  # 註釋掉可以設置window.nagivator.webdriver爲undefined
    '--password-store=basic',
    '--use-mock-keychain',
]

當你修改的時候,pycharm工具會提示你是否修改源碼,選擇OK即可,如果你想以後改回來也可以改回來,不過看官方的開源介紹,下一個版本0.0.26是支持通過傳遞參數來設置這些值的,所以讓我們一起期待下一個版本唄!

先別走唄,這裏有可能有你需要的同類型的文章:

python最好用的第三方庫資源下載網址
詳細講解aiohttp異步請求及使用,高效率
CSS字體反爬實戰,10分鐘就能學會
爬蟲:js逆向目前遇到的知識點集合

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