requests庫來實現了這個功能。requests 是用基於 urllib,採用 apache2 licensed 開源協議的 http 庫。它比 urllib 更加方便,可以節約我們大量的工作,完全滿足 http 測試需求。我們使用他的原因是他能更加方便的儲存session資訊。
流程:1.解析頁面表單構成,獲取請求的頭資訊
2.模擬瀏覽器登入
3.儲存session,進入使用者中心。
4.解析頁面,獲取需要更新的頁面。
5.對每個頁面的重新整理按鈕發起請求。
6.休眠計時。
解析登入頁面:
首先開啟登入頁面,通過chrome來審查表單結構與request headers的資訊。根據資訊來構建登陸時的提交標頭檔案與登入資訊。
模擬瀏覽器發起請求的頭資訊:
使用者登入表單,其中csrf是使用者每次發起請求時動態生成的:
payload =
動態獲取csrf
當我們每次向目標位址發起乙個request請求時,表單內部會動態生成乙個csrf口令,並將其與html頁面內容一起返回,因此我們可以通過解析頁面內容來獲取csrf口令。這裡我們使用htmllparser來找到_csrf標籤對應的內容。
class myparser(htmlparser): def __init__(self): htmlparser.__init__(self) self.values = 0 def handle_starttag(self, tag, attrs): def _attr(attrlist, attrname): for each in attrlist: if attrname == each[0]: return each[1] return none if tag == 'input' and _attr(attrs, 'name') == '_csrf': self.values = _attr(attrs, 'value')def get_csrf(login): data = login.text par = myparser() par.feed(data) return par.values
模擬瀏覽器登入
我們使用requests庫例項化乙個會話,然後使用我們構建的表單內容與headers來進行登入,其中csrf是動態獲取的。這樣我們的資訊就會被儲存在這個物件中。
session_requests = requests.session()login = session_requests.get(login_url)csrf = get_csrf(login)payload["_csrf"] = csrflogin = session_requests.post(login_url, data=payload, headers=headers1)
為了檢查是否請求成功,可以檢視請求發回的狀態碼
login.status_code
解析使用者頁面並發起請求
在訪問使用者資訊頁面並重新整理時,我們使用下面的標頭檔案發起請求,其中referer是根據我們要訪問的位址動態更新的。
home是我們要訪問的使用者資訊頁面,我們從中提取列表中的**,並解析出id。其中每個頁面的內的重新整理按鈕是與對應的js相關聯的,因為我們通過前面固定的**與id動態構建出重新整理請求的位址。最後我們按照重新整理的cd,使用更新後的headers發起重新整理請求。
getstat = session_requests.get(home) urls = list(set(re.findall(pattern1, getstat.text))) ids = [re.findall(pattern2, url)[1] for url in urls] refresh = ["" + i for i in ids] while true: for r, url in zip(refresh, urls): headers2['referer'] = url getstat = session_requests.get(r, headers=headers2) print('refresh at ' + time.strftime("%y-%m-%d %h:%m:%s", time.localtime())) time.sleep(6 * 60 * 60)
完整**
# coding: utf8import reimport timeimport requestsfrom html.parser import htmlparserclass m
Python 模擬登陸
主要講述賬號密碼登陸,cookie登陸,3.cookie cookie 是伺服器對每個請求使用者的標識,伺服器可以通過cookie判斷請求使用者是不是同乙個人,經常我們登入 時,登陸成功以後我們關閉頁面,我們再次去進入這個頁面,已經是登入狀態了。cookie也有時效性,一定時間以後cookie就會失...
Python模擬登陸
這裡用知乎 www.zhihu.com 來測試的python的模擬登陸操作 首先用firefox和fiddler來攔截所有對知乎的請求,包括進入登陸的頁面的url www.zhihu.com signin 和登陸的url www.zhihu.com login phone num 檢視頁面的源 需要...
普通python模擬登陸
usr bin python import htmlparser import urlparse import urllib import urllib2 import cookielib import string import re 登入的主頁面 hosturl post資料接收和處理的頁面 我...