python模擬登錄的實現

openkk 12年前發布 | 37K 次閱讀 Python開發 Python
本文主要用python實現了對網站的模擬登錄。通過自己構造post數據來用Python實現登錄過程。

當你要模擬登錄一個網站時,首先要搞清楚網站的登錄處理細節(發了什么樣的數據,給誰發等...)。我是通過HTTPfox來抓取http數據包來分析該網站的登錄流程。同時,我們還要分析抓到的post包的數據結構和header,要根據提交的數據結構和heander來構造自己的post數據和header。

分析結束后,我們要構造自己的HTTP數據包,并發送給指定url。我們通過urllib2等幾個模塊提供的API來實現request請求的發送和相應的接收。
大部分網站登錄時需要攜帶cookie,所以我們還必須設置cookie處理器來保證cookie。


具體代碼和講解如下
#!/usr/bin/python

import HTMLParser
import urlparse
import urllib
import urllib2
import cookielib
import string
import re

#登錄的主頁面
hosturl = '******' //自己填寫
#post數據接收和處理的頁面(我們要向這個頁面發送我們構造的Post數據)
posturl = '******' //從數據包中分析出,處理post請求的url

#設置一個cookie處理器,它負責從服務器下載cookie到本地,并且在發送請求時帶上本地的cookie
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)

#打開登錄主頁面(他的目的是從頁面下載cookie,這樣我們在再送post數據時就有cookie了,否則發送不成功)
h = urllib2.urlopen(hosturl)

#構造header,一般header至少要包含一下兩項。這兩項是從抓到的包里分析得出的。
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',
           'Referer' : '******'}
#構造Post數據,他也是從抓大的包里分析得出的。
postData = {'op' : 'dmlogin',
            'f' : 'st',
            'user' : '******', //你的用戶名
            'pass' : '******', //你的密碼,密碼可能是明文傳輸也可能是密文,如果是密文需要調用相應的加密算法加密
            'rmbr' : 'true',   //特有數據,不同網站可能不同
            'tmp' : '0.7306424454308195'  //特有數據,不同網站可能不同

            }

#需要給Post數據編碼
postData = urllib.urlencode(postData)

#通過urllib2提供的request方法來向指定Url發送我們構造的數據,并完成登錄過程
request = urllib2.Request(posturl, postData, headers)
print request
response = urllib2.urlopen(request)
text = response.read()
print text
 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!