python - 为什么aiohttp的response里的cookies和程序出错时库里自动打印的cookies不一样?
迷茫
迷茫 2017-04-18 10:25:00
0
1
929

以下是获取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。网上找了很久也找不到答案,望指教,谢谢!

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(1)
刘奇

Après avoir lu le code source et localisé le problème étape par étape, le problème a été trouvé. La première sortie de la boîte rouge est ClientResponse.cookies, et la deuxième boîte rouge est la sortie dans ClientResponse.__del__ après quelques appels dans ClientResponse.__repr__. lorsque l'erreur s'est produite >. ClientResponse.headers et
sont extraits de cookies, et la méthode utilisée est headers Enfin, il a été constaté que la méthode http.cookies.SimpleCookie.load dans BaseCookie a un problème lors de l'utilisation de la correspondance d'expressions régulières. L'expression régulière est la suivante : __parse_string

_CookiePattern = re.compile(r"""
    \s*                            # Optional whitespace at start of cookie
    (?P<key>                       # Start of group 'key'
    [""" + _LegalKeyChars + r"""]+?   # Any word of at least one letter
    )                              # End of group 'key'
    (                              # Optional group: there may not be a value.
    \s*=\s*                          # Equal Sign
    (?P<val>                         # Start of group 'val'
    "(?:[^\"]|\.)*"                  # Any doublequoted string
    |                                  # or
    \w{3},\s[\w\d\s-]{9,11}\s[\d:]{8}\sGMT  # Special case for "expires" attr
    |                                  # or
    [""" + _LegalValueChars + r"""]*      # Any word or empty string
    )                                # End of group 'val'
    )?                             # End of optional value group
    \s*                            # Any number of spaces.
    (\s+|;|$)                      # Ending either at space, semicolon, or EOS.
    """, re.ASCII | re.VERBOSE)    # re.ASCII may be removed if safe.
Lorsque est associé à

, le expires=Saturday, 06-Mar-2027 02:32:46 GMT; obtenu pour la première fois est key, et expires est val Le Saturday, obtenu pour la deuxième fois est key, et <.> est 06-Mar-2027 est val dans la fonction. Parce que None ne peut pas être interprété correctement, les informations des cookies de return et expires sont différentes. cookies

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal