【python】最新版抖音js逆向拿到数据,非常详细教程(附完整代码)
import requests
import urllib.parse
from functools import partial # 这玩意能锁定一个函数的参数
import subprocess
# 锁定的encoding参数为"utf-8"
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
# 解决execjs执行js时产生的乱码报错, 需要在导入该模块之前, 让Popen的encoding参数锁定为utf-8
import execjs
cookies = {
'__ac_nonce': '0667e56e2004ca7be709d',
'__ac_signature': '_02B4Z6wo00f01F7gCHgAAIDDY0kS5D7x2bhewAzAAHHN77',
'ttwid': '1%7CSoyGfiW3YIrWehLxRkFXno6ivolsH4lknKZPFVCANB4%7C1719555811%7Ca9719b801cbae2a00413146f05768d8c634df943784af9a38db9f15aceaf674d',
'UIFID_TEMP': 'f670781d5233033367a4d99498efe9bd14a45e82156a15d1881178acac831acfc3b76208ba25a79581181b3d9b7f6fd8790436616b115455687712ed6e934e819565d6d28f51f2f1727dc4f41b7cd928',
's_v_web_id': 'verify_lxyb4soy_WnXlLGA3_UgM1_4TyE_ALG8_FSWMPquX0c9h',
'dy_swidth': '1920',
'dy_sheight': '1080',
'csrf_session_id': 'aed7eadbd76247fd202ee1ad2051ee3f',
'strategyABtestKey': '%221719555813.291%22',
'msToken': 'aMAJwH-yPdclT6oY0QB2nMN5zCevTQSdFzoc95Y6gb2Akh7ouSlRcajqvf2a6FO0Ne5GGIo7C-eKPQg70tY7-5W1cpP8kTOBo9eZz5c=',
'fpk1': 'U2FsdGVkX1+uNmlwtIj7vUBYMI5gSpCVwjwy4xLQrNBqAAzRl1v7ZfGTOciWl98nNbgujArYeguzH+jBT+HuKA==',
'fpk2': '9c1ce27f08b16479d2e17743062b28ed',
'passport_csrf_token': '774b3c57f40ce468bcab9aef1997a8e0',
'passport_csrf_token_default': '774b3c57f40ce468bcab9aef1997a8e0',
'bd_ticket_guard_client_data': 'eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCTzV0ZVJsdnIxOWtOb2FCT0F5dFZOTHpqa200UmNMOEk5eUFTUmRVWDBpRnRndzNQZHVqTmNTc2lGWDRaZlFmWUcyNHFERm4rU0Fab1JKRUE1YWl6bzQ9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoxfQ%3D%3D',
'bd_ticket_guard_client_web_domain': '2',
'FORCE_LOGIN': '%7B%22videoConsumedRemainSeconds%22%3A180%7D',
'download_guide': '%221%2F20240628%2F0%22',
'pwa2': '%220%7C0%7C1%7C0%22',
'UIFID': 'f670781d5233033367a4d99498efe9bd14a45e82156a15d1881178acac831acfc3b76208ba25a79581181b3d9b7f6fd8c65a2050d01ebdf6e5286e64f9b1f05ea748080de99e9551be7a8a0fdea38acca12971e9af16496830b10b68251f26ae0d3337ac0f80bb962d3a15ef775c36be352dcab16cc0f6337362be767e291c640bac5c403945f88a4bed4c33fe55c84628ff943716b4c377f6af7faa1774106f',
'IsDouyinActive': 'true',
'home_can_add_dy_2_desktop': '%220%22',
'stream_recommend_feed_params': '%22%7B%5C%22cookie_enabled%5C%22%3Atrue%2C%5C%22screen_width%5C%22%3A1920%2C%5C%22screen_height%5C%22%3A1080%2C%5C%22browser_online%5C%22%3Atrue%2C%5C%22cpu_core_num%5C%22%3A12%2C%5C%22device_memory%5C%22%3A8%2C%5C%22downlink%5C%22%3A10%2C%5C%22effective_type%5C%22%3A%5C%224g%5C%22%2C%5C%22round_trip_time%5C%22%3A100%7D%22',
}
headers = {
'authority': '',
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
'cache-control': 'no-cache',
# 'cookie': '__ac_nonce=0667e56e2004ca7be709d; __ac_signature=_02B4Z6wo00f01F7gCHgAAIDDY0kS5D7x2bhewAzAAHHN77; ttwid=1%7CSoyGfiW3YIrWehLxRkFXno6ivolsH4lknKZPFVCANB4%7C1719555811%7Ca9719b801cbae2a00413146f05768d8c634df943784af9a38db9f15aceaf674d; UIFID_TEMP=f670781d5233033367a4d99498efe9bd14a45e82156a15d1881178acac831acfc3b76208ba25a79581181b3d9b7f6fd8790436616b115455687712ed6e934e819565d6d28f51f2f1727dc4f41b7cd928; s_v_web_id=verify_lxyb4soy_WnXlLGA3_UgM1_4TyE_ALG8_FSWMPquX0c9h; dy_swidth=1920; dy_sheight=1080; csrf_session_id=aed7eadbd76247fd202ee1ad2051ee3f; strategyABtestKey=%221719555813.291%22; msToken=aMAJwH-yPdclT6oY0QB2nMN5zCevTQSdFzoc95Y6gb2Akh7ouSlRcajqvf2a6FO0Ne5GGIo7C-eKPQg70tY7-5W1cpP8kTOBo9eZz5c=; fpk1=U2FsdGVkX1+uNmlwtIj7vUBYMI5gSpCVwjwy4xLQrNBqAAzRl1v7ZfGTOciWl98nNbgujArYeguzH+jBT+HuKA==; fpk2=9c1ce27f08b16479d2e17743062b28ed; passport_csrf_token=774b3c57f40ce468bcab9aef1997a8e0; passport_csrf_token_default=774b3c57f40ce468bcab9aef1997a8e0; bd_ticket_guard_client_data=eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCTzV0ZVJsdnIxOWtOb2FCT0F5dFZOTHpqa200UmNMOEk5eUFTUmRVWDBpRnRndzNQZHVqTmNTc2lGWDRaZlFmWUcyNHFERm4rU0Fab1JKRUE1YWl6bzQ9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoxfQ%3D%3D; bd_ticket_guard_client_web_domain=2; FORCE_LOGIN=%7B%22videoConsumedRemainSeconds%22%3A180%7D; download_guide=%221%2F20240628%2F0%22; pwa2=%220%7C0%7C1%7C0%22; UIFID=f670781d5233033367a4d99498efe9bd14a45e82156a15d1881178acac831acfc3b76208ba25a79581181b3d9b7f6fd8c65a2050d01ebdf6e5286e64f9b1f05ea748080de99e9551be7a8a0fdea38acca12971e9af16496830b10b68251f26ae0d3337ac0f80bb962d3a15ef775c36be352dcab16cc0f6337362be767e291c640bac5c403945f88a4bed4c33fe55c84628ff943716b4c377f6af7faa1774106f; IsDouyinActive=true; home_can_add_dy_2_desktop=%220%22; stream_recommend_feed_params=%22%7B%5C%22cookie_enabled%5C%22%3Atrue%2C%5C%22screen_width%5C%22%3A1920%2C%5C%22screen_height%5C%22%3A1080%2C%5C%22browser_online%5C%22%3Atrue%2C%5C%22cpu_core_num%5C%22%3A12%2C%5C%22device_memory%5C%22%3A8%2C%5C%22downlink%5C%22%3A10%2C%5C%22effective_type%5C%22%3A%5C%224g%5C%22%2C%5C%22round_trip_time%5C%22%3A100%7D%22',
'pragma': 'no-cache',
'referer': '/user/MS4wLjABAAAAQERLUS1XLl1qZMZDkibRWUdHGBAoG0pJq_5hAj3XjIZXnxgtW_CcE17nuHHfikpQ',
'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}
params = {
'device_platform': 'webapp',
'aid': '6383',
'channel': 'channel_pc_web',
# 'sec_user_id': 'MS4wLjABAAAAQERLUS1XLl1qZMZDkibRWUdHGBAoG0pJq_5hAj3XjIZXnxgtW_CcE17nuHHfikpQ',
'sec_user_id': 'MS4wLjABAAAAMbqnWxzUfZegt9vrNBDz7zyqwhvG6vXiKTDxVm2wUD0',
'max_cursor': '0',
'locate_query': 'false',
'show_live_replay_strategy': '1',
'need_time_list': '1',
'time_list_query': '0',
'whale_cut_token': '',
'cut_version': '1',
'count': '18',
'publish_video_strategy_type': '2',
'update_version_code': '170400',
'pc_client_type': '1',
'version_code': '290100',
'version_name': '29.1.0',
'cookie_enabled': 'true',
'screen_width': '1920',
'screen_height': '1080',
'browser_language': 'zh-CN',
'browser_platform': 'Win32',
'browser_name': 'Chrome',
'browser_version': '120.0.0.0',
'browser_online': 'true',
'engine_name': 'Blink',
'engine_version': '120.0.0.0',
'os_name': 'Windows',
'os_version': '10',
'cpu_core_num': '12',
'device_memory': '8',
'platform': 'PC',
'downlink': '10',
'effective_type': '4g',
'round_trip_time': '100',
'webid': '7385435910345786890',
'msToken': '9G8o1cfOgnmTmftueqvwDPDIQUCfacV7cf6kfP69MLKzBWuKJq_7UeDNu0nFJeBx1LieJVpw4VfKQXRgEbpko2NSyiXATFMPvKdjjUU053K3ynhGid5o',
'verifyFp': 'verify_lxyb4soy_WnXlLGA3_UgM1_4TyE_ALG8_FSWMPquX0c9h',
'fp': 'verify_lxyb4soy_WnXlLGA3_UgM1_4TyE_ALG8_FSWMPquX0c9h',
}
#将字典转换为字符串参数
params_str = urllib.parse.urlencode(params)
print(params_str)
a_bogus = execjs.compile(open("",encoding='utf-8').read()).call("geta_bogus", params_str)
print("a_bogus:::",a_bogus)
params["a_bogus"] = a_bogus
response = requests.get('/aweme/v1/web/aweme/post/', params=params, cookies=cookies, headers=headers)
print("得到的结果",response.text)