最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python操作Cookie的完全指南

 更新時間:2026年01月18日 14:19:54   作者:技術凈勝  
本文詳細介紹了Python中Cookie的應用,涵蓋了爬蟲和Web開發(fā)兩大場景,在爬蟲場景中,使用requests庫可以輕松獲取、攜帶和手動設置Cookie,在Web開發(fā)場景中,Flask和Django框架提供了設置、讀取和刪除Cookie的方法,需要的朋友可以參考下

在 Python 開發(fā)中,Cookie 的應用主要分為兩大場景:爬蟲(模擬瀏覽器獲取 / 攜帶 Cookie)Web 開發(fā)(給客戶端設置 Cookie)。

一、爬蟲場景:用 requests 庫獲取 / 攜帶 Cookie

爬蟲中操作 Cookie 的核心需求是:模擬用戶登錄狀態(tài)(如爬取需要登錄的網(wǎng)站數(shù)據(jù))、維持會話連接。requests 庫是 Python 爬蟲的首選工具,處理 Cookie 簡潔高效。

1. 前置準備

先安裝 requests 庫(若未安裝):

pip install requests

2. 場景 1:獲取網(wǎng)站返回的 Cookie

訪問網(wǎng)站時,服務器會自動返回 Cookie,用 requests 可直接提?。?/p>

import requests

\# 目標網(wǎng)站(以百度為例)

url = "https://www.baidu.com"

\# 發(fā)送請求,獲取響應

response = requests.get(url)

\# 方式1:直接獲取響應中的Cookie(RequestsCookieJar對象,類似字典)

cookies = response.cookies

print("響應Cookie(RequestsCookieJar格式):")

print(cookies)

\# 方式2:轉(zhuǎn)為字典格式(更易讀取)

cookie\_dict = requests.utils.dict\_from\_cookiejar(cookies)

print("\nCookie(字典格式):")

for key, value in cookie\_dict.items():

    print(f"{key}: {value}")

\# 方式3:獲取響應頭中的Set-Cookie(原始格式)

print("\n響應頭中的Set-Cookie:")

print(response.headers.get("Set-Cookie"))

3. 場景 2:攜帶 Cookie 發(fā)送請求(模擬登錄狀態(tài))

很多網(wǎng)站需要登錄后才能訪問核心數(shù)據(jù),此時需先登錄獲取 Cookie,再攜帶 Cookie 請求目標頁面。

示例:模擬登錄某測試網(wǎng)站(以 GitHub 簡化示例)

import requests

\# 1. 登錄接口(實際開發(fā)中替換為目標網(wǎng)站的登錄URL)

login\_url = "https://github.com/session"

\# 登錄參數(shù)(需根據(jù)網(wǎng)站表單字段調(diào)整,可通過F12抓包獲?。?

login\_data = {

    "login": "你的GitHub賬號",

    "password": "你的GitHub密碼",

    "commit": "Sign in"

}

\# 2. 創(chuàng)建會話對象(自動維持Cookie,關鍵?。?

session = requests.Session()

\# 3. 發(fā)送登錄請求(會話會自動保存登錄后的Cookie)

response = session.post(login\_url, data=login\_data)

\# 4. 攜帶Cookie訪問需要登錄的頁面(如個人主頁)

profile\_url = "https://github.com/你的用戶名"

profile\_response = session.get(profile\_url)

\# 驗證是否登錄成功(判斷頁面是否包含個人信息)

if "你的用戶名" in profile\_response.text:

    print("登錄成功,已攜帶Cookie訪問個人主頁!")

    # 查看會話中保存的Cookie

    print("\n會話中保存的Cookie:")

    for key, value in session.cookies.get\_dict().items():

        print(f"{key}: {value}")

else:

    print("登錄失敗,請檢查賬號密碼或參數(shù)格式!")

4. 場景 3:手動設置 Cookie 發(fā)送請求

若已提前獲取 Cookie(如瀏覽器中復制),可手動構造 Cookie 發(fā)送請求:

import requests

url = "https://www.baidu.com"

\# 手動構造Cookie(字典格式,從瀏覽器復制的Cookie需轉(zhuǎn)為鍵值對)

headers = {

    "Cookie": "BDUSS=xxx; BAIDUID=xxx; BIDUPSID=xxx",  # 替換為實際Cookie

    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0"  # 模擬瀏覽器

}

response = requests.get(url, headers=headers)

print("攜帶手動設置的Cookie訪問成功!")

爬蟲操作 Cookie 注意事項:

  • requests.Session()自動維持會話,避免重復處理 Cookie;
  • 登錄時的參數(shù)(如login_data)需通過瀏覽器 F12 抓包獲取,確保字段名與表單一致;
  • 部分網(wǎng)站的 Cookie 有過期時間,長時間爬取需定期重新登錄刷新 Cookie;
  • 避免頻繁請求,添加time.sleep(1)等延時,防止被封 IP。

二、Web 開發(fā)場景:Flask/Django 設置 Cookie

在 Python Web 開發(fā)中,服務器需要給客戶端(瀏覽器)設置 Cookie,用于記住用戶狀態(tài)(如登錄狀態(tài)、用戶偏好)。以下是 Flask 和 Django 框架的實操示例。

