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

Python?中給請求設(shè)置用戶代理?User-Agent的方法

 更新時間:2023年06月12日 15:11:31   作者:跡憶客  
本文介紹?HTTP?標(biāo)頭用戶代理主題以及如何使用?Python?中的請求設(shè)置用戶代理,您將了解?HTTP?標(biāo)頭及其在理解用戶代理、獲取用戶代理以及學(xué)習(xí)使用?Python?中的請求設(shè)置用戶代理的多種方法方面的重要性,感興趣的朋友跟隨小編一起看看吧

本文介紹 HTTP 標(biāo)頭用戶代理主題以及如何使用 Python 中的請求設(shè)置用戶代理。 您將了解 HTTP 標(biāo)頭及其在理解用戶代理、獲取用戶代理以及學(xué)習(xí)使用 Python 中的請求設(shè)置用戶代理的多種方法方面的重要性。

了解 HTTP 標(biāo)頭的工作原理

每個 HTTP 請求和響應(yīng)都包含一系列稱為 HTTP 標(biāo)頭字段的字符串,由客戶端應(yīng)用程序和服務(wù)器發(fā)送和接收。 HTTP 標(biāo)頭允許將額外信息傳輸?shù)椒?wù)器并讓服務(wù)器發(fā)回該信息。

使用標(biāo)頭可以實(shí)現(xiàn)諸如在使用 API 時對自己進(jìn)行身份驗(yàn)證或傳達(dá)有關(guān)應(yīng)用程序期望的信息類型的請求之類的事情。

讓我們看一些 HTTP 標(biāo)頭的示例:

1.Cache-Control:Cache-Control general-header 字段表示所有緩存系統(tǒng)必須遵循的指令。 HTTP 客戶端或服務(wù)器可以使用 Cache-Control 通用標(biāo)頭來定義緩存參數(shù)或?qū)μ囟愋偷奈臋n發(fā)出特定的緩存請求。

提供了以逗號分隔的緩存指令列表。 例如:

Cache-Control : cache-request-directive|cache-response-directive
# OR
Cache-control: no-cache

1.Date :無一例外,每個 HTTP 日期/時間戳都應(yīng)始終以格林威治標(biāo)準(zhǔn)時間 (GMT) 表示。 HTTP 應(yīng)用程序可以使用以下三種日期/時間戳表示形式中的任何一種:

Sat, 22 Sep 2022 20:22:37 GMT  ; RFC 822, updated by RFC 1123
Saturday, 22-Sep-22 20:23:37 GMT ; RFC 850, obsoleted by RFC 1036
Sat Sep 22 20:24:37 2022       ; ANSI C's asctime() format

1.User Agent :它返回諸如瀏覽器版本和發(fā)送請求的計(jì)算機(jī)的系統(tǒng)操作系統(tǒng)等信息。 這是本文將特別關(guān)注的標(biāo)題,說明如何使用請求設(shè)置用戶代理。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-6LX83LDp-1686048711708)(/uploads/allimg/230602/1-230602103244360.png)]

這些標(biāo)頭的大小寫無關(guān)緊要,因?yàn)檫@些標(biāo)頭不區(qū)分大小寫,因此短語 User-Agent 也可以寫為 user-agent。

讓我們看一個如何從 URL 打印標(biāo)頭的示例。 該程序向目標(biāo) URL 發(fā)送請求,從中獲取所有標(biāo)頭,然后打印它們。

import requests
url = 'http://www.tutorialspoint.com/python'
headers = requests.get(url).headers
print(headers)

代碼的第一行導(dǎo)入 Python 庫包 requests。 創(chuàng)建一個對象變量 url,它存儲請求應(yīng)發(fā)送到的網(wǎng)站的 URL。

在變量 headers 中,request.get() 函數(shù)用于從 url 中獲取標(biāo)頭,然后保存在變量中。 最后,打印可變標(biāo)題。

這會打印給定 URL 的整個標(biāo)題字典。

