mirror of
https://github.com/NanmiCoder/MediaCrawler.git
synced 2026-09-27 15:38:11 +08:00
fix(dy): 补上 detail 接口的 uifid/verifyFp 风控参数
抖音 detail 接口的 Argus 风控要求 uifid / verifyFp / fp 三个参数,缺一则直接 403:响应体为 "Blocked by ArgusSecurityPlugin Uifid Not Found",补上 uifid 但 verifyFp 不对时换成 "... Signature Not Found"。原实现只传 aweme_id,于是 get_aweme_detail 全线失败,详情和媒体都拿不到。 - 三个参数取自浏览器 cookie:uifid 用 UIFID(缺失时退到 UIFID_TEMP), verifyFp/fp 用 s_v_web_id。必须用 cookie 里的 s_v_web_id——实测 uifid 搭配 自生成的 verifyFp 会被判 Signature Not Found,两者需要同源 - 新增 tests/test_douyin_aweme_detail_params.py(不发网络请求) 验证:抓包比对真实浏览器发出的 detail 请求,参数逐项一致;真实爬取中详情与 74MB 视频均下载成功。
This commit is contained in:
@@ -214,7 +214,19 @@ class DouYinClient(AbstractApiClient, ProxyRefreshMixin):
|
||||
:param aweme_id:
|
||||
:return:
|
||||
"""
|
||||
params = {"aweme_id": aweme_id}
|
||||
# 抖音 detail 接口的 Argus 风控要求这两个参数成套出现,缺一则直接 403
|
||||
# (响应体为 "Blocked by ArgusSecurityPlugin Uifid Not Found"):
|
||||
# uifid = UIFID cookie,没有时退到 UIFID_TEMP
|
||||
# verifyFp / fp = s_v_web_id cookie
|
||||
# 必须用 cookie 里的 s_v_web_id:实测 uifid 搭配自生成的 verifyFp 会被判成
|
||||
# "Signature Not Found",两者同源才能通过。
|
||||
s_v_web_id = self.cookie_dict.get("s_v_web_id", "")
|
||||
params = {
|
||||
"aweme_id": aweme_id,
|
||||
"uifid": self.cookie_dict.get("UIFID") or self.cookie_dict.get("UIFID_TEMP", ""),
|
||||
"verifyFp": s_v_web_id,
|
||||
"fp": s_v_web_id,
|
||||
}
|
||||
headers = copy.copy(self.headers)
|
||||
del headers["Origin"]
|
||||
res = await self.get("/aweme/v1/web/aweme/detail/", params, headers)
|
||||
|
||||
Reference in New Issue
Block a user