1. Flask 框架:設置 / 讀取 / 刪除 Cookie

前置準備:安裝 Flask

pip install flask

完整示例代碼:

from flask import Flask, make\_response, request

app = Flask(\_\_name\_\_)

\# 1. 設置Cookie(給客戶端發(fā)送Cookie)

@app.route("/set\_cookie")

def set\_cookie():

    # 創(chuàng)建響應對象

    response = make\_response("已為你設置Cookie!")

    

    # 設置Cookie:key=value,max\_age=過期時間(秒),path=作用路徑

    response.set\_cookie(

        key="username",

        value="zhangsan",

        max\_age=3600,  # 1小時后過期

        path="/",       # 整站生效

        secure=False,   # 本地開發(fā)設為False,HTTPS環(huán)境設為True

        httponly=True   # 禁止JavaScript讀取,提升安全性

    )

    

    # 再設置一個持久Cookie(7天過期)

    response.set\_cookie("theme", "dark", max\_age=7\*24\*3600)

    return response

\# 2. 讀取客戶端的Cookie

@app.route("/get\_cookie")

def get\_cookie():

    # 讀取Cookie:request.cookies.get(key),不存在返回None

    username = request.cookies.get("username")

    theme = request.cookies.get("theme")

    

    if username and theme:

        return f"當前Cookie:用戶名={username},主題={theme}"

    else:

        return "未檢測到Cookie,請先訪問/set\_cookie設置"

\# 3. 刪除Cookie

@app.route("/delete\_cookie")

def delete\_cookie():

    response = make\_response("已刪除Cookie!")

    # 刪除Cookie:key需與設置時一致,path需匹配

    response.delete\_cookie("username", path="/")

    response.delete\_cookie("theme", path="/")

    return response

if \_\_name\_\_ == "\_\_main\_\_":

    app.run(debug=True)

測試步驟:

  1. 運行代碼,訪問http://127.0.0.1:5000/set_cookie設置 Cookie;
  2. 訪問http://127.0.0.1:5000/get_cookie查看 Cookie;
  3. 訪問http://127.0.0.1:5000/delete_cookie刪除 Cookie。

2. Django 框架:設置 / 讀取 / 刪除 Cookie

前置準備:安裝 Django 并創(chuàng)建項目

pip install django

django-admin startproject cookie\_demo

cd cookie\_demo

python manage.py startapp user

步驟 1:配置項目(cookie_demo/settings.py)

INSTALLED_APPS中添加user

INSTALLED\_APPS = \[

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'user'  # 添加這行

]

步驟 2:編寫視圖(user/views.py)

from django.http import HttpResponse

\# 1. 設置Cookie

def set\_cookie(request):

    response = HttpResponse("Django已設置Cookie!")

    # 設置Cookie:max\_age=秒,expires=datetime(二選一)

    response.set\_cookie(

        key="user\_id",

        value="1001",

        max\_age=3600,  # 1小時過期

        path="/",

        httponly=True

    )

    return response

\# 2. 讀取Cookie

def get\_cookie(request):

    # 讀取Cookie:request.COOKIES是字典

    user\_id = request.COOKIES.get("user\_id")

    if user\_id:

        return HttpResponse(f"讀取到Cookie:user\_id={user\_id}")

    else:

        return HttpResponse("未找到Cookie,請先訪問/set\_cookie")

\# 3. 刪除Cookie

def delete\_cookie(request):

    response = HttpResponse("Django已刪除Cookie!")

    response.delete\_cookie("user\_id", path="/")

    return response

步驟 3:配置 URL(cookie_demo/urls.py)

from django.contrib import admin

from django.urls import path

from user.views import set\_cookie, get\_cookie, delete\_cookie

urlpatterns = \[

    path('admin/', admin.site.urls),

    path('set\_cookie/', set\_cookie),

    path('get\_cookie/', get\_cookie),

    path('delete\_cookie/', delete\_cookie),

]

測試步驟:

  1. 運行服務器:python ``manage.py`` runserver
  2. 訪問http://127.0.0.1:8000/set_cookie設置 Cookie;
  3. 訪問http://127.0.0.1:8000/get_cookie查看 Cookie;
  4. 訪問http://127.0.0.1:8000/delete_cookie刪除 Cookie。

Web 開發(fā)操作 Cookie 注意事項:

  • 安全配置:敏感 Cookie(如用戶 ID、登錄憑證)務必設置httponly=True(防止 XSS 攻擊)和secure=True(僅 HTTPS 傳輸);
  • 過期時間:避免設置過長的過期時間,敏感操作的 Cookie 建議 1 小時內(nèi)過期;
  • 中文處理:若需存儲中文,需用urllib.parse.quote()編碼,讀取時用urllib.parse.unquote()解碼:
\# Flask示例:存儲中文Cookie

from urllib.parse import quote, unquote

response.set\_cookie("nickname", quote("張三"), max\_age=3600)

\# 讀取中文Cookie

