通過 cookie 信息實現自動登錄
阿新 • • 發佈:2017-12-25
gen elf port http pro 構建 body 對象 color
什麽是 cookie:某些網站為了辨別用戶身份,進行 session 跟蹤而存儲在用戶本地上的數據,通過 cookie 可以訪問網站的其他頁面,否則是禁止訪問的
如何獲取 cookie :
In [1]: import urllib2, cookielib In [2]: cookie = cookielib.CookieJar() # 獲取存在本機的cookie消息,但第一次獲取為空,只有訪問了一個URL之後才有cookie信息 In [3]: handler = urllib2.HTTPCookieProcessor(cookie) # 創建一個處理器,用於處理cookie信息In [4]: opener = urllib2.build_opener(handler) # 通過cookie處理器構建opener,使得opener跟CookieJar對象綁定 In [5]: response = opener.open(‘http://www.baidu.com/‘) # 使用opener來訪問一個URL便會收集到cookie信息 In [6]: for i in cookie: ....: print ‘%s: %s‘ % (i.name, i.value) ....: BAIDUID: D9487EEE0A9D16C06CA7517EACC00798:FG=1BIDUPSID: D9487EEE0A9D16C06CA7517EACC00798 H_PS_PSSID: 1445_21112_18560_17001_25178_20930 PSTM: 1514119274 BDSVRTM: 0 BD_HOME: 0
實例:通過 cookie 自動登錄企業郵箱
#!/usr/bin/env python #-*- coding: utf8 -*- import re import urllib import urllib2 import cookielib class MyMail(object): def __init__(self): self.headers= {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT6.1; rv:47.0) Gecko/20100101 Firefox/47.0‘} self.baseURL = ‘https://bjmail.clustertech.com/roundcude/‘ self.loginURL = self.baseURL + ‘?_task=login‘ def getPage(self): self.cookie = cookielib.CookieJar() handler = urllib2.HTTPCookieProcessor(self.cookie) self.opener = urllib2.build_opener(handler) try: request = urllib2.Request(url=self.baseURL, headers=self.headers) response = self.opener.open(request) return response.read() except urllib2.URLError, e: if hasattr(e, ‘reason‘): print "連接服務器失敗,錯誤原因", e.reason return None def getToken(self): page = self.getPage() re_token = re.compile(r‘<form.*?<input.*?value="(.*?)".*?>‘, re.S) token = re_token.search(page) if token: return token.group(1) else: return None def login(self): data = {"_token":self.getToken(), "_task":"login", "_action":"login", "_timezone":"Asia/Shanghai", "_url":"", "_user":"zyli", "_pass":"1234.qwe"} self.postdata = urllib.urlencode(data) try: request = urllib2.Request(url = self.loginURL, data = self.postdata, headers = self.headers) response = self.opener.open(request) print response.read() except urllib2.URLError, e: print e gs = MyMail() gs.getToken() gs.login()
通過 cookie 信息實現自動登錄