突破淘寶登錄滑塊驗證反爬,防止識別爲Chrome自動控制

文章首發於慕課網手記,已同步到個人博客:https://www.donlex.cn

上次的文章《在爬100萬數據的時候,我發現了爬蟲的進階之路》 ,有“慫恿”大傢伙去突破淘寶的登錄反爬,不知道有沒有試了的。反正我是試了,也找到了三種方法。在這裏分享一下

  1. 賬號密碼登錄(有滑塊)
  2. 微博第三方賬號登錄(無滑塊)
  3. 掃碼登錄

上面都是使用 Selenium 進行模擬登錄的,這樣就可以不用手動添加各種Cookie或者Session,少了很多工作。

# 淘寶賬號登錄

一般直接使用Selenium自動控制登錄,都會無法通過滑塊驗證。所以解決的策略就是讓這些網站識別不出來你是用了Selenium,因此需要將模擬瀏覽器設置爲開發者模式,這樣就可以防止被網站識別出來。

只需要在初始化時,添加下面這條語句,就可以設置爲開發者模式。

# 此步驟很重要
options.add_experimental_option('excludeSwitches'['enable-automation'])

browser = webdriver.Chrome(options=options)

只需要多加一行代碼,就能突破淘寶登錄滑塊,效果如下:
在這裏插入圖片描述

當然這只是讓Selenium通過淘寶的滑塊驗證而已,至於如何滑動還是需要自己動手擼代碼才能實現真正的自動。。。

# 微博賬號登錄

在淘寶網的登錄頁面,有第三方登錄的入口,試了一下,發現綁定微博的賬號跟淘寶更配哦。直接通過Selenium控制,輸入微博賬號和密碼,不需要滑塊驗證,不需要滑塊驗證,不需要滑塊驗證(重要的事情說**,直接就可以登錄。

在這裏插入圖片描述

# 掃碼登錄

還有一種方法:掃碼登錄,這種方式檢測出是使用自動化工具,但是掃碼登錄能減去所有的驗證環節,並且不需要寫登錄代碼,只需要在掃碼的頁面停留幾秒,等待手機淘寶掃碼驗證完成。接着就可以繼續下面的工作了,不過這有一個缺點,就是不能設置不加載圖片,如果設置了不加載圖片的話,二維碼就顯示不了,就別談登錄了,這樣一來,爬取的速度肯定會受到影響。

代碼:

from time import sleep

from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(5)
def scan_login(url):
    driver.get(url)
    # 等待掃碼登錄
    sleep(15)
    # 進入之後開始其他操作

if __name__ == '__main__':
    url = 'https://login.taobao.com/member/login.jhtml'
    scan_login(url)

效果:
在這裏插入圖片描述

# 最後

個人感覺在需要突破登錄部分的反爬措施,直接使用 Selenium 是最通用的,當然得看具體的情況。如果你正在練習登錄這方面的爬蟲,希望能夠對你幫助!如果你有好的方法,也可以後臺交流一下!

ps:文中部分代碼點擊『閱讀原文』獲取;僅供技術交流使用,請不要用作其他用途!

# 附:

點擊獲取,源碼地址

如果對你有幫助記得Star

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