欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?Requests使用Cookie的幾種方式詳解

 更新時間:2023年07月14日 10:03:17   作者:小青龍  
這篇文章主要給大家介紹了關于Python?Requests使用Cookie的幾種方式,Python中的requests庫可以使用cookie來維持會話狀態(tài),實現(xiàn)登錄等操作,需要的朋友可以參考下

前言

這篇文章將總結 Python Requests庫中接口請求時使用Cookie的幾種方式,文章使用 Postman 官網提供的接口進行演示 https://postman-echo.com

一、通過headers參數(shù)使用

通過headers參數(shù)使用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=111b
cka=111a;ckb=111b

二、通過cookies參數(shù)使用

通過cookies參數(shù)使用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=222b
cka=222a; ckb=222b

注意:同時通過headers,cookies 參數(shù)傳遞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("會話現(xiàn)有cookie:",dict(session.cookies))

輸出:

會話初始cookie: {}
響應頭中set-cookie: sails.sid=s%3ALo1-iQfueg8z1DhR_SX3KxwWA85cYN65.asZ1elFlT9g54uj%2FHkHpaZFkk0rBaCFDtRrA9anWzY4; Path=/; HttpOnly
會話現(xiàn)有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("會話現(xiàn)有cookie:",dict(session.cookies))

輸出:

會話初始cookie: {}
本次請求使用的cookie: cka=111a; ckb=111b
會話現(xiàn)有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("會話現(xiàn)有cookie:",session.cookies)

輸出:

會話初始cookie: {}
本次請求使用的cookie: ck2=222
會話現(xiàn)有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("會話現(xiàn)有cookie:",dict(session.cookies))

輸出:

會話初始cookie: {}
本次請求使用的cookie: ck3a=333a; ck3b=333b
會話現(xiàn)有cookie: {'ck3a': '333a', 'ck3b': '333b', 'sails.sid': 's%3AFY_7nq-hA_v9BxPaft4BHgRNiZOmDZ1S.N64IaIZ2Dd2fnfDMawbXdmJl0HfUVN7hhhGrdaFE4Bs'}

方式4:通過 RequestsCookieJar() 對象設置

創(chuàng)建一個空 RequestsCookieJar()對象,然后使用對象的set方法賦值,然后update更新到當前會話cookie,支持設置 path、domain等值

import requests

session = requests.session()
print("會話初始cookie:",dict(session.cookies))

# 創(chuàng)建一個空 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("會話現(xiàn)有cookie:",dict(session.cookies))

輸出:

會話初始cookie: {}
本次請求使用的cookie: ck4a=444a
會話現(xiàn)有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("會話現(xiàn)有cookie:",dict(session.cookies))

輸出:

會話初始cookie: {}
本次請求使用的cookie: ck5a=555a; ck5b=555b
會話現(xiàn)有cookie: {'ck5a': '555a', 'ck5b': '555b', 'sails.sid': 's%3AWHa__ab1vTZVjGdlIpDgDFfntSYNqS2Y.y%2Fq4YhPv49C5jwNiYdVWrFsQm9B0Y202rI5xRrqlwsk'}

總結

到此這篇關于Python Requests使用Cookie的幾種方式的文章就介紹到這了,更多相關Python Requests使用Cookie內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python中淺拷貝copy與深拷貝deepcopy的簡單理解

    Python中淺拷貝copy與深拷貝deepcopy的簡單理解

    今天小編就為大家分享一篇關于Python中淺拷貝copy與深拷貝deepcopy的簡單理解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Python中的類與類型示例詳解

    Python中的類與類型示例詳解

    這篇文章主要給大家介紹了關于Python中類與類型的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • python 爬取百度文庫并下載(免費文章限定)

    python 爬取百度文庫并下載(免費文章限定)

    這篇文章主要介紹了python 爬取百度文庫并下載的示例,幫助大家更好的理解和學習python 爬蟲的相關知識,感興趣的朋友可以了解下
    2020-12-12
  • Python 修改列表中的元素方法

    Python 修改列表中的元素方法

    今天小編就為大家分享一篇Python 修改列表中的元素方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 利用Python腳本生成sitemap.xml的實現(xiàn)方法

    利用Python腳本生成sitemap.xml的實現(xiàn)方法

    最近項目中需要用腳本生成sitemap,中間學習了一下sitemap的格式和lxml庫的用法。把結果記錄一下,方便以后需要直接拿來用。下面這篇文章主要介紹了利用Python腳本生成sitemap.xml的實現(xiàn)方法,需要的朋友可以參考借鑒,一起來看看吧。
    2017-01-01
  • 利用Python實現(xiàn)批量打包程序的工具

    利用Python實現(xiàn)批量打包程序的工具

    auto-py-to-exe與pyinstaller都無法直接一次性打包多個程序,想打包多個程序需要重新操作一遍。所以本文將用Python實現(xiàn)批量打包程序的工具,感興趣的可以了解一下
    2022-07-07
  • Python調用服務接口的實例

    Python調用服務接口的實例

    今天小編就為大家分享一篇Python調用服務接口的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • numpy添加新的維度:newaxis的方法

    numpy添加新的維度:newaxis的方法

    今天小編就為大家分享一篇numpy添加新的維度:newaxis的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Django在視圖中使用表單并和數(shù)據庫進行數(shù)據交互的實現(xiàn)

    Django在視圖中使用表單并和數(shù)據庫進行數(shù)據交互的實現(xiàn)

    本文主要介紹了Django在視圖中使用表單并和數(shù)據庫進行數(shù)據交互,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 基于Python的PIL庫學習詳解

    基于Python的PIL庫學習詳解

    這篇文章主要介紹了基于Python的PIL庫學習詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05

最新評論