JoeanAmier / TikTokDownloader

TikTok 主页/合辑/直播/视频/图集/原声;抖音主页/视频/图集/收藏/直播/原声/合集/评论/账号/搜索/热榜数据采集工具
https://github.com/JoeanAmier/TikTokDownloader/wiki/Documentation
GNU General Public License v3.0
7.15k stars 1.16k forks source link

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

Open xueli12 opened 3 months ago

xueli12 commented 3 months ago

使用的是5.3版本,win10系统,从源码运行出现以下问题: 1.如下图,设置"defaultmode": "4 2 1"后,无法获取数据 ![( ANEB@48K@G8UP@4LFK$9](https://github.com/JoeanAmier/TikTokDownloader/assets/51438016/d71460f1-ceac-4969-bfd0-76f820141df7) 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

lxucs commented 3 months ago

遇到同样的问题+1

JoeanAmier commented 3 months ago

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

xueli12 commented 3 months ago

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

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