Python爬蟲實現(xiàn)驗證碼登錄代碼實例
很多網(wǎng)站為了避免被惡意訪問,需要設(shè)置驗證碼登錄,避免非人類的訪問,Python爬蟲實現(xiàn)驗證碼登錄的原理則是先到登錄頁面將生成的驗證碼保存下來,然后人為輸入后,包裝后再POST給服務(wù)器,實現(xiàn)驗證,這里還涉及到了Cookie,其實Cookie保存在本地主機上,避免用戶重復輸入用戶名和密碼,在連接服務(wù)器的時候?qū)⒃L問連接和Cookie組裝起來POST給服務(wù)器。
這里涉及到了兩次向服務(wù)器POST,一次是Cookie,這里還自行設(shè)計想要Cookie的內(nèi)容,由于是要登錄,Cookie中存放的則是用戶名和密碼。第二次POST則是向服務(wù)器提交驗證。
這里用到Python3,主要用到的包是re urllib.request http.cookiejar
上代碼,借鑒了別人的代碼~~~
import re import urllib.request import http.cookiejar #from http.comkie import CookieJar 上面那句和這句等同 loginurl='https://www.douban.com/accounts/login' cookie = http.cookiejar.CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor)#在已存的Cookie下建立連接 params={} params['form_email']='用戶名' params['form_password']='密碼'#這里寫上已有的用戶名和密碼 params['source']='http://www.douban.com/accounts/login' #從首頁提交登陸 response = opener.open(loginurl,urllib.parse.urlencode(params).encode('utf-8'))#urllib.parse.urlencode(params).encode('utf-8')這個是向服務(wù) #器POST的內(nèi)容,可以打印一下response.geturl()請求的連接看一下 #print(response.geturl()[0:33]) #驗證成功跳轉(zhuǎn)至登陸頁 if response.geturl()[0:33]=='https://accounts.douban.com/login': html = response.read().decode('utf-8') #print(html),可以先打印一下文件內(nèi)容,為了看到網(wǎng)頁元素更方便的寫正則,可以復制下來,在需要獲取的地方用(.+?)表示,然后用group()元組來取得, #驗證圖片地址 imgurl=re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>',html) if imgurl: url=imgurl.group(1) #print(url) #將驗證碼以v.jpg保存在本地,在輸入驗證碼的時候可以手工輸入 res=urllib.request.urlretrieve(url,'v.jpg') captcha = re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>',html) #print(captcha.group(1)) if captcha: vcode=input('請輸入圖片上的驗證碼:') params["captcha-solution"] = vcode params["captcha-id"] = captcha.group(1)#這個是動態(tài)生成的,需要從網(wǎng)頁中獲得 params["user_login"] = "登錄" #提交驗證碼驗證 response = opener.open(loginurl,urllib.parse.urlencode(params).encode('utf-8')) if response.geturl()=="https://www.douban.com/": print("login sucess")
以上所述是小編給大家介紹的Python爬蟲實現(xiàn)驗證碼登錄詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- 用Python爬蟲破解滑動驗證碼的案例解析
- python網(wǎng)絡(luò)爬蟲實現(xiàn)發(fā)送短信驗證碼的方法
- Python爬蟲爬取ts碎片視頻+驗證碼登錄功能
- python爬蟲如何解決圖片驗證碼
- Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點選驗證碼功能
- Python3爬蟲里關(guān)于識別微博宮格驗證碼的知識點詳解
- Python3爬蟲關(guān)于識別點觸點選驗證碼的實例講解
- Python3爬蟲關(guān)于識別檢驗滑動驗證碼的實例
- Python3爬蟲中識別圖形驗證碼的實例講解
- Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)之極驗滑動驗證碼的識別
- python爬蟲解決驗證碼的思路及示例
- python爬蟲之驗證碼篇3-滑動驗證碼識別技術(shù)
- python爬蟲之自動登錄與驗證碼識別
- Python爬蟲爬驗證碼實現(xiàn)功能詳解
- Python爬蟲模擬登錄帶驗證碼網(wǎng)站
- 爬蟲Python驗證碼識別入門
相關(guān)文章
Python HTMLTestRunner可視化報告實現(xiàn)過程解析
這篇文章主要介紹了Python HTMLTestRunner可視化報告實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04用Python復現(xiàn)二戰(zhàn)德軍enigma密碼機
大家好,本篇文章主要講的是用Python復現(xiàn)二戰(zhàn)德軍enigma密碼機,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01基于Python的自媒體小助手---登錄頁面的實現(xiàn)代碼
這篇文章主要介紹了基于Python的自媒體小助手---登錄頁面的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06python爬取拉勾網(wǎng)職位數(shù)據(jù)的方法
這篇文章主要介紹了python爬取拉勾網(wǎng)職位數(shù)據(jù)的實現(xiàn)方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-01-01python爬取股票最新數(shù)據(jù)并用excel繪制樹狀圖的示例
這篇文章主要介紹了python爬取股票最新數(shù)據(jù)并用excel繪制樹狀圖的示例,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下2021-03-03在pycharm中關(guān)掉ipython console/PyDev操作
這篇文章主要介紹了在pycharm中關(guān)掉ipython console/PyDev操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Django模板標簽中url使用詳解(url跳轉(zhuǎn)到指定頁面)
這篇文章主要介紹了Django模板標簽中url使用詳解(url跳轉(zhuǎn)到指定頁面),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03