Python 创建 cookie,然后使用 cookie 加载页面

标签 python cookies python-3.x httplib2

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

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

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

最佳答案

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

cookies

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

这是一个在执行 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 header 字段字典。如果返回 cookie,您将看到包含 cookie 值的“set-cookie”字段。我们希望将此值放入后续请求的传出 HTTP header 中:

header ['Cookie'] = 响应['set-cookie']

现在我们可以使用这个 header 发送一个请求,它将包含 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))

header = {'Cookie': 响应['set-cookie']}

url = 'http://www.example.com/home'
响应,内容 = http.request(url, 'GET', headers=headers)

关于Python 创建 cookie,然后使用 cookie 加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4349147/

相关文章:

python - Python/Django 中的 Unicode 与 UTF-8 混淆?

python - 不同等级的 Matmul

Python-子进程

python - 更改默认 float 打印格式

python - 在文本中的特定位置插入字符串

Python:检测变量何时超过阈值区间

在第三方网站的 iframe 中访问时,未为子域设置 Django csrf cookie

node.js - 如何从 node.js 中的请求模块获取 cookie?

web - 在 ASP.NET Web 中添加多个 Set-Cookie header

python-3.x - 值错误 :unsupported format character 'd' (0x64) at index %Id