5.3版本以“4 2 1”模式启动的main.py未将cookie加入请求函数的请求头中
xueli12 opened this issue · 3 comments
使用的是5.3版本,win10系统,从源码运行出现以下问题:
1.如下图,设置"default_mode": "4 2 1"后,无法获取数据
2.后来改回default_mode:0,可以正常获取数据
从上面的步骤可以明确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时的请求头:
第二张图是default_mode为0时的请求头:
遇到同样的问题+1
因为获取 cookie
参数是耗时操作,并且在子线程执行,获取完毕才会添加到请求头,问题不在于设置了 default_mode
,而是操作过快,未更新请求头就开始发送请求,如果设置了 default_mode
,可以尝试启动程序后等待片刻再下载作品,5.4
版本将会优化。
因为获取
cookie
参数是耗时操作,并且在子线程执行,获取完毕才会添加到请求头,问题不在于设置了default_mode
,而是操作过快,未更新请求头就开始发送请求,如果设置了default_mode
,可以尝试启动程序后等待片刻再下载作品,5.4
版本将会优化。
我现在的临时解决方案是在请求函数中先判断一下headers是否包含了cookie字段,如果没有则把self里面的cookie转换为str格式加到请求头中