nickname = unquote(request.cookies.get("nickname"))
  • 跨域問題:默認 Cookie 不支持跨域,若需跨域共享 Cookie,需配置CORS_ALLOW_CREDENTIALS=True(Flask 需安裝flask-cors,Django 需配置 CORS)。

三、Python 操作 Cookie 常見問題與避坑

1. 爬蟲場景:Cookie 不生效

  • 原因:未使用requests.Session(),每次請求都是獨立會話;
  • 解決:用session = requests.Session(),所有請求通過 session 發(fā)送,自動維持 Cookie。

2. Web 開發(fā):Cookie 設置后無法讀取

  • 原因 1:path配置不一致(設置時path=/user,讀取時在/路徑);
  • 原因 2:httponly=True導致前端 JavaScript 無法讀?。ǖ蠖丝烧Wx?。?/li>
  • 解決:確保設置和讀取的path一致,根據(jù)需求調(diào)整httponly參數(shù)。

3. 中文 Cookie 亂碼

  • 原因:Cookie 默認不支持中文,直接存儲會亂碼;
  • 解決:用urllib.parse.quote()編碼,讀取時用unquote()解碼。

4. 爬蟲被封 IP

  • 原因:頻繁請求且未攜帶真實 User-Agent,被網(wǎng)站識別為爬蟲;
  • 解決:在請求頭中添加User-Agent(模擬瀏覽器),并添加合理延時。

以上就是Python操作Cookie的完全指南的詳細內(nèi)容,更多關于Python操作Cookie指南的資料請關注腳本之家其它相關文章!

相關文章

  • python3中@dataclass的實現(xiàn)示例

    python3中@dataclass的實現(xiàn)示例

    @dataclass?是 Python 3.7 引入的一個裝飾器,用于方便地定義符合數(shù)據(jù)類協(xié)議的類,本文主要介紹了python3中@dataclass的實現(xiàn)示例,感興趣的可以了解一下
    2024-02-02
  • Python利用key參數(shù)進行列表排序

    Python利用key參數(shù)進行列表排序

    在Python編程中,列表排序是高頻操作,這篇文章主要為大家詳細介紹了Python如何巧用key參數(shù)進行列表排序,感興趣的小伙伴可以跟隨小編一起學習一下
    2026-02-02
  • 解決python 3 urllib 沒有 urlencode 屬性的問題

    解決python 3 urllib 沒有 urlencode 屬性的問題

    今天小編就為大家分享一篇解決python 3 urllib 沒有 urlencode 屬性的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 1行Python代碼實現(xiàn)去除圖片水印詳解

    1行Python代碼實現(xiàn)去除圖片水印詳解

    這篇文章主要為大家介紹了1行Python代碼實現(xiàn)去除圖片水印詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Python使用SymPy解決Manim曲線繪制速度不均的問題

    Python使用SymPy解決Manim曲線繪制速度不均的問題

    這段文章詳細講解了使用SymPy進行弧長參數(shù)化以實現(xiàn)參數(shù)曲線均勻繪制的技術,通過計算弧長函數(shù)、反解參數(shù)值及數(shù)值求解,實現(xiàn)曲線繪制節(jié)奏均勻,提升視覺體驗,關鍵代碼示例及效果展示進一步說明了方法的有效性,需要的朋友可以參考下
    2026-06-06
  • Python Pygame實現(xiàn)俄羅斯方塊

    Python Pygame實現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細介紹了Python Pygame實現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Python中cx_Oracle模塊導入錯誤的解決辦法詳細指南

    Python中cx_Oracle模塊導入錯誤的解決辦法詳細指南

    在Python中使用cx_Oracle模塊連接和操作Oracle數(shù)據(jù)庫時可能遇到的錯誤,這篇文章主要介紹了Python中cx_Oracle模塊導入錯誤的解決辦法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-09-09
  • opencv+pyQt5實現(xiàn)圖片閾值編輯器/尋色塊閾值利器

    opencv+pyQt5實現(xiàn)圖片閾值編輯器/尋色塊閾值利器

    這篇文章主要介紹了opencv+pyQt5實現(xiàn)圖片閾值編輯器/尋色塊閾值利器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Python3 SSH遠程連接服務器的方法示例

    Python3 SSH遠程連接服務器的方法示例

    這篇文章主要介紹了Python3 SSH遠程連接服務器的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Python函數(shù)高級(命名空間、作用域、裝飾器)

    Python函數(shù)高級(命名空間、作用域、裝飾器)

    這篇文章介紹了Python函數(shù)的高級用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05

最新評論

阳山县| 苗栗县| 盐津县| 攀枝花市| 安西县| 勃利县| 鄂尔多斯市| 浮山县| 方正县| 石泉县| 陵川县| 襄樊市| 汕尾市| 高唐县| 广安市| 合川市| 阳朔县| 桦南县| 资兴市| 大名县| 刚察县| 仪陇县| 西盟| 依兰县| 调兵山市| 庆安县| 乐清市| 阳东县| 铁岭市| 上虞市| 响水县| 灵寿县| 漳州市| 南充市| 滕州市| 仪陇县| 杭锦旗| 杂多县| 潼关县| 天柱县| 庄河市|