以下是获取cookies的一段代码,运行时是没有问题的。
r = await session.post(url, data=postData)
if r.status == 200:
print ("Get Cookie Success!( Account:%s )" % account)
cookie = r.cookies
print (cookie)
cookies.append(cookie)
else:
pass
# 释放连接
await r.release()
下图上边的红色框是上边代码的输出,如果程序中有bug,不管有什么bug时都会自动打印图中下边红色框的信息,上下两个红框中的cookies为什么不一样?post的url只有一个且返回的都是200。网上找了很久也找不到答案,望指教,谢谢!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
阅读源码一步一步定位后问题找到了,第一个红框输出的是
ClientResponse.cookies,第二个红框是出错时在ClientResponse.__del__经一番调用后在ClientResponse.__repr__输出的ClientResponse.headers。而
cookies是从headers提取的,使用的方法是http.cookies.SimpleCookie.load,最后发现是BaseCookie里的__parse_string方法在使用正则表达式匹配时有问题。正则表达式如下:这段在匹配
expires=Saturday, 06-Mar-2027 02:32:46 GMT;时第一次获取的key是expires,val是Saturday,,第二次获取的key是06-Mar-2027,val是None在函数里return了,因为不能正确解释expires所以造成cookies和headers关于cookie信息不一样。