[转]request处理cookie的两种方法

本文详细介绍如何使用Python的Requests库获取和使用Cookie。包括手动设置Cookie、自动获取Cookie的方法,以及如何将Cookie应用于会话和请求中。适用于绕过网站验证和保持登录状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


python提供了一个非常强大的第三方库 requests处理 http协议。今天讲的重点就是如何使用requests处理cookie。

1 获取cookie

#导入requests包
import requests

targetURL = '目标网站地址'

#设置头UA
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}

#开启一个session会话
session = requests.session()

#设置请求头信息
session.headers = headers

#申明一个用于存储手动cookies的字典
manual_cookies={}

##打开手动设置的cookies文件
#部分网站需要滑动验证,这里通过浏览器登录成功后获取cookies手动存到文本来绕过验证,后续cookies自动更新
with open("manual_cookies.txt",'r',encoding='utf-8') as frcookie:
    cookies_txt = frcookie.read().strip(';')  #读取文本内容
    #手动分割添加cookie
    for item in cookies_txt.split(';'):
        name,value=item.strip().split('=',1)  #用=号分割,分割1次
        manual_cookies[name]=value  #为字典cookies添加内容

#将字典转为CookieJar:
cookiesJar = requests.utils.cookiejar_from_dict(manual_cookies, cookiejar=None,overwrite=True)

#将cookiesJar赋值给会话
session.cookies=cookiesJar

#向目标网站发起请求
res = session.get(targetURL)

#将CookieJar转为字典:
res_cookies_dic = requests.utils.dict_from_cookiejar(res.cookies)

#将新的cookies信息更新到手动cookies字典
for k in res_cookies_dic.keys():
    manual_cookies[k] = res_cookies_dic[k]

print(manual_cookies)

#重新将新的cookies信息写回文本
res_manual_cookies_txt = ""

#将更新后的cookies写入到文本
for k in manual_cookies.keys():
    res_manual_cookies_txt += k+"="+manual_cookies[k]+";"

#将新的cookies写入到文本中更新原来的cookies
with open('manual_cookies.txt',"w",encoding="utf-8") as fwcookie:
    fwcookie.write(res_manual_cookies_txt);

自动获取,先写登录方法,等登录成功后从response报文中得到cookie。有些登录很简单,只需要用户名,密码就可以。有些登录还有验证码,有验证码的登陆可以验证码自动识别的方式获取。当然,有验证码的登陆,有些也可以直接使用cookie来绕过验证码。这种方式就必须熟悉cookie怎么用。

2 使用cookie

2.1 cookies是字典格式

这种cookie不能放在headers里

cookies = {
      name1 :value1,
      name2:value2
}

response = request.post(url, data=data, cookies=cookies)

2.2使用requests.session,

通过CookieJar来处理cookie

session = requests.session()
# cookie处理,将字典类型的cookie转换成cookiejar,由session自动处理cookie,报文请求的时候就不需要再加上cookie了。见上面的例子,已经写的很详细了,不需要再写了

2.3 headers中加cookie。

headers = { 
	'User-Agent':'Apache-HttpClient/4.5.2 (Java/1.8.0_66)',
	'cookie':'_zap=191e4816-acf0-41ab-85ca-c54c2ff9ca1f; d_c0="ABCsEEAYPQ2PTofKIlzwxMJDdb8R-_6iVQA=|'
}

response = requests.post(url,data=data,headers=headers)

参考文章:
https://blog.youkuaiyun.com/sunny_happy08/article/details/83507873

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值