Python Requestsでproxy設定とproxy認証をマスターする方法

Pythonは、WebスクレイピングやAPI呼び出しなどのWebアプリケーション開発に最適な言語の1つです。Requestsライブラリを使うことで、PythonでHTTPリクエストを送信できます。しかし、企業内ネットワークやVPNなどのセキュリティ上の理由から、プロキシサーバーを経由する必要がある場合があります。

proxyとは何か、その必要性

proxyとは、クライアントとサーバーの間に位置する中継サーバーのことです。プロキシサーバーを使うことで、クライアントのIPアドレスを隠したり、セキュリティ上の理由からアクセス制限をかけたりすることができます。また、プロキシサーバーを経由することで、ネットワークの負荷を軽減することもできます。

企業内ネットワークやVPNなどのセキュリティ上の理由から、プロキシサーバーを経由する必要がある場合があります。そのため、Python Requestsを使ってWebスクレイピングやAPI呼び出しを行う場合には、proxyの設定が必要になります。

Python Requestsでのproxy設定方法

Python Requestsでproxyを使うには、proxiesパラメーターを使います。proxiesパラメーターには、プロキシサーバーの情報を辞書形式で指定します。

import requests
proxies = {
  "http": "http://example.com/proxy:8080",
  "https": "http://example.com/proxy:8080",
}
response = requests.get("検索サイトのURL", proxies=proxies)
print(response.text)

上記の例では、httpとhttpsのプロトコルを使う場合には、example.com/proxyというホスト名、ポート番号8080のプロキシサーバーを使うように設定しています。

proxy認証とは何か

proxy認証とは、プロキシサーバーを使う際に、認証情報を必要とする場合のことです。企業内ネットワークやVPNなどのセキュリティ上の理由から、proxy認証が必要な場合があります。

Python Requestsでのproxy認証の方法

Python Requestsでproxy認証を行うには、proxiesパラメーターの辞書に、認証情報を含める必要があります。認証情報は、”username:password”の形式の文字列で、Base64でエンコードする必要があります。

import requests
import base64
proxy_host = "example.com/proxy"
proxy_port = "8080"
proxy_username = "username"
proxy_password = "password"
proxy_url = f"http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}"
proxies = {
  "http": proxy_url,
  "https": proxy_url
}
response = requests.get("検索サイトのURL", proxies=proxies)
print(response.text)

上記の例では、example.com/proxyというホスト名、ポート番号8080のプロキシサーバーを使い、ユーザー名がusername、パスワードがpasswordであることが前提となっています。

proxy設定とproxy認証の注意点

  • proxyの設定によっては、HTTPリクエストがうまく通らない場合があります。そうした場合には、proxyの設定を見直す必要があります。
  • proxy認証情報を含めたリクエストは、Base64でエンコードされているため、安全とは言えません。パスワードなどの機密情報を含めたリクエストは、HTTPSを使って暗号化することをお勧めします。

まとめ

Python Requestsを使ってWebスクレイピングやAPI呼び出しを行う場合には、proxyの設定が必要になることがあります。proxiesパラメーターを使って、proxyを設定することができます。また、proxy認証が必要な場合には、proxiesパラメーターに認証情報を含める必要があります。ただし、proxy認証情報を含めたリクエストは、HTTPSを使って暗号化することをお勧めします。