爬虫反爬之cookie
携带cookie的两种方式
-
直接将cookie放在请求头headers中一起作为参数
import requests url = 'xxxxxx' headers_ = { 'User-Agent': 'xxxxxxx', 'Cookie': 'xxxxx' } res_ = requests.get(url, headers=headers)
-
单独构造cookie字典(不推荐)
import requests url = 'xxxxxx' headers_ = { 'User-Agent': 'xxxxxxx', } cookie_ = { 'Cookie': 'xxxxx' } res_ = requests.get(url, headers=headers, cookies=cookie_)
不用cookie还可以怎么登录
post请求模拟登录
# 进入人人网
import requests
# 1.确认目标的url
url = 'http://www.renren.com/PLogin.do' # 这个是登录的api接口,其他网站的接口可能会比较难找
# 2.构造正常的用户代理
headers_ = {
'User-Agent': 'xxxx'
}
# 3.构造post请求携带的请求体数据:【请求体数据的载体:form表单】
form_data = {
'email': 'xxxxx',
'password': 'xxxxxx'
} # 具体的关键字根据网页而定,可以右键输入框检查看是通过什么关键字传递数据的
# 4.发送请求,得到响应对象,下面结合session用时会重写
res_ = requests.post(url_, headers=headers_, data=form_data)
data_ = res_.text
这样子requests登录之后,要去获取其他页面是没办法保持登陆状态的,
要利用 session 保持登陆状态
# 4. 配合session实现
session_ = requests.session() # 得到一个对象
session_.post(url_, headers=headers_, data=form_data)
# 之后通过这个session去请求就自动带了cookie,登陆状态。检测一下↓
url1 = 'xxxxx' # 登陆后才能访问的页面
session_.get(url1, headers=headers_) # 这里没有手动添加cookie,如果能成功访问要登录才能查看的页面,就表示成功了