網(wǎng)頁(yè)爬蟲 - 用Python3的requests庫(kù)模擬登陸B(tài)ilibili總是提示驗(yàn)證碼錯(cuò)誤怎么辦?
問(wèn)題描述
我懷疑是驗(yàn)證碼和對(duì)應(yīng)的cookies不同步,但我也檢查不出來(lái)哪里錯(cuò)了代碼如下,望哪位大神幫我看看
#!/usr/bin/python# -*- coding: utf-8 -*-import requestsimport chardetimport osfrom PIL import Imagefrom io import BytesIO def login(): #發(fā)送登錄請(qǐng)求的目標(biāo)地址 url = ’https://passport.bilibili.com/login/dologin’ #發(fā)送登錄請(qǐng)求所需參數(shù) act = ’login’ gourl = ’https://passport.bilibili.com/login/dologin’ keeptime = ’2592000’ userid = ’*****’ pwd = ’*****’ #獲取驗(yàn)證碼 r = requests.get(’https://passport.bilibili.com/captcha’) i = Image.open(BytesIO(r.content)) i.show() vdcode = input(’請(qǐng)手動(dòng)輸入驗(yàn)證碼:n’) #獲取與驗(yà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ā)送請(qǐng)求 r = requests.post(url,data=data,headers=headers,cookies=cookies) #通過(guò)返回的html代碼判斷是否登陸成功 content = r.content.decode() print(content)if __name__ == ’__main__’: login()
問(wèn)題解答
回答1:參考
相關(guān)文章:
1. mysql - 這條聯(lián)合sql語(yǔ)句哪里錯(cuò)了2. webpack - vuejs+java前后臺(tái)分離實(shí)現(xiàn)及部署問(wèn)題3. docker鏡像push報(bào)錯(cuò)4. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.5. python - 有什么好的可以收集貨幣基金的資源?6. docker start -a dockername 老是卡住,什么情況?7. docker容器呢SSH為什么連不通呢?8. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問(wèn)題9. css3 - jquery div 翻轉(zhuǎn)?10. docker網(wǎng)絡(luò)端口映射,沒(méi)有方便點(diǎn)的操作方法么?
