JoeanAmier/TikTokDownloader

5.3版本以“4 2 1”模式启动的main.py未将cookie加入请求函数的请求头中

xueli12 opened this issue · 3 comments

使用的是5.3版本,win10系统,从源码运行出现以下问题:
1.如下图,设置"default_mode": "4 2 1"后,无法获取数据
( ANEB@48K@G8UP@4LFK_$9
2.后来改回default_mode:0,可以正常获取数据
6Z3GHKBJH8K~6 )ZW7V{5A

从上面的步骤可以明确cookie是没问题的。

稍微改了下源码验证了下:
headers_to_send = headers or self.PC_headers
try:
response = request(
method,
url,
params=params,
proxies=self.proxies,
timeout=self.timeout,
headers=headers_to_send, **kwargs)
print(f"Sent request to {url} with headers: {headers_to_send} and additional parameters: {kwargs}")
wait()

经验证default_mode:0模式下,send_request函数中的请求头中含有cookie,但在default_mode为421时,请求头中并未设置cookie,具体如下:
第一张图是default_mode为421时的请求头:
}}SZ1LSPQPXC0DK)V5GX0 C
第二张图是default_mode为0时的请求头:

OXH@%@2QN$2PKT~LQ@89__U

遇到同样的问题+1

因为获取 cookie 参数是耗时操作,并且在子线程执行,获取完毕才会添加到请求头,问题不在于设置了 default_mode,而是操作过快,未更新请求头就开始发送请求,如果设置了 default_mode,可以尝试启动程序后等待片刻再下载作品,5.4 版本将会优化。

因为获取 cookie 参数是耗时操作,并且在子线程执行,获取完毕才会添加到请求头,问题不在于设置了 default_mode,而是操作过快,未更新请求头就开始发送请求,如果设置了 default_mode,可以尝试启动程序后等待片刻再下载作品,5.4 版本将会优化。

我现在的临时解决方案是在请求函数中先判断一下headers是否包含了cookie字段,如果没有则把self里面的cookie转换为str格式加到请求头中