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

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

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

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

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

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

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

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

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

提供了以逗號(hào)分隔的緩存指令列表。 例如:

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

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

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ā)送請(qǐng)求的計(jì)算機(jī)的系統(tǒng)操作系統(tǒng)等信息。 這是本文將特別關(guān)注的標(biāo)題,說(shuō)明如何使用請(qǐng)求設(shè)置用戶代理。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-6LX83LDp-1686048711708)(/uploads/allimg/230602/1-230602103244360.png)]

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

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

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

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

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

這會(huì)打印給定 URL 的整個(gè)標(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 獲取整個(gè)標(biāo)題字典。 在學(xué)習(xí)如何使用請(qǐng)求設(shè)置用戶代理之前,了解本節(jié)很重要。

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

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

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

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

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

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

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

該 URL 返回所使用的 Python 腳本的請(qǐng)求版本。

輸出:

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

Process finished with exit code 0

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

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

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

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

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

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

將默認(rèn)標(biāo)頭替換為預(yù)期的自定義標(biāo)頭。 因?yàn)檎?qǐng)求的源代碼對(duì)默認(rèn)標(biāo)頭有一個(gè)獨(dú)特的 CaseInsensitiveDict 實(shí)現(xiàn),所以字典變得不區(qū)分大小寫。

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

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

變量響應(yīng)的 JSON 數(shù)據(jù)存儲(chǔ)在變量數(shù)據(jù)中。 該程序從數(shù)據(jù)中搜索用戶代理,并打印使用請(qǐng)求的新設(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 中為請(qǐng)求版本 2.13 設(shè)置用戶代理請(qǐng)求

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

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

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

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

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

創(chuàng)建一個(gè)新變量 all_headers 來(lái)檢查所有標(biāo)頭,包括更新的標(biāo)頭。 它再次使用 response.request.headers 函數(shù)來(lái)存儲(chǔ)使用請(qǐng)求的標(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

另一種使用請(qǐng)求設(shè)置用戶代理的方法是像瀏覽器一樣發(fā)送請(qǐng)求。 在下面的示例中,在標(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

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

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

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

然后,session.get() 函數(shù)從 URL 加載標(biāo)頭信息。 最后,打印 session.headers['user-agent']) 語(yǔ)法以使用請(qǐng)求獲取設(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'])

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

輸出:

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

Process finished with exit code 0

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

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

相關(guān)文章

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

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

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

    python封裝json格式字符串并處理單雙引號(hào)問(wèn)題

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

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

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

    Python視頻編輯庫(kù)MoviePy的使用

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

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

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

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

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

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

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

    河池市| 乐东| 寿阳县| 邯郸市| 海盐县| 乐陵市| 江山市| 石阡县| 清远市| 当雄县| 阳春市| 吉木乃县| 福州市| 济南市| 上林县| 锡林郭勒盟| 镇江市| 普格县| 江都市| 乾安县| 札达县| 保定市| 垫江县| 宁乡县| 五原县| 云安县| 甘洛县| 海城市| 新田县| 枣阳市| 日喀则市| 琼结县| 准格尔旗| 芦山县| 乌兰察布市| 贵德县| 固镇县| 万盛区| 克什克腾旗| 房产| 六安市|