用python實現模擬登錄163郵箱

說明:
    本代碼實現了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

相關文章
相關標籤/搜索