【问题标题】:How to use same cookies in multiple request in python?如何在python的多个请求中使用相同的cookie?
【发布时间】:2010-07-24 00:51:26
【问题描述】:

我正在使用此代码:

def req(url, postfields):
    proxy_support = urllib2.ProxyHandler({"http" : "127.0.0.1:8118"})
    opener = urllib2.build_opener(proxy_support) 
    opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    return opener.open(url).read()

做一个简单的http get请求(使用tor作为代理)。

现在我想知道如何使用同一个 cookie 发出多个请求。

例如:

req('http://loginpage', 'postfields')
source = req('http://pageforloggedinonly', 0)
#do stuff with source
req('http://anotherpageforloggedinonly', 'StuffFromSource')

我知道我的函数 req 还不支持 POST,但是我已经使用 httplib 发送了 postfields,所以我想我可以自己弄清楚,但我不明白如何使用 cookie,我看到了一些示例但它们都只是一个请求,我想在后续请求中重用第一个登录请求中的 cookie,或者保存/使用文件中的 cookie(就像 curl 一样),这将使一切变得更容易。

我发布的代码只是为了说明我想要实现的目标,我想我会在最终的应用程序中使用 httplib(2)。

更新:

cookielib.LWPCOKieJar 工作正常,这是我为测试所做的示例:

import urllib2, cookielib, os

def request(url, postfields, cookie):
    urlopen = urllib2.urlopen
    cj = cookielib.LWPCookieJar()
    Request = urllib2.Request

    if os.path.isfile(cookie):
        cj.load(cookie)

    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    urllib2.install_opener(opener)
    txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}

    req = Request(url, postfields, txheaders)
    handle = urlopen(req)
    cj.save(cookie)
    return handle.read()

print request('http://google.com', None, 'cookie.txt')

【问题讨论】:

    标签: python http cookies httprequest


    【解决方案1】:

    cookielib 模块是您执行此操作所需要的。有一个不错的 tutorial 有一些代码示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 2015-10-11
      • 2019-09-07
      • 2019-11-29
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多