=========================================================
服務(wù)器將在2021/01/30過(guò)期捉捅,屆時(shí)接口將沒(méi)法用了,所以很抱歉哦
=========================================================
最近老板讓爬取一下抖音數(shù)據(jù),最新版本的總是抓不到包谭溉,所以我就選擇使用舊版本的抖音app,通過(guò)分析抖音數(shù)據(jù)請(qǐng)求包迁匠,我們發(fā)現(xiàn)其中最難拿到的就是 “X-Gorgon”值:
請(qǐng)求包格式如下:
GET 后面是請(qǐng)求的api-我們可以自己構(gòu)造
Host: 這是請(qǐng)求的host
Connection: keep-alive # 這個(gè)不重要
Cookie: 這里是我們自己的cookies
Accept-Encoding: gzip # 這個(gè)不重要
X-SS-REQ-TICKET: 1605670443023 # 這就是一個(gè)時(shí)間戳
X-Tt-Token: 這是我們自己的Token
sdk-version: 1 # 這個(gè)不重要
User-Agent: 這是我們的agent
X-Khronos: 1605670443 # 這就是一個(gè)時(shí)間戳
# --------------------------------------------------------------
X-Gorgon: 0300ccc000007c----- # 這個(gè)東西不好拿到(這篇博客的核心)|
# --------------------------------------------------------------
X-Pods: 這個(gè)沒(méi)有用
反編譯apk獲取X-gorgon生成過(guò)程:
通過(guò)反編譯對(duì)應(yīng)版本的抖音APK(這里是6.3.0版本的)拐辽,我們發(fā)現(xiàn)對(duì)應(yīng)的X-Gorgon是通過(guò)請(qǐng)求頭中的字段構(gòu)造的睁搭,源代碼如下圖所示:其中X-Gorgon與當(dāng)前請(qǐng)求的api以及請(qǐng)求時(shí)間寓调,請(qǐng)求的cookies和token等有關(guān)余黎,經(jīng)過(guò)不懈的努力(有點(diǎn)點(diǎn)夸張)驯耻,我終于實(shí)現(xiàn)了對(duì)應(yīng)的生成算法斋枢,現(xiàn)在做成接口免費(fèi)提供給大家(下一段講接口請(qǐng)求)。
X-Gorgon 獲取接口
所以我給大家提供了一個(gè)X-Gorgon的生成接口,大家可以請(qǐng)求梯皿,但是請(qǐng)大家注意頻率火惊,畢竟個(gè)人的小電腦不太耐折騰求类。
- 接口參數(shù):
url = "http://8.131.59.252:8080"
headers = {
"dou-url": dou_url, # 填寫對(duì)應(yīng)的請(qǐng)求的api
"dou-cookies": dou_cookies, # 填寫你的cookies
"dou-token": dou_token, # 填寫你的token(沒(méi)有的話,就填空置:“”)
"dou-queries": dou_queries # 填寫你的請(qǐng)求的queries(沒(méi)有的話屹耐,就填空置:“”)
}
- 接口返回值:
# 下面是請(qǐng)求正確的格式
{
"status":0, # 說(shuō)明請(qǐng)求成功
"X-gorgon":"03jdfahdfdald" # 返回到額 X-Gorgon
}
# 下面是請(qǐng)求錯(cuò)誤的格式
{
"status":1, # 表示生成X-Gorgon失敗
"reason":"" # 說(shuō)明錯(cuò)誤的原因
}
下面是請(qǐng)求示例:
import json
import requests
# 這個(gè)是生成X-Gorgon的服務(wù)器(不需要改)
gorgon_host = "http://8.131.59.252:8080"
# 下面這幾個(gè)都需要填上你的請(qǐng)求的東西
# 填寫你要爬取的抖音的url
dou_url = ""
# 填寫你的cookies
dou_cookies = ""
# 填寫你的 token (沒(méi)有的話就不動(dòng)這個(gè))
dou_token = ""
# 填寫你的queries(沒(méi)有的話就不動(dòng)這個(gè))
dou_queries = ""
headers = {
"dou-url": dou_url,
"dou-cookies": dou_cookies,
"dou-token": dou_token,
"dou-queries": dou_queries
}
res = requests.get(gorgon_host, headers=headers)
status_code = res.status_code
if status_code == 200:
print("請(qǐng)求成功")
# 解析X-Gorgon
res_gorgon = json.loads(res.text)
if res_gorgon.get("status") == 0:
print("成功獲取 X-Gorgon")
print(res_gorgon.get("X-gorgon")) # 你就可以用來(lái)爬數(shù)據(jù)了
else:
print("獲取 X-Gorgon 失敗")
print(res_gorgon.get("reason"))
else:
print("請(qǐng)求發(fā)送錯(cuò)誤/可能是你的網(wǎng)絡(luò)錯(cuò)誤尸疆,也可能是我的錯(cuò)誤,但是大概率是你那邊的錯(cuò)誤")
注意
如果請(qǐng)求的X-gorgon不能用惶岭,可能是你的url構(gòu)造的問(wèn)題寿弱,也有可能是你的cookies、token的問(wèn)題按灶,請(qǐng)注意檢查症革。(當(dāng)然了,也有可能是我的代碼的問(wèn)題鸯旁,但是我這邊都是可以抓到數(shù)據(jù)的)
附錄
如果需要噪矛,我會(huì)從頭講一下怎么抓包量蕊,怎么請(qǐng)求數(shù)據(jù)什么的。