Python模擬登陸第一彈見:【Python數據分析】Python模擬登陸(一) requests.Session應用
上次的登陸是最基本的,所有是明文,並且在瀏覽器中就能夠看到POST的數據。接下來咱們來個稍微難一點的–模擬登陸博客園(http://www.cnblogs.com)javascript
圖1
如上圖,在post數據中不能顯式看到POST內容。html
既然瀏覽器調試功能沒法探測到POST數據,那麼採用Fiddler試試看,這是一款網絡抓包工具,很好用。登陸後看到圖2
POST的數據是input1,input2和remember,這和分析signin頁面的源代碼所得結果一致。圖3
其中input1是加過密的用戶名,input2是加過密的密碼,remember表示記住仍是不記住用戶名。因爲RSA的原理,加過密後的內容能夠不同,可是解密後的數據是同樣的,那麼咱們就能夠採用重放方式登陸,即複製這些內容到咱們的POST data中。
還要注意一個cookies的問題,cookies必定要選擇正確,不要選下面的:圖4
由於這是登陸頁面的cookies,咱們要用下面的cookies:圖5,java
即包含.CNBlogCookies的cookie,這也是主頁的cookies。
爲了驗證登陸是否成功,咱們登陸後打開followers頁面,由於未登陸前是沒法看到任何用戶的粉絲頁面的。
仍是利用requests.Session,寫出以下代碼:python
import requests import re import json from bs4 import BeautifulSoup s = requests.Session() headers = { 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Referer': 'http://passport.cnblogs.com/user/signin', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36', 'Cookie': '__gads=ID=fc58354935efbd89:T=1458638388:S=ALNI_MYEtsucyem4nWeL9mdxvQmfAZlTgQ; _ga=GA1.2.111229817.1458781632; .CNBlogsCookie=39EB7C846FF5A6CA5D762D210B954E55CE77A24D11C5203F6055DCAC93DFFF8EA7E405568F2D8CC9F00AFE43A859E71DE55AE6E79A030F7E74C231CECF7DA2DD88B734EA2ECA22DFED8C2ECAB85717B45434AABFE1202DA8266C7440562114D99D9C6767' } login_data = {'input1': '你的用戶名加密後內容', 'input2': '你的密碼加密後內容', 'remember': 'false' } url = 'http://passport.cnblogs.com/user/signin' req = s.post(url, data = login_data, headers=headers) print(req.status_code) #200 print(req.content.decode()) #{"success":false,"message":"您已處於登陸狀態"} f = s.get('http://home.cnblogs.com/u/whatbeg/followers/1', headers=headers) print(f.status_code) print(f.text)
而後運行有: json
圖6
圖7
顯示成功登陸。
這樣,就能夠登陸這種用RSA加密的用戶名密碼的非https且不須要驗證碼的網站了。但願對須要的人有所幫助。瀏覽器
本文工做僅供交流學習用,請勿利用作出任何不遵照網絡公德的行爲。
原文地址:http://whatbeg.com/2016/04/14/logincnblogs.htmlcookie