【问题标题】:How to convert selenium.webdriver.get_cookies() to cookie text file for use with pycurl如何将 selenium.webdriver.get_cookies() 转换为 cookie 文本文件以用于 pycurl
【发布时间】:2016-09-30 06:42:36
【问题描述】:

selenium.webdriver.get_cookies() 给了我两个值/对的字典。我假设这些字典中的每一个都是一个 cookie。如何将这些 cookie 写入文本文件,该文件将使用以下代码将 cookie 从 cookie.txt 文件加载到 curl 会话?

p = pycurl.Curl()
cookiefile = open('cookie.txt', 'r')
p.setopt(pycurl.URL, my_url)
p.setopt(pycurl.COOKIEFILE, cookiefile)
p.perform()

有没有更好的方法将 cookie 从 selenium 会话传输到 curl 会话以进行文件下载?看到了关于使用pickle的帖子,但是在上面的代码中使用pickle.dump()产生的文件作为cookiefile会导致如下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: invalid arguments to setopt

我认为这是因为该文件只是 python 字典的二进制转储,而不是格式正确的文本文件。如何将这两个字典写入 pycurl 可以读取和使用的文本文件?我在 RFC6265 中找到了一些信息:

每个 cookie 都以名称-值-对开头,后跟零个或多个 属性值对。

来自 selenium.webdriver.get_cookies() 的每个字典都有一个 name 和 value 属性以及其他属性。如何将这些格式化为格式正确的 cookie.txt 文件?我不确定 RFC6265 中的语法描述:

set-cookie-header = "Set-Cookie:" SP set-cookie-string
set-cookie-string = cookie-pair *( ";" SP cookie-av )
cookie-pair       = cookie-name "=" cookie-value
...
path-av           = "Path=" path-value

所以开始吧

Set Cookie: ASP.NET_SessionId=4jqhjdiq9k12ry45ahqtux3e (path=/; secure=False; httpOnly=True; domain=www.domain.com)

然后是另一行,以 Set Cookie: 开头,第二个字典的名称和值后跟括号中的附加属性?

【问题讨论】:

    标签: python selenium curl cookies


    【解决方案1】:

    自从提出这个问题后,我发现的一切都指向了这个问题的答案:https://unix.stackexchange.com/questions/36531/format-of-cookies-when-using-wget,这也是我的问题的答案(https://curl.haxx.se/docs/http-cookies.html 说 curl 使用 netscape cookie 格式)。

    【讨论】:

      【解决方案2】:

      使用此代码

      我使用了 requests,而不是 pycurl,但我认为这会对您有所帮助。

      cookies_list = driver.get_cookies()
      cookies_dict = []
      for cookie in cookies_list:
          cookies_dict.append([cookie['name'],cookie['value']])
      cookies_dict = dict(cookies_dict)
      

      requests.get(URL, cookies=cookies_dict)
      

      这会起作用。

      【讨论】:

        猜你喜欢
        • 2021-05-03
        • 2012-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多