1. 程式人生 > >通過 cookie 信息實現自動登錄

通過 cookie 信息實現自動登錄

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=1
BIDUPSID: 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 信息實現自動登錄