网站首页 > 技术文章 正文
当用户首次登录一个网站时,网站往往会要求用户输入用户名和密码,并且给出自动登录选项供用户勾选。用户如果勾选了自动登录选项,那么在下一次访问该网站时,不用输入用户名和密码便可以登录,这是因为第一次登录时服务器发送了包含登录凭证的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。这说明我们成功地访问了登录后的百度首页。
猜你喜欢
- 2024-09-27 urllib用账号密码登陆,携带cookie访问链接
- 2024-09-27 简单说说爬虫这个神奇的工具(简单说说爬虫这个神奇的工具怎么写)
- 2024-09-27 python接口自动化(十三)--cookie绕过验证码登录(详解)
- 2024-09-27 一键生成 QQ 历史报告,谁最在意你?
- 2024-09-27 Python爬虫Resquests库的使用(python爬虫re库如何换行)
- 2024-09-27 开源:仿网易云音乐Android客户端(安卓开发仿网易云)
- 2024-09-27 你要偷偷的学Python,然后惊呆所有人(第十一天)
- 2024-09-27 package-lock.json的作用?(packagelockjson是做什么用的)
- 2024-09-27 Python保存Cookie到TXT文件(python的cookies)
- 2024-09-27 python爬虫实战之Headers信息校验-Cookie
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)