ホームページ >バックエンド開発 >Python チュートリアル >Python でプロキシを使用する方法

Python でプロキシを使用する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-16 12:00:05951ブラウズ

How to Use Proxies in Python

Python を少し使ったことがある方、特にデータ スクレイピングの場合、おそらく、取得したデータを取得しようとしているときにブロックされる状況に遭遇したことがあるでしょう。欲しい。このような状況では、プロキシの使用方法を知っておくと便利なスキルです。

この記事では、プロキシとは何か、プロキシがなぜ役立つのか、Python のライブラリ リクエストを使用してプロキシを使用する方法について説明します。

プロキシとは何ですか?

プロキシとは何かを定義することから始めましょう。

プロキシ サーバーは、コンピュータとインターネットの間の「仲介者」と考えることができます。 Web サイトにリクエストを送信すると、リクエストは最初にプロキシ サーバーを通過します。その後、プロキシはリクエストを Web サイトに転送し、レスポンスを受信して​​、それを送り返します。このプロセスでは、IP アドレスがマスクされ、リクエストが自分のデバイスではなくプロキシ サーバーから送信されているかのように見えます。

当然のことですが、これには多くの結果と用途があります。たとえば、厄介な IP 制限を回避したり、匿名性を維持したりするために使用できます。

Webスクレイピングでプロキシを使用する理由は何ですか?

それでは、なぜデータをスクレイピングするときにプロキシが役立つのでしょうか?そうですね、理由は前に説明しました。たとえば、これらを使用して一部の制限を回避できます。

したがって、Web スクレイピングの特定のケースでは、次の理由で役立ちます:

  • IP ブロックの回避: Web サイトは、単一の IP が短時間に多数のリクエストを行うなど、不審なアクティビティを監視することがよくあります。 プロキシを使用すると、リクエストがブロックされるのを避けるために複数の IP に分散できます。
  • 地理的制限の回避: 一部のコンテンツは特定の場所からのみアクセスでき、プロキシを使用すると、別の国からサイトにアクセスしているように見えます。
  • プライバシーの強化: プロキシは、実際の IP アドレスを隠すことでスクレイピング活動の匿名性を保つのに役立ちます。

リクエストを使用して Python でプロキシを使用する方法

リクエスト ライブラリは、Python で HTTP リクエストを作成するための一般的な選択肢であり、プロキシをリクエストに組み込むのは簡単です。

その方法を見てみましょう!

有効なプロキシの取得

まず最初に、有効なプロキシを実際に使用する前に取得する必要があります。これを行うには、2 つのオプションがあります:

  • 無料プロキシ: 無料プロキシ リストなどの Web サイトからプロキシを無料で取得できます。これらは簡単にアクセスできますが、信頼性が低かったり、速度が遅かったりする可能性があります。
  • 有料プロキシ: 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 アドレスではなく、プロキシ サーバーの 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 アドレスが定期的に、またはリクエストごとに変更されます。

このソリューションをテストしたい場合は、リストを使用してプロキシを手動でローテーションするか、プロキシ ローテーション サービスを使用するかの 2 つのオプションがあります。

両方のアプローチを見てみましょう!

プロキシのリストの使用

プロキシのリストがある場合は、次のように手動でローテーションできます。

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 でのプロキシの使用は、Web スクレイピング、テスト、地理的に制限されたコンテンツへのアクセスにとって貴重なテクニックです。これまで見てきたように、ライブラリ リクエストを使用すると、プロキシを HTTP リクエストに簡単に統合できます。

Web からデータをスクレイピングする際のいくつかのヒント:

  • Web サイトのポリシーを尊重します: Web サイトの robots.txt ファイルと利用規約を常に確認してください。
  • 例外を処理する: ネットワーク操作はさまざまな理由で失敗する可能性があるため、必ず例外を処理し、必要に応じて再試行を実装してください。
  • 資格情報を保護します: 認証されたプロキシを使用している場合は、資格情報を安全に保管し、スクリプトにハードコーディングしないでください。

コーディングを楽しんでください!

以上がPython でプロキシを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。