Python Requests使用Cookie的几种方式详解

2023-12-05 0 904
目录
  • 前言
  • 一、通过headers参数使用
  • 二、通过cookies参数使用
  • 三、通过Session会话使用
    • 方式0:自动设置
    • 方式1:通过key设置
    • 方式2:通过set 方法设置
    • 方式3:通过 add_dict_to_cookiejar 方法设置
    • 方式4:通过 RequestsCookieJar() 对象设置
    • 方式5:通过 cookiejar_from_dict 方法设置
  • 总结

    前言

    这篇文章将总结 Python Requests库中接口请求时使用Cookie的几种方式,文章使用 Postman 官网提供的接口进行演示 https://postman-echo.com

    一、通过headers参数使用

    通过headers参数使用cookie,key为Cookie,值为使用;拼接的 cookie_name=cookie_value 字符串

    import requests

    get_url = \”https://postman-echo.com/get\”
    # key为Cookie,值为使用;拼接的 cookie_name=cookie_value 字符串
    headers = {\”Cookie\”:\”cka=111a;ckb=111b\”}

    res = requests.get(url=get_url,headers=headers)

    print(res.json().get(\”headers\”).get(\”cookie\”))
    print(res.request.headers.get(\”Cookie\”))

    输出如下:

    cka=111a;ckb=111bcka=111a;ckb=111b

    二、通过cookies参数使用

    通过cookies参数使用cookie,cookies 值以字典形式提供,key为cookie_name,value为cookie_value

    import requests

    get_url = \”https://postman-echo.com/get\”
    # cookies 以字典形式提供,cookies 值以字典形式提供,key为cookie_name,value为cookie_value
    cookies = {\”cka\”:\”222a\”,\”ckb\”:\”222b\”}

    res = requests.get(url=get_url,cookies=cookies)

    print(res.json().get(\”headers\”).get(\”cookie\”))
    print(res.request.headers.get(\”Cookie\”))

    输出:

    cka=222a; ckb=222bcka=222a; ckb=222b

    注意:同时通过headers,cookies 参数传递Cookie时,只有headers传递的Cookie有效。

    三、通过Session会话使用

    通过Session会话管理Cookie,同一会话的多个请求可共享Cookie;

    在Session中添加Cookie又有多种方式

    方式0:自动设置

    在会话过程中,如果有接口响应头中有 set-cookie,则将自动添加到会话的Cookie中

    import requests

    session = requests.session()
    print(\”会话初始cookie:\”,dict(session.cookies))

    get_url = \”https://postman-echo.com/get\”
    res = session.get(url=get_url)

    print(\”响应头中set-cookie:\”,res.headers.get(\”set-cookie\”))
    print(\”会话现有cookie:\”,dict(session.cookies))

    输出:

    会话初始cookie: {}响应头中set-cookie: sails.sid=s%3ALo1-iQfueg8z1DhR_SX3KxwWA85cYN65.asZ1elFlT9g54uj%2FHkHpaZFkk0rBaCFDtRrA9anWzY4; Path=/; HttpOnly会话现有cookie: {'sails.sid': 's%3ALo1-iQfueg8z1DhR_SX3KxwWA85cYN65.asZ1elFlT9g54uj%2FHkHpaZFkk0rBaCFDtRrA9anWzY4'}

    方式1:通过key设置

    直接通过key设置cookie,但不支持设置cookie的 path、domain 等值

    import requests

    session = requests.session()
    print(\”会话初始cookie:\”,dict(session.cookies))

    # 直接通过key设置cookie,但不支持设置cookie的 path、domain 等值
    session.cookies[\”cka\”]=\”111a\”
    session.cookies[\”ckb\”]=\”111b\”

    get_url = \”https://postman-echo.com/get\”
    res = session.get(url=get_url)

    print(\”本次请求使用的cookie:\”,res.request.headers.get(\”Cookie\”))
    print(\”会话现有cookie:\”,dict(session.cookies))

    输出:

    会话初始cookie: {}本次请求使用的cookie: cka=111a; ckb=111b会话现有cookie: {'cka': '111a', 'ckb': '111b', 'sails.sid': 's%3AxtcEChogQfCYrRm9HDwAOFa4VlQQDsCZ.OR1TBpmuhX%2F2qI7mpTE0NdChrphD5AUcvcRqUF2y6NU'}

    方式2:通过set 方法设置

    通过set方法设置cookie,且支持设置path、domain等值

    import requests

    session = requests.session()
    print(\”会话初始cookie:\”,dict(session.cookies))

    # 通过set方法设置cookie,且支持设置path、domain等值
    session.cookies.set(\”ck2\”,\”222\”,path=\”/\”,domain=\”postman-echo.com\”)

    get_url = \”https://postman-echo.com/get\”
    res = session.get(url=get_url)

    print(\”本次请求使用的cookie:\”,res.request.headers.get(\”Cookie\”))
    print(\”会话现有cookie:\”,session.cookies)

    输出:

    会话初始cookie: {}本次请求使用的cookie: ck2=222会话现有cookie: <RequestsCookieJar[<Cookie ck2=222 for postman-echo.com/>, <Cookie sails.sid=s%3AZW2JtlIjc1m9D2vVrn1Io57gVB6lVQiK.SjYcItCh92iqDkVF7oI8C6q5P8KmQ5DwB%2BiD4A6Ag48 for postman-echo.com/>]>

    注意:<Cookie ck2=222 for postman-echo.com/> 可以看出 设置的 path、domain 成功了

    方式3:通过 add_dict_to_cookiejar 方法设置

    通过 requests.utils 工具包里的 add_dict_to_cookiejar 方法设置cookie,但不支持设置 path、domain 等值

    import requests

    session = requests.session()
    print(\”会话初始cookie:\”,dict(session.cookies))

    # 通过 requests.utils 工具包里的 add_dict_to_cookiejar 方法设置cookie,但不支持设置 path、domain 等值
    cookie_dict = {\”ck3a\”:\”333a\”,\”ck3b\”:\”333b\”}
    requests.utils.add_dict_to_cookiejar(session.cookies,cookie_dict=cookie_dict)

    get_url = \”https://postman-echo.com/get\”
    res = session.get(url=get_url)

    print(\”本次请求使用的cookie:\”,res.request.headers.get(\”Cookie\”))
    print(\”会话现有cookie:\”,dict(session.cookies))

    输出:

    会话初始cookie: {}本次请求使用的cookie: ck3a=333a; ck3b=333b会话现有cookie: {'ck3a': '333a', 'ck3b': '333b', 'sails.sid': 's%3AFY_7nq-hA_v9BxPaft4BHgRNiZOmDZ1S.N64IaIZ2Dd2fnfDMawbXdmJl0HfUVN7hhhGrdaFE4Bs'}

    方式4:通过 RequestsCookieJar() 对象设置

    创建一个空 RequestsCookieJar()对象,然后使用对象的set方法赋值,然后update更新到当前会话cookie,支持设置 path、domain等值

    import requests

    session = requests.session()
    print(\”会话初始cookie:\”,dict(session.cookies))

    # 创建一个空 RequestsCookieJar()对象,然后使用对象的set方法赋值,然后update更新到当前会话cookie,支持设置 path、domain等值
    ckj = requests.sessions.RequestsCookieJar()
    ckj.set(\’ck4a\’, \’444a\’, path=\’/\’, domain=\’postman-echo.com\’)
    session.cookies.update(ckj)

    get_url = \”https://postman-echo.com/get\”
    res = session.get(url=get_url)

    print(\”本次请求使用的cookie:\”,res.request.headers.get(\”Cookie\”))
    print(\”会话现有cookie:\”,dict(session.cookies))

    输出:

    会话初始cookie: {}本次请求使用的cookie: ck4a=444a会话现有cookie: {'ck4a': '444a', 'sails.sid': 's%3ANU88BiSVQAFpVUtrvSrii14jOhO_q981.MfJkY7Aw93R0Rc4V6JGi7SXPOneNJTr3p%2FNVJ9yp4Qg'}

    方式5:通过 cookiejar_from_dict 方法设置

    通过 requests.utils 工具包里的 cookiejar_from_dict 方法将字典格式的cookie转换为cookiejar对象,然后update更新到当前会话,不支持设置 path、domain 等值

    import requests

    session = requests.session()
    print(\”会话初始cookie:\”,dict(session.cookies))

    # 通过 requests.utils 工具包里的 cookiejar_from_dict 方法将字典格式的cookie转换为cookiejar对象,然后update更新到当前会话,不支持设置 path、domain 等值
    cookie_dict = {\”ck5a\”:\”555a\”,\”ck5b\”:\”555b\”}
    ckj5 = requests.utils.cookiejar_from_dict(cookie_dict=cookie_dict)
    session.cookies.update(ckj5)

    get_url = \”https://postman-echo.com/get\”
    res = session.get(url=get_url)

    print(\”本次请求使用的cookie:\”,res.request.headers.get(\”Cookie\”))
    print(\”会话现有cookie:\”,dict(session.cookies))

    输出:

    会话初始cookie: {}本次请求使用的cookie: ck5a=555a; ck5b=555b会话现有cookie: {'ck5a': '555a', 'ck5b': '555b', 'sails.sid': 's%3AWHa__ab1vTZVjGdlIpDgDFfntSYNqS2Y.y%2Fq4YhPv49C5jwNiYdVWrFsQm9B0Y202rI5xRrqlwsk'}

    总结

    到此这篇关于PythonRequests使用Cookie的几种方式的文章就介绍到这了,更多相关PythonRequests使用Cookie内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

    您可能感兴趣的文章:

    • python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
    • python编程之requests在网络请求中添加cookies参数方法详解
    • Python requests模块cookie实例解析
    • python 实现Requests发送带cookies的请求

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 Python Python Requests使用Cookie的几种方式详解 https://www.u-9.cn/jiaoben/python/100443.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务