【问题标题】:HTTPCookieProcessor not serving cookiesHTTPCookieProcessor 不提供 cookie
【发布时间】:2013-04-07 01:47:10
【问题描述】:

我正在尝试访问需要 cookie 的网站。使用 urllib2 和 cookielib 我能够从该站点获得响应。 HTML 打印输出通知我,我无法通过以下行访问:

<h2>Cookies Disabled</h2>
<p> class="share-prompt"><strong>Cookies must be enabled.</strong></p>

我不明白我哪里出错了。代码如下:

import urllib2, cookielib

cookieJar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.ProxyHandler({'http':"http://216.208.156.69:3128"}),urllib2.HTTPCookieProcessor(cookieJar))
request = urllib2.Request("[website]")
response = opener.open(request)

print response.read()

谁能看到我哪里出错了?

干杯,

【问题讨论】:

    标签: python cookies urllib2


    【解决方案1】:

    代码看起来不错。例如这个的输出

    import urllib, urllib2, cookielib
    
    cookieJar = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
    params = urllib.urlencode({'cookie_name': 'cookie_value'})
    request = urllib2.Request('http://httpbin.org/cookies/set?' + params)
    opener.open(request)
    request = urllib2.Request('http://httpbin.org/cookies')
    response = opener.open(request)
    print response.read()
    

    {
      "cookies": {
        "cookie_name": "cookie_value"
      }
    }
    

    如果不向我们显示您使用的网址,就无法做到。

    【讨论】:

    • 我无法理解的是为什么在您的第 4 行中我需要定义 cookie - 这不是网站应该传递给我的东西吗?
    • 我对此进行了更深入的研究 - 没有任何内容从站点存储到 cookieJar 中。相比之下,我运行它指向 google.com 并收到 4 个 cookie。嗯……
    • @tgunn (...)这不是网站应该传递给我的吗? 是的,通常服务器会发送 cookie,而浏览器会将它们发回。在这里,我使用了非常好的 httpbin.org 服务,可以指示它向我发送 cookie。这样我可以模拟 normal web 服务器的行为。在您的真实代码中,您不需要像这样自己设置 cookie。 相比之下,我运行它指向 google.com 并收到 4 个 cookie。 有时 Web 服务器会根据您发送的 User-Agent http 标头采取不同的行为。尝试更改此标头以匹配您的浏览器发送的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2019-04-24
    • 2019-02-23
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    相关资源
    最近更新 更多