python實(shí)現(xiàn)網(wǎng)站的模擬登錄
本文主要用python實(shí)現(xiàn)了對(duì)網(wǎng)站的模擬登錄。通過自己構(gòu)造post數(shù)據(jù)來用Python實(shí)現(xiàn)登錄過程。
當(dāng)你要模擬登錄一個(gè)網(wǎng)站時(shí),首先要搞清楚網(wǎng)站的登錄處理細(xì)節(jié)(發(fā)了什么樣的數(shù)據(jù),給誰(shuí)發(fā)等...)。我是通過HTTPfox來抓取http數(shù)據(jù)包來分析該網(wǎng)站的登錄流程。同時(shí),我們還要分析抓到的post包的數(shù)據(jù)結(jié)構(gòu)和header,要根據(jù)提交的數(shù)據(jù)結(jié)構(gòu)和heander來構(gòu)造自己的post數(shù)據(jù)和header。
分析結(jié)束后,我們要構(gòu)造自己的HTTP數(shù)據(jù)包,并發(fā)送給指定url。我們通過urllib2等幾個(gè)模塊提供的API來實(shí)現(xiàn)request請(qǐng)求的發(fā)送和相應(yīng)的接收。
大部分網(wǎng)站登錄時(shí)需要攜帶cookie,所以我們還必須設(shè)置cookie處理器來保證cookie。
具體代碼和講解如下
#!/usr/bin/python import HTMLParser import urlparse import urllib import urllib2 import cookielib import string import re #登錄的主頁(yè)面 hosturl = '******' //自己填寫 #post數(shù)據(jù)接收和處理的頁(yè)面(我們要向這個(gè)頁(yè)面發(fā)送我們構(gòu)造的Post數(shù)據(jù)) posturl = '******' //從數(shù)據(jù)包中分析出,處理post請(qǐng)求的url #設(shè)置一個(gè)cookie處理器,它負(fù)責(zé)從服務(wù)器下載cookie到本地,并且在發(fā)送請(qǐng)求時(shí)帶上本地的cookie cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) urllib2.install_opener(opener) #打開登錄主頁(yè)面(他的目的是從頁(yè)面下載cookie,這樣我們?cè)谠偎蚿ost數(shù)據(jù)時(shí)就有cookie了,否則發(fā)送不成功) h = urllib2.urlopen(hosturl) #構(gòu)造header,一般header至少要包含一下兩項(xiàng)。這兩項(xiàng)是從抓到的包里分析得出的。 headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1', 'Referer' : '******'} #構(gòu)造Post數(shù)據(jù),他也是從抓大的包里分析得出的。 postData = {'op' : 'dmlogin', 'f' : 'st', 'user' : '******', //你的用戶名 'pass' : '******', //你的密碼,密碼可能是明文傳輸也可能是密文,如果是密文需要調(diào)用相應(yīng)的加密算法加密 'rmbr' : 'true', //特有數(shù)據(jù),不同網(wǎng)站可能不同 'tmp' : '0.7306424454308195' //特有數(shù)據(jù),不同網(wǎng)站可能不同 } #需要給Post數(shù)據(jù)編碼 postData = urllib.urlencode(postData) #通過urllib2提供的request方法來向指定Url發(fā)送我們構(gòu)造的數(shù)據(jù),并完成登錄過程 request = urllib2.Request(posturl, postData, headers) print request response = urllib2.urlopen(request) text = response.read() print text
領(lǐng)取干貨:零基礎(chǔ)入門學(xué)習(xí)python視頻教程
以上就是本文的全部?jī)?nèi)容,希望大家相互交流相互學(xué)習(xí),共同進(jìn)步!
- 用python登錄帶弱圖片驗(yàn)證碼的網(wǎng)站
- python中requests模擬登錄的三種方式(攜帶cookie/session進(jìn)行請(qǐng)求網(wǎng)站)
- python實(shí)現(xiàn)網(wǎng)站微信登錄的示例代碼
- python實(shí)現(xiàn)網(wǎng)站用戶名密碼自動(dòng)登錄功能
- 對(duì)python抓取需要登錄網(wǎng)站數(shù)據(jù)的方法詳解
- Python實(shí)現(xiàn)爬取需要登錄的網(wǎng)站完整示例
- Python 登錄網(wǎng)站詳解及實(shí)例
- Python3使用requests登錄人人影視網(wǎng)站的方法
- Python爬蟲模擬登錄帶驗(yàn)證碼網(wǎng)站
- 使用Python中的cookielib模擬登錄網(wǎng)站
- python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別
相關(guān)文章
代碼解析python標(biāo)準(zhǔn)庫(kù)logging模塊
這篇文章主要為大家介紹了代碼解析python標(biāo)準(zhǔn)庫(kù)logging模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python 3.8中實(shí)現(xiàn)functools.cached_property功能
這篇文章主要介紹了Python 3.8中實(shí)現(xiàn)functools.cached_property功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05對(duì)python判斷是否回文數(shù)的實(shí)例詳解
今天小編就為大家分享一篇對(duì)python判斷是否回文數(shù)的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02pandas中的數(shù)據(jù)去重處理的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas中的數(shù)據(jù)去重處理的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Python實(shí)現(xiàn)一個(gè)轉(zhuǎn)存純真IP數(shù)據(jù)庫(kù)的腳本分享
工作中我們常需要使用純真IP數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)做分析,下面這篇文章主要給大家介紹了利用Python如何實(shí)現(xiàn)一個(gè)轉(zhuǎn)存純真IP數(shù)據(jù)庫(kù)的相關(guān)資料,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05Django?Rest?Framework實(shí)現(xiàn)身份認(rèn)證源碼詳解
這篇文章主要為大家介紹了Django?Rest?Framework實(shí)現(xiàn)身份認(rèn)證源碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python爬蟲:url中帶字典列表參數(shù)的編碼轉(zhuǎn)換方法
今天小編就為大家分享一篇Python爬蟲:url中帶字典列表參數(shù)的編碼轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08關(guān)于Python的文本文件轉(zhuǎn)換編碼問題
這篇文章主要介紹了關(guān)于Python的文本文件轉(zhuǎn)換編碼問題,編程過程中,經(jīng)成會(huì)遇到字符編碼的問題,需要的朋友可以參考下2023-04-04