问题原因:
这个东西卡了好久,也参考了很多文章
问题解决:
dy_douyin.js 这个是 源码js
dy_env.js 补环境的js
douyin.py 启动的文件
dy_ceshi.js 测试 js
** -----------------------------------------------------------------------------------------
补环境的 dy_env.js
window = global
delete global;
delete Buffer;
window.XMLHttpRequest = function () {
return 'XMLHttpRequest() { [native code] }'
}
//上代理
function get_enviroment(proxy_array) {
for (var i = 0; i < proxy_array.length; i++) {
handler = '{\n' +
' get: function(target, property, receiver) {\n' +
' console.log("方法:", "get ", "对象:", ' +
'"' + proxy_array[i] + '" ,' +
'" 属性:", property, ' +
'" 属性类型:", ' + 'typeof property, ' +
// '" 属性值:", ' + 'target[property], ' +
'" 属性值类型:", typeof target[property]);\n' +
' return target[property];\n' +
' },\n' +
' set: function(target, property, value, receiver) {\n' +
' console.log("方法:", "set ", "对象:", ' +
'"' + proxy_array[i] + '" ,' +
'" 属性:", property, ' +
'" 属性类型:", ' + 'typeof property, ' +
// '" 属性值:", ' + 'target[property], ' +
'" 属性值类型:", typeof target[property]);\n' +
' return Reflect.set(...arguments);\n' +
' }\n' +
'}'
eval('try{\n' + proxy_array[i] + ';\n'
+ proxy_array[i] + '=new Proxy(' + proxy_array[i] + ', ' + handler + ')}catch (e) {\n' + proxy_array[i] + '={};\n'
+ proxy_array[i] + '=new Proxy(' + proxy_array[i] + ', ' + handler + ')}')
}
}
proxy_array = ['window', 'document','location',' navigator', 'history','screen', 'aaa', 'target']
navigator = {}
navigator.userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
document = {}
document.createElement = function (name) {
if (name == 'span') {
return [{}]
}
}
window.requestAnimationFrame = function () {
return 'requestAnimationFrame() { [native code] }'
}
get_enviroment(proxy_array);
dy_ceshi.js
require('./dy_env')
require('./dy_douyin')
console.log(window._uu)
function get_a_bogus(p) {
arguments = [
0,
1,
8,
p,
"",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
]
var r = window._uu._v;
return (0, window._uu._u)(r[0], arguments, r[1], r[2], this)
}
//
// //测试
// p = "device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=MS4wLjABAAAAiXeL8UUfi0KfVrjbpc2LJKSGiPXEBomMz5i_DCbDsSYXhCJ6PZm9c7DUE1KCQ2cy&req_from=channel_pc_web&cursor=0&count=6&update_version_code=170400&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=126.0.0.0&browser_online=true&engine_name=Blink&engine_version=126.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&webid=7348375623537411636&msToken=ObBn4WzvIEsFDSPcVzMI6ES47BjSfoHLSZkFNb_Sl1Lu5ORzpNXBsijxkg94GIU5FOvcR62mwYfOL6BttOxaKDEfHBvuS06SmC5SmV88IflBhxxSkLIiE2A0EjIA&msToken=ObBn4WzvIEsFDSPcVzMI6ES47BjSfoHLSZkFNb_Sl1Lu5ORzpNXBsijxkg94GIU5FOvcR62mwYfOL6BttOxaKDEfHBvuS06SmC5SmV88IflBhxxSkLIiE2A0EjIA"
//
// console.log(get_a_bogus(p))
里面的 这段
function get_a_bogus(p) {
arguments = [
0,
1,
14,
p,
"",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
]
var r = window._uu._v;
return (0, window._uu._u)(r[0], arguments, r[1], r[2], this)
}
window._uu这个东西是需要在源码里面去 添加一个东西 window._uu= u 。
源码是什么、?
就这个js 就是源码, 不明白的 网上很多文章,自己去看下。 这里需要定位到 59 !=
到这个位置,添加上 window._uu= u (随你写什么, 反正 window.xxx = u)
调用的文件 douyin.py
# -*- coding: utf-8 -*-
# author: da_pangzi
# datetime: 2024/8/14 10:48
# ide: PyCharm
import pprint
import requests
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8') #这三行代码需要放在导入execjs之前
import execjs
import urllib.parse
cookies = '' # 自己的 加上去
headers = {
"accept": "application/json, text/plain, */*",
"accept-language": "zh-CN,zh;q=0.9",
"cache-control": "no-cache",
"pragma": "no-cache",
"priority": "u=1, i",
"referer": "https://www.douyin.com/user/MS4wLjABAAAADw1dDJd4zddv0m8KWQB7ztFV0Nt8QzIK7dpFvbsrXss",
"sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
"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/126.0.0.0 Safari/537.36"
}
# url = "https://www.douyin.com/aweme/v1/web/hot/search/list/"
# params = {
# "device_platform": "webapp",
# "aid": "6383",
# "channel": "channel_pc_web",
# "sec_user_id": "MS4wLjABAAAAiXeL8UUfi0KfVrjbpc2LJKSGiPXEBomMz5i_DCbDsSYXhCJ6PZm9c7DUE1KCQ2cy",
# "req_from": "channel_pc_web",
# "cursor": "0",
# "count": "6",
# "update_version_code": "170400",
# "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": "126.0.0.0",
# "browser_online": "true",
# "engine_name": "Blink",
# "engine_version": "126.0.0.0",
# "os_name": "Windows",
# "os_version": "10",
# "cpu_core_num": "16",
# "device_memory": "8",
# "platform": "PC",
# "downlink": "10",
# "effective_type": "4g",
# "round_trip_time": "50",
# "webid": "7348375623537411636",
# "msToken": "ObBn4WzvIEsFDSPcVzMI6ES47BjSfoHLSZkFNb_Sl1Lu5ORzpNXBsijxkg94GIU5FOvcR62mwYfOL6BttOxaKDEfHBvuS06SmC5SmV88IflBhxxSkLIiE2A0EjIA\""
# }
url = "https://www.douyin.com/aweme/v1/web/comment/list/"
params = {
"device_platform": "webapp",
"aid": "6383",
"channel": "channel_pc_web",
"aweme_id": "7312767033630870799",
"cursor": "0",
"count": "20",
"item_type": "0",
"insert_ids": "",
"whale_cut_token": "",
"cut_version": "1",
"rcFT": "",
"update_version_code": "170400",
"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": "126.0.0.0",
"browser_online": "true",
"engine_name": "Blink",
"engine_version": "126.0.0.0",
"os_name": "Windows",
"os_version": "10",
"cpu_core_num": "16",
"device_memory": "8",
"platform": "PC",
"downlink": "10",
"effective_type": "4g",
"round_trip_time": "50",
"webid": "7348375623537411636",
"verifyFp": "verify_lymcdi4q_u6iSb0qE_NJtK_4BWo_8eUt_lLRNDEsEIWxQ",
"fp": "verify_lymcdi4q_u6iSb0qE_NJtK_4BWo_8eUt_lLRNDEsEIWxQ",
"msToken": "s6SsTqZoOYrZ-uwenz7c_WIBs11-0cu-3g8gEfkTUZNW1o--RQt8FRxi5RghxMhJlEgdNTx436I0foyGN6DcxY3Us8_x0dP-JXHf4RdudTLpnvn2FuAMSmDNj5Fk",
}
params_str = urllib.parse.urlencode(params)
# 使用 utf-8 编码打开文件
with open('dy_ceshi.js', 'r', encoding='utf-8') as file:
js_code = file.read()
a_bogus = execjs.compile(js_code).call('get_a_bogus', params_str)
params['a_bogus'] = a_bogus
response = requests.get(url, params=params, headers=headers, cookies=cookies)
print(response.text)
print(response.status_code)
# print(response.json())
没有结果的时候,带上cookies ,没有带 没有返回,带了以后正常返回。
代码可以直接用,唯一的就是源码要自己全部扒下来了以后,在里面添加一个 window.xxx = u .
卡了这么久,一直被补环境卡着了,找到了这个 补出来了