Python创建cookie,然后加载带有cookie的页面

Mac*_*Fly 4 python cookies httplib2 python-3.x


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

resp_headers, content = h.request("http://www.theURL.com", "GET")
Run Code Online (Sandbox Code Playgroud)

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

sul*_*tan 12

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

饼干

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

以下是在执行HTTP Post时如何处理cookie的示例.

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

import urllib
import 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()
response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))

此时,我们的"response"变量包含服务器返回的HTTP头字段的字典.如果返回了cookie,您将看到包含cookie值的"set-cookie"字段.我们想要获取此值并将其放入传出的HTTP标头中以用于后续请求:

headers['Cookie'] = response['set-cookie']

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

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

#!/usr/bin/env python

import urllib
import httplib2

http = httplib2.Http()

url = 'http://www.example.com/login'   
body = {'USERNAME': 'foo', 'PASSWORD': 'bar'}
headers = {'Content-type': 'application/x-www-form-urlencoded'}
response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))

headers = {'Cookie': response['set-cookie']}

url = 'http://www.example.com/home'   
response, content = http.request(url, 'GET', headers=headers)


kha*_*hik 6

http = httplib2.Http()
# get cookie_value here
headers = {'Cookie':cookie_value}
response, content = http.request("http://www.theURL.com", 'GET', headers=headers)
Run Code Online (Sandbox Code Playgroud)

您可能希望添加其他标头参数以指定其他HTTP请求参数.