亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

了解 HTTP 標頭的工作原理

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

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

讓我們看一些 HTTP 標頭的示例:

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

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

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

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

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

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

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

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

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

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

這會打印給定 URL 的整個標題字典。

輸出:

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 獲取整個標題字典。 在學習如何使用請求設置用戶代理之前,了解本節(jié)很重要。

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

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

當使用 Firefox 訪問此 URL 時,用戶代理設置為:

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

但是,當執(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 中使用請求設置用戶代理值

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

在 Python 中為請求版本 2.12 設置用戶代理請求

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

第一個程序展示了如何獲取默認標頭,然后專門更新它以使用請求設置用戶代理。

導入請求庫包并在對象變量中設置 URL。 在可變標頭中,存儲庫包請求將使用的默認標頭的副本。

將默認標頭替換為預期的自定義標頭。 因為請求的源代碼對默認標頭有一個獨特的 CaseInsensitiveDict 實現(xiàn),所以字典變得不區(qū)分大小寫。

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

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

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

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 設置用戶代理請求

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

兩者都是得到更新的有效 HTTP 標頭。

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

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

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

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

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

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

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ù) requests.Session() 加載 URL 會話。 它類似于早期程序使用的 get 請求。

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

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

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

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

輸出:

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

Process finished with exit code 0

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

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

相關(guān)文章

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

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

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

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

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

    如何在django里上傳csv文件并進行入庫處理的方法

    這篇文章主要介紹了如何在django里上傳csv文件并進行入庫處理的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 簡單談談Python面向?qū)ο蟮南嚓P(guān)知識

    簡單談談Python面向?qū)ο蟮南嚓P(guān)知識

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

    python如何計算圓的周長和面積

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

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

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

    django Layui界面點擊彈出對話框并請求邏輯生成分頁的動態(tài)表格實例

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

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

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

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

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

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

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

最新評論