說明:
本代碼實現了163郵箱的模擬登錄,能夠完美運行。在後期只要在網頁發生變化時對其做出必要的更改,這段代碼仍然能夠運行html
本代碼參考http://www.cnblogs.com/xiaowuyi/archive/2012/05/21/2511428.html中的代碼 cookie
步驟:
一、首先找到POST報文
記錄其url:https://reg.163.com/logins.jsp(這個就是其之後模擬登錄的入口地址)
注:模擬登錄的原理:其實就是模擬發送POST報文的相關內容
二、 觀察請求實體,以及請求報頭,構造報文請求(通常包括url,header,postdata三個部分就能夠了)
三、將postdata數據轉換成url數據格式(即&形式)
四、經過UrlResponse()構造請求。
五、經過urlopen()實現模擬登錄。
注意:
一、編碼說明的主要性:
當代碼中出現中文時,必定要對代碼的編碼進行說明,例如本例中的{#-*- coding:UTF-8 -*-}就是十分必須,不然代碼功能不能實現
二、post中的有些報文信息是沒有必要post的(固然前提是咱們的模擬登錄沒有出錯),個人建議是你們對不肯定的報頭,能夠適當的捨棄,當出錯的時候,咱們在研究它們的出處以及具體含義。
#-*- coding:UTF-8 -*-
import urllib2
import urllib
import cookielib
########################################################################
class emulate_163_login:
username = ''
password = ''
header = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
cookie = None
cookiefile = './cookies.dat'
user = ''
#----------------------------------------------------------------------
def __init__(self, username, password):
self.username = username
self.password = password
self.cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie))
urllib2.install_opener(opener)
def login(self):
postdata = {'username': self.username,
'password':self.password,
'type': 1,
'product': 'mail163'
}
postdata = urllib.urlencode(postdata)
url = "https://reg.163.com/logins.jsp"
req = urllib2.Request(url, data = postdata, headers = self.header)
result = urllib2.urlopen(req).read()
result = str(result)
self.user = self.username.split('@')[0]
if '登陸成功,正在跳轉...' in result:
print "登錄成功!!!"
print "username:%s" %(self.user)
flag = True
else:
print "error!"
print "username:%s" %(self.user)
flag = False
return flag
if __name__ == '__main__':
login = emulate_163_login('郵箱帳號', '密碼')
login.login()
jsp