首頁  >  文章  >  後端開發  >  如何在 Python 中使用代理

如何在 Python 中使用代理

Linda Hamilton
Linda Hamilton原創
2024-11-16 12:00:05876瀏覽

How to Use Proxies in Python

如果您已經使用 Python 了一段時間,特別是在資料抓取的特定情況下,您可能遇到過在嘗試檢索資料時被阻止的情況。想。在這種情況下,了解如何使用代理是一項方便的技能。

在本文中,我們將探討什麼是代理、它們為何有用,以及如何透過 Python 中的函式庫請求來使用它們。

什麼是代理?

讓我們從頭開始定義什麼是代理。

您可以將代理伺服器視為電腦與網際網路之間的「中間人」。當您向網站發送請求時,該請求首先透過代理伺服器。然後,代理商將您的請求轉發到網站,接收回應並將其發送回給您。此過程會封鎖您的 IP 位址,使請求看起來像是來自代理伺服器而不是您自己的裝置。

可以理解,這有很多後果和用途。例如,它可以用來繞過一些討厭的 IP 限制,或保持匿名。

為什麼在網頁抓取中使用代理程式?

那麼,為什麼代理程式在抓取資料時可能會有所幫助?嗯,我們之前已經給了理由。例如,您可以使用它們來繞過某些限制。

因此,在網頁抓取的特定情況下,它們可能會很有用,原因如下:

  • 避免 IP 封鎖:網站經常監視可疑活動,例如單一 IP 在短時間內發出大量請求。 使用代理有助於將您的請求分發到多個 IP,從而避免被封鎖。
  • 繞過地理限制:某些內容只能從某些位置訪問,代理可以幫助您看起來就像是從其他國家/地區訪問該網站一樣。
  • 增強隱私:代理程式可透過隱藏您的真實 IP 位址來保持您的抓取活動匿名。

如何在Python中使用請求來使用代理

requests 函式庫是在 Python 中發出 HTTP 請求的熱門選擇,並且將代理合併到您的請求中非常簡單。

讓我們看看如何!

獲取有效代理

首先要做的事情是:在實際使用代理之前,您必須獲得有效的代理。為此,您有兩種選擇:

  • 免費代理:您可以從免費代理清單等網站免費取得代理。它們很容易訪問,但是,它們可能不可靠或很慢。
  • 付費代理:Bright Data 或 ScraperAPI 等服務提供可靠的代理,具有更好的性能和支持,但您必須付費。

使用代理處理請求

現在您已經有了代理列表,您可以開始使用它們了。例如,您可以像這樣建立字典:

proxies = {
    'http': 'http://proxy_ip:proxy_port',
    'https': 'https://proxy_ip:proxy_port',
}

現在您可以使用代理程式發出請求:

import requests

proxies = {
    'http': 'http://your_proxy_ip:proxy_port',
    'https': 'https://your_proxy_ip:proxy_port',
}

response = requests.get('https://httpbin.org/ip', proxies=proxies)

要查看請求的結果,您可以列印回應:

print(response.status_code)  # Should return 200 if successful
print(response.text)         # Prints the content of the response

請注意,如果一切順利,回應應該顯示代理伺服器的 IP 位址,而不是您的。

使用請求的代理身份驗證:使用者名稱和密碼

如果您的代理需要身份驗證,您可以透過多種方式處理。

方法 1:在代理 URL 中包含憑證
要包含使用者名稱和密碼來管理代理程式中的身份驗證,您可以這樣做:

proxies = {
    'http': 'http://username:password@proxy_ip:proxy_port',
    'https': 'https://username:password@proxy_ip:proxy_port',
}

方法2:使用HTTPProxyAuth
或者,您可以使用 HTTPProxyAuth 類別來處理驗證,如下所示:

from requests.auth import HTTPProxyAuth

proxies = {
    'http': 'http://proxy_ip:proxy_port',
    'https': 'https://proxy_ip:proxy_port',
}

auth = HTTPProxyAuth('username', 'password')

response = requests.get('https://httpbin.org/ip', proxies=proxies, auth=auth)

如何使用旋轉代理處理請求

如果您發出大量請求,使用單一代理程式可能還不夠。在這種情況下,您可以使用輪換代理:這會定期或根據請求更改代理 IP 位址。

如果您想測試此解決方案,您有兩個選擇:使用清單手動輪換代理或使用代理輪換服務。

讓我們來看看這兩種方法吧!

使用代理列表

如果您有代理列表,您可以手動輪換它們,如下所示:

import random

proxies_list = [
    'http://proxy1_ip:port',
    'http://proxy2_ip:port',
    'http://proxy3_ip:port',
    # Add more proxies as needed
]

def get_random_proxy():
    proxy = random.choice(proxies_list)
    return {
        'http': proxy,
        'https': proxy,
    }

for i in range(10):
    proxy = get_random_proxy()
    response = requests.get('https://httpbin.org/ip', proxies=proxy)
    print(response.text)

使用代理輪換服務

ScraperAPI 等服務可以為您處理代理程式輪替。您通常只需要更新他們提供的代理 URL 並管理 URL 字典,如下所示:

proxies = {
    'http': 'http://your_service_proxy_url',
    'https': 'https://your_service_proxy_url',
}

response = requests.get('https://httpbin.org/ip', proxies=proxies)

結論

在 Python 中使用代理程式對於網頁抓取、測試和存取地理限制內容來說是一項很有價值的技術。如我們所見,使用庫請求將代理程式整合到 HTTP 請求中非常簡單。

從網路上抓取資料時的一些技巧:

  • 尊重網站政策:請務必檢查網站的 robots.txt 檔案和服務條款。
  • 處理異常:網路操作可能會因各種原因而失敗,因此請確保處理異常並在必要時實施重試。
  • 保護您的憑證:如果您使用經過驗證的代理,請確保您的憑證安全並避免將其硬編碼到腳本中。

編碼愉快!

以上是如何在 Python 中使用代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn