Python怎样实现Cookie自动登录?

开发 前端
当用户首次登录一个网站时,网站往往会要求用户输入用户名和密码,并且给出自动登录选项供用户勾选。

当用户首次登录一个网站时,网站往往会要求用户输入用户名和密码,并且给出自动登录选项供用户勾选。用户如果勾选了自动登录选项,那么在下一次访问该网站时,不用输入用户名和密码便可以登录,这是因为第一次登录时服务器发送了包含登录凭证的Cookie到用户硬盘上,第二次登录时浏览器发送了Cookie,服务器验证Cookie后就识别了用户的身份,用户便无须输入用户名和密码。

Cookie(有时也用其复数形式Cookies)是指某些网站为了辨别用户身份、进行会话跟踪,而暂时存储在客户端的一段文本数据(通常经过加密)。

在Requests库中,发送请求时可以通过两种方式携带Cookie,一种方式是直接将包含Cookie信息的请求头传入请求函数的headers参数;另一种方式是将Cookie信息传入请求函数的cookies参数。不过,cookies参数需要接收一个RequestsCookieJar类的对象,该对象类似于一个字典,会以名称(Name)与值(Value)的形式存储Cookie。

下面以登录后的百度首页为例,分别通过上述两种方式演示如何使用Requests实现Cookie登录。

第1种方式的实现代码如下:

import requests
headers = {
   'cookie':‘此处填写登录百度网站后查看的Cookie信息’,设置字段Cookie
   'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4)'
                 'ApplewebKit/537.36 (KHTML, like Gecko)'
                 'Chrome/53.0.2785.116 Safari/537.36',}€设置字段User-Agent
response = requests.get('https://www.baidu.com/', headers=headers)
print(response.tgkt)

第2种方式的实现代码如下:

import requests
header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) '
                        'AppleWebKit/537.36 (KHTML,1ike Gecko)'
                        'Chrome/53.0.2785.116 Safari/537.36'}
# 准备Cookie
cookie='此处填写登录百度网站后查看的cookie信息'
# 创建RequestsCookieJar类的对象
jar_obj = requests.cookies.RequestsCookieJar()
# 以逗号为分隔符分隔Cookie.并将获得的键和值保存至jar_obj中
for temp in cookie.split(';'):
   key, value = temp.split('=', 1)
   jar_obj.set(key, value)
response = requests.get('https://www.baidu.com/',
           headers=header, cookies=jar_obj)
print (response,text)

上述两段代码的运行结果如下。

······
"userAttr":Number("")|| 0,
"username":"Itcast_001122",
"unametype":"2",
"userIsSkined":"off",
"userIsNewSkined":"off",
"userSkinName":"",
"userSkinOpacity":"70",
······

由加粗部分的代码可以看出,程序输出的网页源代码包含了用户名Itcast_001122。这说明我们成功地访问了登录后的百度首页。


责任编辑:华轩 来源: 今日头条
相关推荐

2018-09-29 15:15:40

ChromeGoogle浏览器

2016-12-22 09:11:24

Windows 10Windows 8Windows 7

2009-12-10 17:37:28

PHP Cookie登

2009-08-25 16:16:27

C#调用Windows

2011-01-18 11:31:37

2021-07-15 11:35:27

Python自动追踪代码

2009-08-06 16:02:05

无Cookie会话

2018-02-23 14:13:39

前端Cookie用户登录

2010-07-22 10:35:34

自动登录telnet

2021-06-07 11:25:47

Python自动追踪代码

2010-06-28 14:56:27

ftp命令

2009-06-18 15:49:31

jQuery插件

2023-07-27 08:44:49

2023-03-09 08:12:08

免登录实Python脚本

2019-09-19 11:52:59

Linux脚本语言Vim

2020-12-17 09:20:44

Python自动扫雷脚本

2010-08-02 08:49:25

2010-04-27 15:19:11

Unix密钥

2009-12-30 17:19:09

Silverlight

2012-06-01 09:44:26

Python
点赞
收藏

51CTO技术栈公众号