文章首發於慕課網手記,已同步到個人博客:https://www.donlex.cn
上次的文章《在爬100萬數據的時候,我發現了爬蟲的進階之路》 ,有“慫恿”大傢伙去突破淘寶的登錄反爬,不知道有沒有試了的。反正我是試了,也找到了三種方法。在這裏分享一下
- 賬號密碼登錄(有滑塊)
- 微博第三方賬號登錄(無滑塊)
- 掃碼登錄
上面都是使用 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!