ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

requests手动添加cookies

2021-11-19 13:01:38  阅读:149  来源: 互联网

标签:cookies get 手动 cookie key requests response


简介:在接口测试中,大多数项目的接口是需要登录后进行操作的,经常用到requests库进行模拟登录及登录后的操作。

相关文章:

1、sanic:读、写、删除cookies
2、http库三剑客:requests

案例解析:
1、本案例中,假设登录接口为:http://127.0.0.1:3031/cookie

2、登录完成后得到cookies

<RequestsCookieJar[<Cookie key=024f4347-cac8-4a01-9082-3e47378c697c for 127.0.0.1/>, <Cookie test="generate cookies" for 127.0.0.1/>]>

3、登录完成后通过手动新增cookies,并在再次请求时,将my_cookie 传给cookies

my_cookie = dict()
for k, v in res.cookies.items():
    my_cookie[k] = v
res2 = requests.get(url="http://127.0.0.1:3031/check_cookie", cookies=my_cookie)

4、服务端在检查cookies的正确性。

test_cookie = request.cookies.get('test')
key_cookie = request.cookies.get('key')

if test_cookie == 'generate cookies' and key_cookie == key:
    return response.redirect("/home")
else:
    return response.redirect("/login")

获取cookies:

import requests

response = requests.get("https://www.zhihu.com")
print(response.cookies)
for key, value in response.cookies.items():
    print(key + '=' + value)

# 执行结果
# <RequestsCookieJar[<Cookie _xsrf=4syf8BxI1p5x3pmf8PVbSvQOui001Lng for .zhihu.com/>]>
# _xsrf=4syf8BxI1p5x3pmf8PVbSvQOui001Lng

服务端源码:

import uuid
from sanic import Sanic
from sanic import response
from sanic.response import json, text

app = Sanic(__name__)

key = str(uuid.uuid4())


@app.get("/check_cookie")
async def check(request):
    test_cookie = request.cookies.get('test')
    key_cookie = request.cookies.get('key')

    if test_cookie == 'generate cookies' and key_cookie == key:
        return response.redirect("/home")
    else:
        return response.redirect("/login")


@app.route("/cookie")
async def test(request):
    response = text("There's a cookie up in this response")
    response.cookies['test'] = 'generate cookies'
    response.cookies['key'] = str(key)
    print("cookies:", response.cookies)
    return response


if __name__ == "__main__":
    app.run(host="127.0.0.1", port=3031, auto_reload=True)

客户端源码:

import requests


def login1():
    url = 'http://127.0.0.1:3031/cookie'
    res = requests.get(url)
    print(res.status_code)
    print(res.cookies)
    res2 = requests.get(url="http://127.0.0.1:3031/check_cookie")
    print(res2.url)


def login2():
    url = 'http://127.0.0.1:3031/cookie'
    res = requests.get(url)
    print(res.status_code)
    print(res.cookies)

    my_cookie = dict()
    for k, v in res.cookies.items():
        my_cookie[k] = v
    print("my_cookie:", my_cookie)
    res2 = requests.get(url="http://127.0.0.1:3031/check_cookie", cookies=my_cookie)
    print(res2.url)


if __name__ == '__main__':
    login1()
    print("*" * 100)
    login2()

运行服务端:
图片
运行客户端:
图片
服务端生成cookies和检验cookies的正确性:
图片

最终:
1、未登录成功的重定向到:http://127.0.0.1:3031/login
2、登录成功的重定向到:http://127.0.0.1:3031/home

微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!

标签:cookies,get,手动,cookie,key,requests,response
来源: https://blog.csdn.net/hzblucky1314/article/details/121419913

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有