以下是获取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。网上找了很久也找不到答案,望指教,谢谢!
ソース コードを読んで問題を段階的に特定すると、最初の赤いボックスの出力は
ClientResponse.cookies
で、2 番目の赤いボックスはClientResponse のエラーです。 __del__
。いくつかの呼び出しの後、ClientResponse.__repr__
にClientResponse.headers
が出力されます。そして、
cookies
はheaders
から抽出され、使用されたメソッドはhttp.cookies.SimpleCookie.load
であり、最終的にであることがわかります。 > 正規表現マッチングを使用する場合、BaseCookie
の__parse_string
メソッドに問題があります。正規表現は次のとおりです: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
リーリーexpires=Saturday, 06-Mar-2027 02:32:46 GMT;
に一致するときに初めて取得されたkey
はexpires
です。val
はSaturday,
で、2 回目に取得したkey
は06-Mar-2027
,です。 >val
は関数return
でNone
です。expires
が正しく解釈できないため、cookie
が発生します。 > Cookie 情報に関してはheaders
とは異なります。 🎜