Python3 中 requests 使用 Cookies 访问资源

Python3 中 requests 使用 Cookies 访问资源

Cookies 是http和https协议中用于访问时暂时记住用户身份,提供针对性资源、服务和权限的隐私数据,通过窃取用户cookies甚至可以进行包括窃取用户数据,访问、控制用户私有资源,伪装用户身份进行各种高危操作。

cookies不一定需要登录才可获得,网站会根据浏览器提供的本机部分特征,在临时访问网站时为用户提供一个唯一的cookies身份,用于记录用户近期执行的操作,访问记录,填写的表单等数据,用于针对性地提高用户体验。且最近网络爬虫、数据挖掘随着python这种灵活、低门槛、易上手的编程语言也跟着有了极高的热度和广泛的应用,而爬虫的特点就是,绕开所有网站可以产生附加价值的路径,直接获取网站关键数据,且需要对网站频繁进行网络IO访问,占用相当大量的资源,因此各大网站目前都有或简或繁的反爬虫机制,其中一种就是禁止部分爬虫常用库的默认UserAgent字段,禁止无cookie用户访问等,因此对于多数网站来说,访问网站资源,都需要附带Cookie。好在,上有政策下有对策,多数python 网络访问相关库都有cookie相关实现,这里以 requests 库为例。
Cookies
参考:

Cookies 的几种存在形式

  • 显式存在于请求头 Header 中
    如果仅仅一次性使用,可以直接在这里复制相关字段,然后直接使用CookieUserAgent字段插入Request Header中。
    在这里插入图片描述
import requests as rq
import os

header = {
	# cookie 这里就不贴出来了 ![(☆_☆)/~~]
    "Cookie": "BIDUPSID=70818************************************************",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
}

os.chdir('scrapyer')
resp = rq.get("https://www.baidu.com", headers=header)
f = open("baidu.html", "wb")
f.write(resp.content)
f.flush()
f.close()

resp = rq.get("https://www.baidu.com")
f = open("baidu_no_cookie.html", "wb")
f.write(resp.content)
f.flush()
f.close()

运行结果
可以明显看到,同一个网站,带不带cookie很可能会产生很大区别。
在这里插入图片描述
无 Cookie 效果(未登录)
在这里插入图片描述
带 Cookie 效果(已登录)
在这里插入图片描述

发布了23 篇原创文章 · 获赞 5 · 访问量 1828

猜你喜欢

转载自blog.csdn.net/QQ275176629/article/details/104452838
今日推荐