Pythonでプロキシを使う方法

ハウツー, プロキシ, パイソン, 11月-1520225分で読める

コンピュータ・サイエンスの分野で仕事をしていると、「プロキシ」という言葉をよく目にする。インターネットに接続されると、すべてのコンピュータは、コンピュータとその地理的位置を識別する一意のインターネットプロトコル(IP)アドレスを取得します。コンピュータは、インターネットから何らかの情報を必要とするたびにリクエストを送信します。リクエストは

目次

コンピュータ・サイエンスの分野で仕事をしていると、「プロキシ」という言葉をよく目にする。インターネットに接続されると、すべてのコンピュータは、コンピュータとその地理的位置を識別する一意のインターネットプロトコル(IP)アドレスを取得します。あなたのコンピュータは、インターネットから何らかの情報を必要とするたびにリクエストを送信します。リクエストは、要求されている情報のタイプをチェックするターゲットコンピュータに送信されます。ターゲットコンピュータは、IPアドレスに情報を提供することが許可されている場合、情報を送り返します。時には、コンピュータは特定されることなくインターネットから情報を得ようとします。その情報は通常ブロックされるが、クライアントとサーバー・マシンの仲介をするプロキシを使えば、情報を得ることができる。

プロキシサーバーは、クライアントコンピュータとインターネット間の識別フィールドとして機能するため、クライアントは通常、匿名でウェブページを閲覧し、リソースを要求するためにプロキシサーバーを使用する。 

プロキシサーバーは、オンラインセキュリティやデータ盗難の懸念が高まるにつれ、かなり普及してきた。ここで、プロキシサーバーが私たちのシステムのセキュリティとどのように関連しているのかという疑問が生じます。私たちは、プロキシサーバーが私たちのサーバーと外部の世界の間に追加のセキュリティレベルを追加すると言うことができます。この追加のセキュリティは、侵害から私たちのシステムを保存するのに役立ちます。 

Pythonでプロキシを使うには?

Pythonリクエストでプロキシを使用するには、以下の手順に従う必要がある。

輸入リクエスト

シンプルなHTTPライブラリであるrequestsパッケージをインポートする。手動でURLにクエリー文字列を追加しなくても、このパッケージを使って簡単にリクエストを送信できます。requestsは以下のコマンドでインポートできます。

輸入リクエスト

辞書の作成

HTTP接続とHTTPS接続を定義するプロキシ辞書を作成する必要がある。辞書変数には、プロキシURLにプロトコルをマッピングする "proxies "のような任意の名前を与えることができる。さらに、URL変数にスクレイピングするウェブサイトを設定する必要がある。

proxies = {
  "http":'http://203.190.46.62:8080',
  "https":'https://111.68.26.237:8080'
}
url = 'https://httpbin.org/ip'

ここで辞書は、HTTPとHTTPSという2つの別々のプロトコルのプロキシのURLを定義する。

応答変数の作成

リクエストメソッドのいずれかを使用するレスポンス変数を作成する必要があります。このメソッドは2つの引数をとります:

  • 作成したURL
  • あなたが定義した辞書
response = requests.get(url,プロキシ = プロキシ)
print(response.json())

出力はこうだ:

リクエスト方法

などのリクエスト方法がある:

  • GET - 指定されたURLを使って、指定されたサーバーから情報を取得する。 
  • POST - このメソッドは、指定されたウェブサーバーがリクエストメッセージのボディに含まれるデータを受け入れ、それを保存することを要求します。
  • PUT - 指定されたURLの下に、囲んだデータを保存することを要求する。
  • DELETE - このメソッドは、指定されたURLにDELETEリクエストを送信します。
  • PATCH - このリクエストメソッドはHTTPプロトコルでサポートされ、既存のリソースに部分的な変更を加える。 
  • HEAD - ファイル・コンテンツを必要とせず、HTTPヘッダーまたはstatus_codeのみを必要とする場合、指定されたURLにHEADリクエストを送信します。

URLが指定されている場合、リクエストメソッドの構文は以下のようになります。ここでは、URLは上記のコードで使用したものと同じ、すなわちhttps://httpbin.org/ip

response = requests.get(url)
response = requests.post(url, data={"a": 1, "b": 2})
response = requests.put(url)
response = requests.delete(url)
response = requests.patch(url)
response = requests.head(url)
response = requests.options(url)

プロキシセッション

セッションを利用しているウェブサイトからデータをスクレイピングしたい場合は、以下の手順に従ってください。