輸出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
{'Content-Encoding': 'gzip', 'Age': '1490828', 'Cache-Control': 'max-age=2592000', 'Content-Type': 'text/html; charset=UTF-8', 'Date': 'Sat, 24 Sep 2022 17:50:06 GMT', 'Expires': 'Mon, 24 Oct 2022 17:50:06 GMT', 'Last-Modified': 'Wed, 07 Sep 2022 11:42:58 GMT', 'Server': 'ECAcc (tir/CD76)', 'Strict-Transport-Security': 'max-age=63072000; includeSubdomains', 'Vary': 'Accept-Encoding', 'X-Cache': 'HIT', 'X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'SAMEORIGIN', 'X-Version': 'June-1 V2', 'X-XSS-Protection': '1; mode=block', 'Content-Length': '9299'}

Process finished with exit code 0

在 Python 中獲取用戶代理數(shù)據(jù)

我們已經(jīng)了解了如何使用 Python 獲取整個標(biāo)題字典。 在學(xué)習(xí)如何使用請求設(shè)置用戶代理之前,了解本節(jié)很重要。

本節(jié)說明一個重要的接合點(diǎn),它專門在 URL 的所有標(biāo)頭中調(diào)用用戶代理并顯示它。

由于用戶代理返回瀏覽器和系統(tǒng)操作系統(tǒng)的數(shù)據(jù),這在很大程度上取決于使用什么方法訪問網(wǎng)站。 例如,網(wǎng)站 http://httpbin.org/user-agent 在使用不同的瀏覽器訪問時會返回特定的用戶代理數(shù)據(jù)。

當(dāng)使用 Firefox 訪問此 URL 時,用戶代理設(shè)置為:

使用 Google Chrome 時,用戶代理會根據(jù)它更改:

但是,當(dāng)執(zhí)行使用請求函數(shù)的 Python 腳本來獲取用戶代理時,URL 會返回請求的版本。

在下面的程序中,requests 函數(shù)用于獲取顯示與瀏覽器不同的結(jié)果的用戶代理數(shù)據(jù):

import requests
r = requests.get('http://httpbin.org/user-agent')
data = r.json()
print(data['user-agent'])

該 URL 返回所使用的 Python 腳本的請求版本。

輸出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
python-requests/2.28.1

Process finished with exit code 0

在 Python 中使用請求設(shè)置用戶代理值

本節(jié)將解釋如何在 Python 中使用請求添加自定義標(biāo)頭和設(shè)置用戶代理。 本節(jié)介紹四種使用請求設(shè)置用戶代理的不同方法。

在 Python 中為請求版本 2.12 設(shè)置用戶代理請求

如果系統(tǒng)運(yùn)行的python版本運(yùn)行requests 2.12或更老的版本,那么應(yīng)該遵循這個方法:

第一個程序展示了如何獲取默認(rèn)標(biāo)頭,然后專門更新它以使用請求設(shè)置用戶代理。

導(dǎo)入請求庫包并在對象變量中設(shè)置 URL。 在可變標(biāo)頭中,存儲庫包請求將使用的默認(rèn)標(biāo)頭的副本。

將默認(rèn)標(biāo)頭替換為預(yù)期的自定義標(biāo)頭。 因?yàn)檎埱蟮脑创a對默認(rèn)標(biāo)頭有一個獨(dú)特的 CaseInsensitiveDict 實(shí)現(xiàn),所以字典變得不區(qū)分大小寫。

創(chuàng)建一個變量響應(yīng),它以獲取請求的 URL 為目標(biāo)并獲取 URL 的響應(yīng)狀態(tài)。 如果 URL 處于活動狀態(tài)并正在運(yùn)行,它會返回代碼 - 200,并打印出來。

因?yàn)闉閡ser-agent設(shè)置了自定義的header,所以必須將response里面的數(shù)據(jù)轉(zhuǎn)換成JSON,這樣才能專門訪問像user-agent這樣的header。

變量響應(yīng)的 JSON 數(shù)據(jù)存儲在變量數(shù)據(jù)中。 該程序從數(shù)據(jù)中搜索用戶代理,并打印使用請求的新設(shè)置的用戶代理。

import requests
url = 'http://httpbin.org/user-agent'
headers = requests.utils.default_headers()
headers.update(
    {
        'User-Agent': 'My User Agent 1.0',
    }
)
response = requests.get(url, headers=headers)
print(response)
data = response.json()
print(data['user-agent'])

輸出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
<Response [200]>
My User Agent 1.0

Process finished with exit code 0

在 Python 中為請求版本 2.13 設(shè)置用戶代理請求

較新版本的請求允許通過創(chuàng)建字典直接更新標(biāo)頭。 在此示例中,程序設(shè)置了兩個標(biāo)頭 - user-agent 和 from。

兩者都是得到更新的有效 HTTP 標(biāo)頭。

request.get() 的值保存在變量 response 內(nèi)部,類似于上一個程序。 要檢查 HTTP 標(biāo)頭用戶代理是否正確更新,使用函數(shù) default_user_agent(); 此函數(shù)從 URL 中獲取默認(rèn)的用戶代理值。

在變量 previous-agent 中,使用 requests 函數(shù)保存默認(rèn)的用戶代理。 使用語法 previous_agent = requests.utils.default_user_agent(),打印該值。

我們發(fā)送的標(biāo)頭由函數(shù) response.request.headers 訪問,因此新更新的用戶代理標(biāo)頭使用語法 updated_agent = response.request.headers['user-agent'] 保存在變量 updated_agent 中,然后 它被打印出來。

創(chuàng)建一個新變量 all_headers 來檢查所有標(biāo)頭,包括更新的標(biāo)頭。 它再次使用 response.request.headers 函數(shù)來存儲使用請求的標(biāo)頭。

import requests
url = 'https://httpbin.org/get'
headers = {
    'User-Agent': 'My User Agent 1.0',
    'From': 'youremail@domain.example'
}
response = requests.get(url, headers=headers)
print(response)
previous_agent = requests.utils.default_user_agent()
print("Default user-agent header = ", previous_agent)
updated_agent = response.request.headers['user-agent']
print("Updated user-agent header = ", updated_agent)
all_headers = response.request.headers
print(all_headers)

