簡體   English   中英

導致此錯誤的python中的HTTPX和請求模塊有什么區別

[英]What's the difference between HTTPX and requests module in python that is causing this error

不多說,我正在向某個 url 發送請求。 一個 HTTP 客戶端返回 403,一個成功。 標題沒有區別。 還有什么可以不同的?

>>> print(httpx.get(url).status_code)
200
>>> print(requests.get(url).status_code)
403

我的猜測是該網站正在阻止來自請求庫的請求。

這怎么可能?

對於每個請求,您都會留下制造它的設備的指紋 此指紋在其他信息中包含user-agent

當您使用請求庫進行請求時,默認用戶代理值設置為“python-requests/2.28.0”,而對於 httpx 庫,它類似於“python-httpx/0.23.0”。

根據您的指紋網站中包含的信息,您可能會選擇以不同於其他人的方式處理您的請求。 例如返回錯誤頁面而不是真實內容。

但為什么?

Python 通常用於網絡抓取,請求是更流行的庫之一。 許多人會選擇在他們的項目中使用它。 因此,許多網站選擇不為使用“python-requests/*”用戶代理的請求提供真實內容。

因為處理請求需要花錢,所以網站試圖只向真實的人而不是機器人提供內容。 與真人相比,機器人流量也往往更大。 雖然有些人只是想禁止第三方以他們不喜歡或不知道的方式使用他們的內容。

Httpx 庫也在做同樣的事情,但它不像請求庫那樣廣為人知,因此您會發現更多沒有阻止此類請求的網站。

是否可以繞過阻塞?

是的,有很多關於該主題的在線資源。 只需搜索“避免請求阻塞”之類的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM