hyisangie

爬虫反爬之cookie

携带cookie的两种方式

  1. 直接将cookie放在请求头headers中一起作为参数

    import requests
    
    url = 'xxxxxx'
    headers_ = {
        'User-Agent': 'xxxxxxx',
        'Cookie': 'xxxxx'
    }
    res_ = requests.get(url, headers=headers)
    
  2. 单独构造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,如果能成功访问要登录才能查看的页面,就表示成功了

posted on 2021-08-16 20:12  hyisangie  阅读(181)  评论(0编辑  收藏  举报

导航