ステップ#01

リクエストライブラリをインポートする。

輸入リクエスト

ステップ#02

セッション変数を作成し、それを requests Session() メソッドに設定することで、セッション・オブジェクトを作成します。 

session = requests.Session()

session.proxies = {
   'http': 'http://10.10.10.10:8000',
   'https': 'http://10.10.10.10:8000',
}

url = 'http://mywebsite.com/example'

ステップ#03

セッションプロキシをrequestsメソッドで送信し、引数としてURLを渡す。

response =session.get(url)

プロキシの主な種類

プロキシには2つの種類がある;

静的プロキシ回転プロキシ

静的プロキシ

静的プロキシを、インターネットサービスプロバイダ(ISP)契約によって 割り当てられたデータセンターのインターネットプロトコルとして定義 することができる。これらは、一定時間1つのプロキシサーバーに接続されたままになるように設計されています。静的」という名前は、私たちが必要な限り同じIPで住宅ユーザーとして操作できることを意味します。 

つまり、静的プロキシを使用することで、データセンター・プロキシのスピードと居住型プロキシの高い匿名性を得ることができる。さらに、静的プロキシはIPアドレスのローテーションを避けることを可能にし、その使用を著しく単純にする。

静的IPサービスは、通常のデータセンター・プロキシとは異なり、仮想マシンを使って作成されるものではない。スティッキーIPアドレスとも呼ばれるこれらのプロキシは、ほとんどすべてのウェブサイトにとって本物の消費者のように見えます。 

プロキシのローテーション

プロキシローテーションとは、新しいリクエストを送信するたびにIPアドレスを変更する機能と定義できる。

ウェブサイトを訪問するとき、私たちはIPアドレスを含む多くのデータを送信先サーバーに示すリクエストを送信する。例えば、スクレイパー(リードを生成するため)を使ってデータを収集するとき、私たちはそのようなリクエストをたくさん送信する。そのため、同じIPから多くのリクエストが来ると、送信先サーバーは不審に思い、それを禁止する。 

したがって、リクエストを送信するたびにIPアドレスを変更するソリューションが必要だ。その解決策がローテーション・プロキシである。つまり、ウェブスクレイピングでIPをローテーションさせるためにスクレイパーを手に入れるという無用な手間を省くために、ローテーション・プロキシを得て、プロバイダーにローテーションを任せればいいのだ。

なぜプロキシを使う必要があるのか?

以下は、さまざまなタイプのプロキシを使用する理由です。

  • ソーシャルメディア管理者は、単一のサーバーに固執させるプロキシを高く評価している。もしユーザーが常にIPアドレスを変えてアカウントにログインしていたら、ソーシャルメディアプラットフォームは不審に思い、彼らのプロフィールをブロックしてしまうだろう。
  • Eコマースサイトは、他の場所からのユーザーとリピーターとで異なるデータを表示することがある。また、購入者が様々なIPアドレスから自分のアカウントに何度もログインすると、サーバーは警告を発します。そのため、オンラインショッピングではプロキシを使用する必要がある。
  • 専門家が1カ所からユーザーの目を通して必要なデータをチェックしたい場合、手作業によるマーケティング調査にはプロキシが必要だ。 
  • 広告検証により、広告主は自社の広告が適切なウェブサイトに表示され、適切なオーディエンスに見られているかどうかを確認できる。IPアドレスの絶え間ない変更は、多くの異なるウェブサイトにアクセスするため、IPブロックなしで広告を検証します。
  • 特定の場所からアクセスすると、同じコンテンツが違って見えたり、利用できなかったりすることがあります。プロキシを使用することで、地理的な場所に関係なく必要なデータにアクセスすることができます。 
  • データへのアクセスにプロキシを使うことができ、優れたキャッシュシステムを持っているため、ブラウジングのスピードが速くなる。

結論

これまで、 プロキシはクライアントとサーバーマシンの間の中継として機能することを説明した。あなたが情報を要求するたびに、あなたのコンピュータはこの要求をプロキシに送信し、プロキシは別のIPアドレスを使用してターゲットコンピュータに情報を送信します。そのため、あなたのIPアドレスは機密のままです。さらに、Pythonのrequestsモジュールでプロキシを使用し、必要に応じて様々なアクションを実行することができます。データセンター型 プロキシの速度と居住型プロキシの高い匿名性を備えた静的IPが必要な場合は、静的プロキシが適しています。逆に、ローテーションプロキシは、テストやスクレイピングにおいてメリットがあります。