首页 > 编程语言 >Python中用requests处理cookies的3种方法

Python中用requests处理cookies的3种方法

时间:2023-12-04 11:13:46浏览次数:36  
标签:cookies headers Python url cookie login requests

在接口测试中,大多数项目的接口是需要登录后进行操作的,经常用到requests库进行模拟登录及登录后的操作,下面是我不断踩坑后总结出来的关于登录凭证cookies的3种操作方法。

一. 用 requests.utils.dict_from_cookiejar() 把返回的cookies转换成字典

  1. 处理cookies:

import requests

def login():
login_url = 'http://www.xxx.com/login
headers = {
"Accept": "application/json, text/javascript, */*; q=0.01"
}
body = {
"usercode": "liuzz05@****.com",
"password": "123456"
}
try:
res = requests.post(url=login_url, headers=headers, data=body)
cookies = res.cookies

cookie = requests.utils.dict_from_cookiejar(cookies)

return cookie
except Exception as err:
print('获取cookie失败:\n{0}'.format(err))

 

2. 使用cookie:

import requests
 
 def get_data():
     cookie = login()
     res = requests.get(url=get_data_url, cookies=cookie)
     print(res.text)

二. 遍历cookies的键值,拼接成cookie格式

  1. 处理cookies:

import requests

def login():
login_url = 'http://www.xxx.com/login
headers = {
"Accept": "application/json, text/javascript, */*; q=0.01"
}
body = {
"usercode": "liuzz05@****.com",
"password": "123456"
}
try:
res = requests.post(url=login_url, headers=headers, data=body)
cookies = res.cookies.items()

cookie = ''
for name, value in cookies:
cookie += '{0}={1};'.format(name, value)

return cookie
except Exception as err:
print('获取cookie失败:\n{0}'.format(err))

 

2. 使用cookie:

import requests

def get_data():
cookie = login()
headers = {
"cookie": cookie
}
res = requests.get(url=get_data_url, headers=headers)
print(res.text)

 

三. 直接拼接cookies,这种方法比较傻,前提是要知道cookies的键

  1. 处理cookies:

import requests

def login():
login_url = 'http://www.xxx.com/login
headers = {
"Accept": "application/json, text/javascript, */*; q=0.01"
}
body = {
"usercode": "liuzz05@****.com",
"password": "123456"
}
try:
res = requests.post(url=login_url, headers=headers, data=body)
cookies = res.cookies

phpsessid = cookies['phpsessid']
env_orgcode = cookies['env_orgcode']
acw_tc = cookies['acw_tc']
aliyungf_tc = cookies['aliyungf_tc']
last_env = cookies['last_env']

cookie = 'phpsessid={0};env_orgcode={1};acw_tc{2};aliyungf_tc={3};last_env={4}'.format(
phpsessid, env_orgcode, acw_tc, aliyungf_tc, last_env
)

return cookie
except Exception as err:
print('获取cookie失败:\n{0}'.format(err))

 

2. 使用cookie:

import requests

def get_data():
cookie = login()
headers = {
"cookie": cookie
}
res = requests.get(url=get_data_url, headers=headers)
print(res.text)

标签:cookies,headers,Python,url,cookie,login,requests
From: https://www.cnblogs.com/testwjr/p/17874421.html

相关文章

  • [oeasy]python0002_终端_CLI_GUI_编程环境_游戏_真实_元宇宙
    回忆 上次了解了python语言的特点历史悠久功能强大深受好评已成趋势 3大主流操作系统macwindowslinux      添加图片注释,不超过140字(可选)  我们选择linux作为基础系统 ......
  • 浅写一个Python脚本归档Windows的截图
    添加到计划任务每月运行fromdatetimeimportdatetimeimportos#这里使用了Windows的环境变量,需在计划任务中指定你的用户PATH_SCREENSHOTS=r'C:\Users\%USERNAME%\Pictures\Screenshots'PATH_7Z=r'C:\ProgramFiles\7-Zip\7z.exe'ifos.path.isfile(r'C:\Progra......
  • Python基础 continue; pass; break;
    在Python中,pass、continue和break都是在循环中使用的控制语句,但它们的作用是不同的。pass是一个空操作语句,它的作用是保持程序的控制流程,不做任何事情。当你在编写代码时,如果你需要一个语句块,但你还没有决定在里面放什么,你可以使用pass。例如,在创建一个空的类或者函数时,你可能会使......
  • 【让AI女友跟我表白】大白话说Python+Flask入门(四)Flask Sijax的使用
    写在前面先吐槽两句,搞个mysql安装配置弄了4个小时,怎么都是外网无法访问,我靠,我特么也是服了。当然,后来我投降了,明天再说,学什么不是学,娘的,换个方向,状态依然在!Sijax是什么?代表SimpleAjax,它是一个Python/jQuery库,使用jQuery.ajax来进行AJAX请求用的。安装依赖pipinstallflas......
  • 【python笔记】subprocess,调用外部程序
    importsubprocesssubprocess.run("notepad")将会打开记事本。如果当前路径下有个叫test.txt,而想用记事本打开这个文本文件:importsubprocesssubprocess.run(["notepad","test.txt"])执行cmd命令:importsubprocesscmd="echoI'mhandsome"subpro......
  • opencv-python
    第一步,确认环境pipinstallopencv-pythonpipinstallopencv-contrib-python12第二步,下载模型WeChatCVGutHub:link备用地址:link第三步,识别二维码importcv2fromcv2.wechat_qrcodeimportWeChatQRCodedetector=WeChatQRCode(detector_prototxt_path="qr_mode/detect.pro......
  • python 正则表达式总结
    python正则表达式总结#findall找出所有的,match从第一个字符开始找,fullmatch全句完全匹配,search从任意位置开始找text="jack最好,jack最好的,jack最好了,jack是最好的"pattern="jack最好"print(re.findall(pattern,text))输出:['jack最好',......
  • 学习记录:用python实现井字棋小游戏
    1.实现双人井字棋 创建3*3矩阵 制作下棋函数 制作判断获胜函数 2.实现简单ai 在输入下棋位置后自动在空位下棋 3.复杂化 自动寻找下后获胜的位置 若无则判断对手是否即将获胜并进行堵截 仍无则在随机空位下棋 新手上路出现了很多啼笑皆非的bug 诸如在print下方出现N......
  • Python 的 tqdm 如果在内部使用print打印 会重复打印进度条 怎么避免这个问题?
    要避免在使用Python的tqdm库时在内部使用print打印时重复打印进度条,您可以通过使用tqdm库提供的特殊函数tqdm.write()来实现。tqdm.write()函数会将输出写入到标准输出,而不会干扰进度条的显示。下面是一个示例:fromtqdmimporttqdmimporttime#创建一个范围为10的进度条fori......
  • python日志模块回顾
    日志模块配置文件logging.yamlversion:1formatters:simple:format:'[%(asctime)s%(thread)d][%(levelname)s]%(message)s'#日志内容的格式化,具体参数问GPT或百度dateformat:'%Y-%m-%d%H:%M:%S.%f'handlers:console:class:logging.StreamHand......