輸出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
<Response [200]>
Default user-agent header =  python-requests/2.28.1
Updated user-agent header =  My User Agent 1.0
{'User-Agent': 'My User Agent 1.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'From': 'youremail@domain.example'}

Process finished with exit code 0

另一種使用請求設(shè)置用戶代理的方法是像瀏覽器一樣發(fā)送請求。 在下面的示例中,在標(biāo)頭變量中,用戶代理字段使用瀏覽器類型的數(shù)據(jù)進(jìn)行更新。

import requests
url = 'http://httpbin.org/user-agent'
headers = {'User-Agent': 'user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, '
                         'like Gecko) Chrome/105.0.0.0 Safari/537.36'}
response = requests.get(url.strip(), headers=headers, timeout=10)
previous_agent = requests.utils.default_user_agent()
print("Default user-agent header = ", previous_agent)
updated_agent = response.request.headers['user-agent']
print("Updated user-agent header = ", updated_agent)

輸出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
Default user-agent header =  python-requests/2.28.1
Updated user-agent header =  user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

Process finished with exit code 0

另一種使用請求設(shè)置用戶代理的簡單方法是使用模塊會話,這樣就無需重復(fù)設(shè)置標(biāo)頭。

對象變量會話使用函數(shù) requests.Session() 加載 URL 會話。 它類似于早期程序使用的 get 請求。

新的用戶代理標(biāo)頭通過 session.headers.update() 函數(shù)更新。

然后,session.get() 函數(shù)從 URL 加載標(biāo)頭信息。 最后,打印 session.headers['user-agent']) 語法以使用請求獲取設(shè)置的用戶代理的更新信息。

import requests
session = requests.Session()
session.headers.update({'User-Agent': 'Custom user agent'})
session.get('https://httpbin.org/headers')
print(session.headers['user-agent'])

程序使用請求和會話設(shè)置用戶代理后,它會打印會話中加載的更新標(biāo)頭。

輸出:

C:\python38\python.exe "C:/Users/Win 10/main.py"
Custom user agent

Process finished with exit code 0

這篇文章已經(jīng)徹底解釋了如何使用請求設(shè)置用戶代理以及如何獲取它們。 閱讀完本文后,讀者可以輕松地在 Python 中使用 requests 設(shè)置 user-agent。

到此這篇關(guān)于如何在 Python 中給請求設(shè)置用戶代理 User-Agent的文章就介紹到這了,更多相關(guān)Python User-Agent用戶代理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python文件讀寫操作基礎(chǔ)知識和實(shí)戰(zhàn)應(yīng)用

    Python文件讀寫操作基礎(chǔ)知識和實(shí)戰(zhàn)應(yīng)用

    本文系統(tǒng)講解了Python文件操作的基礎(chǔ)知識和實(shí)戰(zhàn)技巧,涵蓋文件打開關(guān)閉、讀寫方法、指針控制、二進(jìn)制處理、異常處理及性能優(yōu)化策略,同時展望了異步IO、內(nèi)存映射增強(qiáng)等未來趨勢,需要的朋友可以參考下
    2025-06-06
  • python封裝json格式字符串并處理單雙引號問題

    python封裝json格式字符串并處理單雙引號問題

    大家好,本篇文章主要講的是python封裝json格式字符串并處理單雙引號問題,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 用Python做個自動化彈鋼琴腳本實(shí)現(xiàn)天空之城彈奏

    用Python做個自動化彈鋼琴腳本實(shí)現(xiàn)天空之城彈奏

    突然靈機(jī)一動,能不能用Python自動化腳本彈奏一曲美妙的鋼琴曲呢?今天就一起帶大家如何用Python實(shí)現(xiàn)自動化彈出一首《天空之城》有需要的朋友可以借鑒參考下
    2021-09-09
  • Python視頻編輯庫MoviePy的使用

    Python視頻編輯庫MoviePy的使用

    這篇文章主要介紹了Python視頻編輯庫MoviePy的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python 找出list中最大或者最小幾個數(shù)的索引方法

    python 找出list中最大或者最小幾個數(shù)的索引方法

    今天小編就為大家分享一篇python 找出list中最大或者最小幾個數(shù)的索引方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python出現(xiàn)RuntimeError錯誤問題及解決

    python出現(xiàn)RuntimeError錯誤問題及解決

    這篇文章主要介紹了python出現(xiàn)RuntimeError錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python實(shí)現(xiàn)折半查找和歸并排序算法

    python實(shí)現(xiàn)折半查找和歸并排序算法

    這篇文章主要介紹了python實(shí)現(xiàn)折半查找和歸并排序算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 最新評論

    蕉岭县| 柳江县| 云南省| 修文县| 山东省| 德兴市| 永丰县| 韶关市| 江华| 定结县| 扎赉特旗| 聂拉木县| 通州市| 大悟县| 中方县| 富民县| 宣化县| 扎赉特旗| 唐海县| 松桃| 池州市| 浙江省| 荥阳市| 蒲江县| 商水县| 乐山市| 淮阳县| 建德市| 平谷区| 渝中区| 渭源县| 中牟县| 肥东县| 邯郸市| 青海省| 开江县| 台东市| 陆丰市| 陇南市| 锡林郭勒盟| 运城市|