首先, cookie就是保存在客户端(浏览器)上的一个字符串. 在每次发送请求时, 浏览器会自动的带上cookie的信息传递给服务器.
尤其在用户登录后, 为了能准确的获取到用户登录信息. cookie一般都会在请求是跟随请求头一起提交到服务器.
保存登录状态
它能自动帮我们管理和维护cookie.
注意:?它能自动维护的只能是响应头返回的cookie.?js动态添加的cookie. 它可管不了.
import requests
# 1.创建一个session
session = requests.session()
# 2.可以提前给session设置好请求头或者cookie
session.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36"
}
# 可用, 可不用
# session.cookies = {
# # 可以把一些cookie的内容塞进来, 这里要的是字典
# }
# 3. 发请求
# 登录
url = "https://passport.xxx.com/ck/user/login"
data = {
"loginName": "xxxxxx",
"password": "xxxxxxx",
}
# requests.post(url, data=data)
# https 证书异常, 在请求参数中添加verify=False
session.post(url, verify=False, data=data) # resp.header set-cookie
# javascript不管
# 后续的所有请求. 都会带着cookie
url = "https://user.xxx.com/ck/author/shelf?page=1&appKey=2406394919"
resp_2 = session.get(url)
# print(resp_2.text)
# 保持会话 -> session
采用Referer 设置本次url来源,
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
# 防盗链,意义:本次请求是由哪个url产生的
"Referer": url
????????当我们反复抓取一个网站时, 由于请求过于频繁, 服务器很可能会将你的IP进行封锁来反爬. 应对方案就是通过网络代理的形式进行伪装.
????????从图可以得知. 对于目标网站来说. 是通过代理服务器发送的请求. 也就可以避免你的IP被封锁了.
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
}
proxies = {
"http": "http://223.96.90.216:8085"
}
resp = requests.get("http://www.baidu.com/s?ie=UTF-8&wd=ip", headers=headers, proxies=proxies)
resp.encoding="utf-8"
print(resp.text)