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

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)用程序期望的信息類(lèi)型的請(qǐng)求之類(lèi)的事情。

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

1.Cache-Control:Cache-Control general-header 字段表示所有緩存系統(tǒng)必須遵循的指令。 HTTP 客戶端或服務(wù)器可以使用 Cache-Control 通用標(biāo)頭來(lái)定義緩存參數(shù)或?qū)μ囟?lèi)型的文檔發(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)頭的大小寫(xiě)無(wú)關(guān)緊要,因?yàn)檫@些標(biāo)頭不區(qū)分大小寫(xiě),因此短語(yǔ) User-Agent 也可以寫(xiě)為 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),它專門(mé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)頭,然后專門(mén)更新它以使用請(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ū)分大小寫(xiě)。

創(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,這樣才能專門(mén)訪問(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)部,類(lè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)頭變量中,用戶代理字段使用瀏覽器類(lèi)型的數(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ì)話。 它類(lèi)似于早期程序使用的 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實(shí)現(xiàn)生命游戲的示例代碼(tkinter版)

    Python實(shí)現(xiàn)生命游戲的示例代碼(tkinter版)

    生命游戲是由劍橋大學(xué)約翰·何頓·康威設(shè)計(jì)的計(jì)算機(jī)程序,一時(shí)吸引了各行各業(yè)一大批人的興趣。本文將用Python實(shí)現(xiàn)這一游戲,感興趣的可以嘗試一下
    2022-08-08
  • Python根據(jù)指定文件生成XML的方法

    Python根據(jù)指定文件生成XML的方法

    這篇文章主要介紹了Python根據(jù)指定文件生成XML的方法,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 如何在django里上傳csv文件并進(jìn)行入庫(kù)處理的方法

    如何在django里上傳csv文件并進(jìn)行入庫(kù)處理的方法

    這篇文章主要介紹了如何在django里上傳csv文件并進(jìn)行入庫(kù)處理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 簡(jiǎn)單談?wù)凱ython面向?qū)ο蟮南嚓P(guān)知識(shí)

    簡(jiǎn)單談?wù)凱ython面向?qū)ο蟮南嚓P(guān)知識(shí)

    由于馬上就要期末考試了,正在抓緊時(shí)間復(fù)習(xí) 所以這一篇就拖了很久,抱歉啦~ 今天會(huì)說(shuō)說(shuō): 屬性私有,方法私有,重寫(xiě),魔術(shù)方法,需要的朋友可以參考下
    2021-01-01
  • python如何計(jì)算圓的周長(zhǎng)和面積

    python如何計(jì)算圓的周長(zhǎng)和面積

    這篇文章主要介紹了python如何計(jì)算圓的周長(zhǎng)和面積問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Python中格式化字符串的四種實(shí)現(xiàn)

    Python中格式化字符串的四種實(shí)現(xiàn)

    這篇文章主要介紹了Python中格式化字符串的四種實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • django Layui界面點(diǎn)擊彈出對(duì)話框并請(qǐng)求邏輯生成分頁(yè)的動(dòng)態(tài)表格實(shí)例

    django Layui界面點(diǎn)擊彈出對(duì)話框并請(qǐng)求邏輯生成分頁(yè)的動(dòng)態(tài)表格實(shí)例

    這篇文章主要介紹了django Layui界面點(diǎn)擊彈出對(duì)話框并請(qǐng)求邏輯生成分頁(yè)的動(dòng)態(tài)表格實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 使用pyinstaller打包django的方法實(shí)現(xiàn)

    使用pyinstaller打包django的方法實(shí)現(xiàn)

    本文主要介紹了使用pyinstaller打包django的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 如何將Pycharm中Terminal使用Powershell作為終端

    如何將Pycharm中Terminal使用Powershell作為終端

    這篇文章主要介紹了如何將Pycharm中Terminal使用Powershell作為終端問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • transform python環(huán)境快速配置方法

    transform python環(huán)境快速配置方法

    經(jīng)常在數(shù)據(jù)開(kāi)發(fā)中需要搞udf,最近發(fā)現(xiàn)transform更加方便易用,但是經(jīng)常會(huì)涉及到集群python版本不一、包不全或者部分機(jī)器上沒(méi)有安裝python。這篇文章主要介紹了transform python環(huán)境快速配置方法,需要的朋友可以參考下
    2018-09-09

最新評(píng)論