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

Posted

技术标签:

【中文标题】如何使用 Python 登录网页并检索 cookie 以供以后使用?【英文标题】:How to use Python to login to a webpage and retrieve cookies for later usage? 【发布时间】:2010-09-16 09:58:58 【问题描述】:

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

我将如何在 python 中执行此操作(最好是 2.6)?如果可能的话,我只想使用内置模块。

【问题讨论】:

【参考方案1】:
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 会更安全吗? @Heartinpiece 是的,如果服务器提供它,您应该使用 HTTPS。 谢谢...但是想象一下我们登录并想发布...如何在此线程中设置coockie以获取发布数据? 如果您正在编写大型代码,强烈建议使用 requests 库。 (个人经历) @HarleyHolcombe 与此代码等效的 Python 3 是什么?【参考方案2】:

这是一个使用出色的 requests 库的版本:

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)

【讨论】:

在这个例子中,'action': 'login' 真的是必要的,还是只是一个额外的参数,随请求一起发送? @Ted 那部分是完全需要的。 @Ted 也许在这个特定的例子中是必需的。我的程序不需要它。 这是我所知道的最好的。您可能需要根据网站数据。

以上是关于如何使用 Python 登录网页并检索 cookie 以供以后使用?的主要内容,如果未能解决你的问题,请参考以下文章

20180909 解析JS Cookie的设置,获取和检索

Python网络爬虫---使用已登录的cookie访问需要登录的网页

如何从 POST 请求中检索 cookie?

Python要求使用网站登录

Python 从安全网站获取数据

C# 网页登录并获取cookie,并在不打开浏览器的情况下对网页进行相关操作。高分求相关代码或指导。