使用fiddler抓取app資料
阿新 • • 發佈:2018-11-21
本文簡單展示如何用Python抓取APP資料,以超級課程表樹洞為例:
首先:需要下載抓包神器:fiddler
直接百度下載,然後打來fiddler設定幾個選項:
選中"Decrpt HTTPS traffic", Fiddler就可以截獲HTTPS請求
選中"Allow remote computers to connect". 是允許別的機器把HTTP/HTTPS請求傳送到Fiddler上來,記得重新啟動。
然後記住port:8888,windows 開啟cmd輸入 ipconfig查到自己的IP 然後去開啟手機的網路代理設定:
安卓的:
確定一下手機和PC是連線在同一個區域網中
進入手機的設定->點選進入WLAN設定->選擇連線到的無線網,長按彈出選項框 輸入自己的ip和port
將代理設定成手動,將上面獲取到的ip地址和埠號填入,點選儲存。這樣就將我們的手機設定成功了。
使用Android手機的瀏覽器開啟:http://【IP】:8888, 點"FiddlerRoot certificate" 然後安裝證書,如圖:
蘋果的在無限網右側歎號出點擊輸入代理;不需要安裝證書 這樣fiddler就可以抓手機的包了
得到超級課程表登入的地址:http://120.55.151.61/V2/StudentSkip/loginCheckV4.action
表單:
表單中包括了使用者名稱和密碼,當然都是加密過了的,還有一個裝置資訊,直接post過去就是。
另外必須加header,很重要 這是模擬手機的請求,
from urllib import request,parse import http.cookiejar import json c=http.cookiejar.CookieJar() cookie=request.HTTPCookieProcessor(c) #把這個儲存器繫結到opener裡 opener=request.build_opener(cookie) request.install_opener(opener) opener.addheaders = [('Connection','close'),('Content-Type','application/x-www-form-urlencoded; charset=utf-8'), ('User-Agent','Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) ' 'AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 -SuperFriday_9.4.1'),('Content-Length','338'), ('Accept-Encoding','gzip'),('Connection','close')]
def login():
url = 'http://120.55.151.61:80/V2/StudentSkip/loginCheckV4.action'
data = 'password=80ae7800f3602767a22913fd5351858d&account=09a41e3366274f2da3eb0163d161986b®istrationId=&ifa=737D0450-F735-4251-8306-5B03DD079D58&ifv=A4F8E2BF-1657-4C67-B615-2806C49571DE&versionNumber=9.4.1&platform=2&channel=AppStore&phoneVersion=11.4.1&phoneModel=iphone%205s%28Global%29%20%28A1457%2FA1518%2FA1528%2FA1530%29&phoneBrand=Apple'
req = request.Request(url,data=data.encode())
response = opener.open(req).read()
if response:
print('login success')
這是登陸資訊:
接下來得到了json串
手機點選話題,抓取請求,篩選出需要的資訊
接下來貼整個程式碼:
from urllib import request,parse
import http.cookiejar
import json
c=http.cookiejar.CookieJar()
cookie=request.HTTPCookieProcessor(c)
#把這個儲存器繫結到opener裡
opener=request.build_opener(cookie)
request.install_opener(opener)
opener.addheaders = [('Connection','close'),('Content-Type','application/x-www-form-urlencoded; charset=utf-8'),
('User-Agent','Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) '
'AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 -SuperFriday_9.4.1'),('Content-Length','338'),
('Accept-Encoding','gzip'),('Connection','close')]
def login():
url = 'http://120.55.151.61:80/V2/StudentSkip/loginCheckV4.action'
data = 'password=80ae7800f3602767a22913fd5351858d&account=09a41e3366274f2da3eb0163d161986b®istrationId=&ifa=737D0450-F735-4251-8306-5B03DD079D58&ifv=A4F8E2BF-1657-4C67-B615-2806C49571DE&versionNumber=9.4.1&platform=2&channel=AppStore&phoneVersion=11.4.1&phoneModel=iphone%205s%28Global%29%20%28A1457%2FA1518%2FA1528%2FA1530%29&phoneBrand=Apple'
req = request.Request(url,data=data.encode())
response = opener.open(req).read()
if response:
print('login success')
def chat(timestampLong=0):
url = 'http://120.55.151.61:80/Treehole/V4/Message/getListByType.action'
data = 'type=1×tamp={}&versionNumber=9.4.1&platform=2&channel=AppStore&phoneVersion=11.4.1&phoneModel=iphone%205s%28Global%29%20%28A1457%2FA1518%2FA1528%2FA1530%29&phoneBrand=Apple'.format(timestampLong)
req = request.Request(url, data=data.encode())
response = request.urlopen(req).read()
parse_html(response.decode())
def parse_html(result):
result = json.loads(result)
print(result)
if result['status']==1:
print('success spider')
timestampLong = result['data']['timestampLong']
parse_one_page(result)
chat(timestampLong)
def parse_one_page(result):
for item in result['data']['listBO']['messageBOs']:
print(item.get('schoolName',' '),item.get('content'))
#--獲取更多--
login()
chat()
貼上執行後截圖