如何使用Python登录网页并检索Cookie以供以后使用?

如何使用Python登录网页并检索Cookie以供以后使用?,python,http,authentication,cookies,Python,Http,Authentication,Cookies,我想用python下载和解析网页,但要访问它,我需要一些cookies集。因此,我需要先通过https登录到该网页。登录时刻包括向/login.php发送两个POST参数(用户名、密码)。在登录请求期间,我想从响应头中检索cookie并存储它们,以便在请求中使用它们下载网页/data.php 我将如何在python(最好是2.6)中实现这一点?如果可能,我只想使用内置模块 import urllib, urllib2, cookielib username = 'myuser' passwor

我想用python下载和解析网页,但要访问它,我需要一些cookies集。因此,我需要先通过https登录到该网页。登录时刻包括向/login.php发送两个POST参数(用户名、密码)。在登录请求期间,我想从响应头中检索cookie并存储它们,以便在请求中使用它们下载网页/data.php

我将如何在python(最好是2.6)中实现这一点?如果可能,我只想使用内置模块

import urllib, urllib2, cookielib

username = 'myuser'
password = 'mypassword'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
opener.open('http://www.example.com/login.php', login_data)
resp = opener.open('http://www.example.com/hiddenpage.php')
print resp.read()

resp.read()
是您要打开的页面的直接html,您可以使用
opener
使用会话cookie查看任何页面。

以下是使用优秀库的版本:


这安全吗?这不允许包嗅探器看到明文密码吗?使用Https会更安全吗?@HeartInPice是的,如果服务器提供Https,你应该使用Https。谢谢你…但是想象一下我们登录并想发布某个内容…如何在此线程中设置发布数据的coockie?如果你正在编写大型代码,强烈建议使用请求库。(个人经验)@HarleyHolcombe与此代码等价的Python 3是什么?在本例中,
的“操作”:“登录”
实际上是必需的,还是只是随请求发送的一个额外参数?@Ted完全需要该部分。@Ted在本例中可能是必需的。这在我的课程中是不需要的。这是我所知道的最好的。您可能需要根据网站提供数据。
from requests import session

payload = {
    'action': 'login',
    'username': USERNAME,
    'password': PASSWORD
}

with session() as c:
    c.post('http://example.com/login.php', data=payload)
    response = c.get('http://example.com/protected_page.php')
    print(response.headers)
    print(response.text)