【问题标题】:Python create cookies and then load a page with the cookiesPython 创建 cookie,然后使用 cookie 加载页面
【发布时间】:2010-12-03 19:27:47
【问题描述】:


我想从 python 程序访问网页。 我必须设置 cookie 才能加载页面。
我使用了httplib2库,但是我没有找到如何添加自己的cookie

resp_headers, content = h.request("http://www.theURL.com", "GET")

如何创建具有正确名称和值的 cookie,将其添加到函数中,然后加载页面?
谢谢

【问题讨论】:

    标签: python cookies python-3.x httplib2


    【解决方案1】:

    来自http://code.google.com/p/httplib2/wiki/Examples希望能有所帮助)

    Cookie

    在自动化某些事情时,您通常需要“登录”以维护与服务器的某种会话/状态。有时这是通过基于表单的身份验证和 cookie 来实现的。您将表单发布到服务器,它会在传入的 HTTP 标头中使用 cookie 进行响应。您需要在后续请求中将此 cookie 传递回服务器以保持状态或保持会话活动。

    这里是一个示例,说明在进行 HTTP Post 时如何处理 cookie。

    首先,让我们导入我们将使用的模块:

    导入 urllib 导入 httplib2

    现在,让我们定义我们需要的数据。在这种情况下,我们正在做一个表单帖子,其中包含代表用户名和密码的 2 个字段。

    url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'} headers = {'Content-type': 'application/x-www-form-urlencoded'}

    现在我们可以发送 HTTP 请求了:

    http = httplib2.Http() 响应,内容 = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))

    此时,我们的“响应”变量包含服务器返回的 HTTP 标头字段字典。如果返回 cookie,您将看到包含 cookie 值的“set-cookie”字段。我们想要获取这个值并将其放入后续请求的传出 HTTP 标头中:

    标头['Cookie'] = 响应['set-cookie']

    现在我们可以使用此标头发送请求,它将包含 cookie,因此服务器可以识别我们。

    所以...这是脚本中的全部内容。我们登录一个站点,然后使用我们收到的 cookie 发出另一个请求:

    #!/usr/bin/env python 导入 urllib 导入 httplib2 http = httplib2.Http() url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'} headers = {'Content-type': 'application/x-www-form-urlencoded'} 响应,内容 = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body)) 标头 = {'Cookie': 响应['set-cookie']} url = 'http://www.example.com/home' 响应,内容 = http.request(url, 'GET', headers=headers)

    【讨论】:

      【解决方案2】:
      http = httplib2.Http()
      # get cookie_value here
      headers = {'Cookie':cookie_value}
      response, content = http.request("http://www.theURL.com", 'GET', headers=headers)
      

      您可能需要添加另一个标头参数来指定另一个 HTTP 请求参数。

      【讨论】:

        【解决方案3】:

        你也可以只使用 urllib2

                import urllib2
        
                opener = urllib2.build_opener()
                opener.addheaders.append(('Cookie', 'cookie1=value1;cookie2=value2'))
                f = opener.open("http://www.example.com/")
                the_page_html = f.read()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-01
          • 2020-03-14
          • 1970-01-01
          • 2012-11-22
          • 1970-01-01
          • 2014-11-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多