'commit'
This commit is contained in:
@@ -2,4 +2,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
|
||||
ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
|
||||
@@ -9,10 +9,10 @@ douyin_headers = {
|
||||
'referer': 'https://www.douyin.com/',
|
||||
'accept': 'application/json, text/plain, */*',
|
||||
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
||||
'accept-encoding': 'gzip, deflate, br',
|
||||
'accept-encoding': 'gzip, deflate',
|
||||
'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'sec-ch-ua-platform': '"macOS"',
|
||||
'sec-ch-ua-platform': '"Windows"',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-site': 'same-origin'
|
||||
|
||||
@@ -165,7 +165,7 @@ class Douyin(object):
|
||||
# 单作品接口返回 'aweme_detail'
|
||||
# 主页作品接口返回 'aweme_list'->['aweme_detail']
|
||||
# 更新API参数以适应最新接口要求
|
||||
detail_params = f'aweme_id={aweme_id}&device_platform=webapp&aid=6383&channel=channel_pc_web&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=MacIntel&browser_name=Chrome&browser_version=122.0.0.0&browser_online=true&engine_name=Blink&engine_version=122.0.0.0&os_name=Mac&os_version=10.15.7&cpu_core_num=8&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&update_version_code=170400'
|
||||
detail_params = f'aweme_id={aweme_id}&device_platform=webapp&aid=6383&channel=channel_pc_web&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=122.0.0.0&browser_online=true&engine_name=Blink&engine_version=122.0.0.0&os_name=Windows&os_version=10&cpu_core_num=8&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&update_version_code=170400'
|
||||
jx_url = self.urls.POST_DETAIL + utils.getXbogus(detail_params)
|
||||
|
||||
response = requests.get(url=jx_url, headers=douyin_headers, timeout=10)
|
||||
@@ -280,7 +280,15 @@ class Douyin(object):
|
||||
while True:
|
||||
try:
|
||||
# 构建请求URL - 添加更多必需参数
|
||||
base_params = f'sec_user_id={sec_uid}&count={count}&max_cursor={max_cursor}&device_platform=webapp&aid=6383&channel=channel_pc_web&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=MacIntel&browser_name=Chrome&browser_version=122.0.0.0&browser_online=true&engine_name=Blink&engine_version=122.0.0.0&os_name=Mac&os_version=10.15.7&cpu_core_num=8&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50'
|
||||
base_params = f'sec_user_id={sec_uid}&count={count}&max_cursor={max_cursor}&device_platform=webapp&aid=6383&channel=channel_pc_web&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=122.0.0.0&browser_online=true&engine_name=Blink&engine_version=122.0.0.0&os_name=Windows&os_version=10&cpu_core_num=8&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50'
|
||||
|
||||
# 尝试从 cookie 中提取 msToken
|
||||
cookie_str = douyin_headers.get('Cookie', '')
|
||||
if 'msToken=' in cookie_str:
|
||||
import re
|
||||
ms_token_match = re.search(r'msToken=([^;]+)', cookie_str)
|
||||
if ms_token_match:
|
||||
base_params += f"&msToken={ms_token_match.group(1)}"
|
||||
|
||||
if mode == "post":
|
||||
url = self.urls.USER_POST + utils.getXbogus(base_params)
|
||||
@@ -415,7 +423,7 @@ class Douyin(object):
|
||||
while True:
|
||||
# 接口不稳定, 有时服务器不返回数据, 需要重新获取
|
||||
try:
|
||||
live_params = f'aid=6383&device_platform=web&web_rid={web_rid}&channel=channel_pc_web&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=MacIntel&browser_name=Chrome&browser_version=122.0.0.0&browser_online=true&engine_name=Blink&engine_version=122.0.0.0&os_name=Mac&os_version=10.15.7&cpu_core_num=8&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50'
|
||||
live_params = f'aid=6383&device_platform=web&web_rid={web_rid}&channel=channel_pc_web&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=122.0.0.0&browser_online=true&engine_name=Blink&engine_version=122.0.0.0&os_name=Windows&os_version=10&cpu_core_num=8&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50'
|
||||
live_api = self.urls.LIVE + utils.getXbogus(live_params)
|
||||
|
||||
response = requests.get(live_api, headers=douyin_headers)
|
||||
@@ -870,19 +878,39 @@ class Douyin(object):
|
||||
while True:
|
||||
# 接口不稳定, 有时服务器不返回数据, 需要重新获取
|
||||
try:
|
||||
user_detail_params = f'sec_user_id={sec_uid}&device_platform=webapp&aid=6383&channel=channel_pc_web&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=MacIntel&browser_name=Chrome&browser_version=122.0.0.0&browser_online=true&engine_name=Blink&engine_version=122.0.0.0&os_name=Mac&os_version=10.15.7&cpu_core_num=8&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50'
|
||||
user_detail_params = f'sec_user_id={sec_uid}&device_platform=webapp&aid=6383&channel=channel_pc_web&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1920&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=122.0.0.0&browser_online=true&engine_name=Blink&engine_version=122.0.0.0&os_name=Windows&os_version=10&cpu_core_num=8&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50'
|
||||
|
||||
# 尝试从 cookie 中提取 msToken
|
||||
cookie_str = douyin_headers.get('Cookie', '')
|
||||
if 'msToken=' in cookie_str:
|
||||
import re
|
||||
ms_token_match = re.search(r'msToken=([^;]+)', cookie_str)
|
||||
if ms_token_match:
|
||||
user_detail_params += f"&msToken={ms_token_match.group(1)}"
|
||||
|
||||
url = self.urls.USER_DETAIL + utils.getXbogus(user_detail_params)
|
||||
|
||||
res = requests.get(url=url, headers=douyin_headers)
|
||||
datadict = json.loads(res.text)
|
||||
|
||||
if datadict is not None and datadict["status_code"] == 0:
|
||||
return datadict
|
||||
res = requests.get(url=url, headers=douyin_headers, timeout=10)
|
||||
|
||||
if not res.text.strip():
|
||||
logger.warning(f"getUserDetailInfo: Empty response (Status: {res.status_code})")
|
||||
else:
|
||||
try:
|
||||
datadict = json.loads(res.text)
|
||||
if datadict is not None and datadict.get("status_code") == 0:
|
||||
return datadict
|
||||
else:
|
||||
logger.warning(f"getUserDetailInfo: API error (Status: {datadict.get('status_code')}, Msg: {datadict.get('status_msg')})")
|
||||
except json.JSONDecodeError:
|
||||
logger.error(f"getUserDetailInfo: JSON decode error (Status: {res.status_code})")
|
||||
except Exception as e:
|
||||
end = time.time() # 结束时间
|
||||
if end - start > self.timeout:
|
||||
print("[ 提示 ]:重复请求该接口" + str(self.timeout) + "s, 仍然未获取到数据")
|
||||
return datadict
|
||||
logger.error(f"getUserDetailInfo: Exception: {e}")
|
||||
|
||||
end = time.time() # 结束时间
|
||||
if end - start > self.timeout:
|
||||
print("[ 提示 ]:重复请求该接口" + str(self.timeout) + "s, 仍然未获取到数据")
|
||||
return datadict
|
||||
time.sleep(1) # 增加小延迟避免请求过快
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user