網(wǎng)頁爬蟲 - 用Python3的requests庫模擬登陸B(tài)ilibili總是提示驗證碼錯誤怎么辦?
問題描述
我懷疑是驗證碼和對應(yīng)的cookies不同步,但我也檢查不出來哪里錯了代碼如下,望哪位大神幫我看看
#!/usr/bin/python# -*- coding: utf-8 -*-import requestsimport chardetimport osfrom PIL import Imagefrom io import BytesIO def login(): #發(fā)送登錄請求的目標(biāo)地址 url = ’https://passport.bilibili.com/login/dologin’ #發(fā)送登錄請求所需參數(shù) act = ’login’ gourl = ’https://passport.bilibili.com/login/dologin’ keeptime = ’2592000’ userid = ’*****’ pwd = ’*****’ #獲取驗證碼 r = requests.get(’https://passport.bilibili.com/captcha’) i = Image.open(BytesIO(r.content)) i.show() vdcode = input(’請手動輸入驗證碼:n’) #獲取與驗證碼同步的cookies cookies = dict(r.cookies) #封裝所需參數(shù) data = {’act’:act,’gourl’:gourl,’keeptime’:keeptime,’userid’:userid,’pwd’:pwd,’vdcode’:vdcode} #偽裝成瀏覽器 headers = {’User-Agent’:’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36’,’Referer’:’https://passport.bilibili.com/login’} #發(fā)送請求 r = requests.post(url,data=data,headers=headers,cookies=cookies) #通過返回的html代碼判斷是否登陸成功 content = r.content.decode() print(content)if __name__ == ’__main__’: login()
問題解答
回答1:參考
相關(guān)文章:
1. 如何解決docker宿主機無法訪問容器中的服務(wù)?2. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個是怎么回事????3. javascript - 請指條明路,angular的$event,在select中卻是undefined?4. 如何修改vim插件vimwiki中Vimwiki2HTML的一些細(xì)節(jié)5. javascript - JS事件委托問題6. javascript - 關(guān)于jquery的remove()方法7. JavaScript中怎么理解=、==和===8. java - Spring事務(wù)回滾問題9. javascript - vue.js如何遞歸渲染組件.10. mongodb - Mongo java驅(qū)動中,有沒有封裝好的函數(shù),可以直接取到文檔中的某個具體的值,而不是一個文檔?或者有沒有方法實現(xiàn)??
