python類比登入的實現
本文主要用python實現了對網站的類比登入。通過自己構造post資料來用Python實現登入過程。
當你要類比登入一個網站時,首先要搞清楚網站的登入處理細節(發了什麼樣的資料,給誰發等...)。我是通過HTTPfox來抓取http資料包來分析該網站的登入流程。同時,我們還要分析抓到的post包的資料結構和header,要根據提交的資料結構和heander來構造自己的post資料和header。
分析結束後,我們要構造自己的HTTP資料包,並發送給指定url。我們通過urllib2等幾個模組提供的API來實現request請求的發送和相應的接收。大部分網站登入時需要攜帶cookie,所以我們還必須設定cookie處理器來保證cookie。
具體代碼和講解如下
#!/usr/bin/pythonimport HTMLParserimport urlparseimport urllibimport urllib2import cookielibimport stringimport re#登入的首頁面hosturl = '******' //自己填寫#post資料接收和處理的頁面(我們要向這個頁面發送我們構造的Post資料)posturl = '******' //從資料包中分析出,處理post請求的url#設定一個cookie處理器,它負責從伺服器下載cookie到本地,並且在發送請求時帶上本地的cookiecj = 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 requestresponse = urllib2.urlopen(request)text = response.read()print text
以上是小弟自己的總結,如有不對請各位大俠指正,希望相互交流相互學習!