proxy authentication

プロキシ認証は、プロキシサーバーがトラフィックを転送する前に、接続リクエストが許可されたクライアントからのものかを確認する仕組みです。認証がなければ、オープンプロキシは誰のトラフィックでも中継できてしまいます。そのため認証によって、有料または非公開のプロキシプールを契約済みのユーザーだけが利用できるようにします。

この記事では、主な2種類のプロキシ認証方式、ツールに入力する認証情報の形式、HTTP 407 ステータスコードの意味、ブラウザ、Python、curl での設定方法を解説します。

DataImpulse は、倫理的に調達した住宅、モバイル、データセンターの IP アドレスを195 か国で 9000 万以上提供するプロキシプロバイダーです。料金は 1 GB あたり 1 ドルからの従量課金制で、トラフィックに有効期限はありません。ウェブスクレイピング、広告検証、価格モニタリング、市場調査、複数アカウントの管理に利用できます。

重要なポイント

  • プロキシ認証: 代表的な方式は、ユーザー名とパスワードによる認証 (HTTP Basic) と、送信元 IP アドレスに基づいてプロキシへのアクセスを許可する IP ホワイトリストです。
  • 最適なプロキシの種類: ローテーティング住宅プロキシ。実際の利用者に割り当てられた IP を利用するため、検出されにくくなります。
  • 料金: 1 GB あたり 1 ドルから、従量課金制で、トラフィックは失効せず、サブスクリプションもありません。
  • カバレッジ: 195 か国にわたる 9000 万以上の倫理的に調達された IP。
  • 信頼性: 成功率 99.51%、G2 で 5 段階中 4.8 の評価。
  • プロトコルとターゲティング: HTTP、HTTPS、SOCKS5 に対応し、国別ターゲティングも可能です。
クライアントがプロキシサーバーに対してどのように認証するか

プロキシ認証とは何か?

プロキシ認証とは、クライアントにプロキシ経由でトラフィックを送信する権限があるかを、プロキシサーバーが確認する処理です。リクエストを処理する前に、その接続にプロキシプールの利用が許可されているかを判定します。

プロバイダーが認証を使う理由は2つあります。1つはアクセス制御で、契約済みの顧客だけが IP プールを利用できるようにするためです。もう1つは利用量の計測で、トラフィックと帯域幅を正しいアカウントに紐付けるためです。ほとんどの商用プロキシネットワークは、 住宅プロキシデータセンタープロキシを含め、ユーザー名とパスワードの認証情報と IP ホワイトリストという2つの認証方式に対応しています。

ユーザー名とパスワードによる認証はどのように機能するか?

ユーザー名とパスワードによる認証は、リクエストごとに一連の認証情報を送信し、プロキシはトラフィックを転送する前にそれらを検証します。これは、HTTP Basic 認証をプロキシ層で利用する方式です。

認証情報は、ほとんどのツールが受け付ける単一の接続文字列として渡されます。形式は次のとおりです。

username:password@host:port

DataImpulse では、ゲートウェイのホストとポートは固定されており、ログインとパスワードはダッシュボードから取得します。典型的な文字列は次のようになります。

login:[email protected]:823

認証情報は固定の場所に紐付かず、リクエストごとに送信されます。そのため、Wi-Fi が切り替わるノートパソコン、動的 IP のクラウドサーバー、コンテナーなど、どのネットワーク環境でも利用できます。この柔軟性により、多くのスクレイピングや自動化の構成で標準的な選択肢となっています。

IP ホワイトリストとは何か、いつ使うべきか?

IP ホワイトリストでは、認証情報ではなく送信元 IP アドレスでアクセスを認証します。1つ以上の静的 IP をプロバイダーに登録すると、プロキシはそれらのアドレスから発信されたリクエストをすべて受け付けます。

選択する際は、2つの方式の長所と短所を比較しましょう。

  • ユーザー名とパスワード。 どのネットワークでも利用でき、切り替えも容易です。ただし、認証情報を入手した人は誰でもアカウントを利用できるため、厳重な管理が必要です。
  • IP ホワイトリスト。 秘密情報をコードに含めずに済むため、固定サーバー群に便利です。ただし、公開 IP が変わると利用できなくなり、動的 IP のマシンには適しません。

実際には、チームは専用のスクレイピングサーバーの静的 IP をホワイトリストに登録し、ノートパソコンや短命なクラウドインスタンスにはユーザー名とパスワードによる認証を用いることがよくあります。

HTTP 407 Proxy Authentication Required とは何か?

HTTP 407 は、リクエストに必要な認証が提供されなかったか無効だった場合にプロキシが返すステータスコードです。これは、オリジンサーバーが使う 401 Unauthorized コードのプロキシ層版に相当します。

プロキシが 407 で応答するとき、期待する方式を示す Proxy-Authenticate ヘッダーを含めます。クライアントはその後、認証情報を持つ Proxy-Authorization ヘッダーを付けてリクエストを再試行します。通常、認証情報は Base64 でエンコードされた Basic トークンとして送信されます。ほとんどの HTTP ライブラリやブラウザは、ユーザー名とパスワードを指定すればこのやり取りを自動的に行うため、ヘッダーを手作業で組み立てることはめったにありません。407 エラーが出続ける場合、よくある原因は、誤った認証情報、ホワイトリストに登録されていない IP、または誤ったゲートウェイに送られた認証情報です。

ブラウザやオペレーティングシステムでプロキシ認証を設定するには?

ブラウザやオペレーティングシステムのレベルでは、ネットワーク設定にプロキシのホストとポートを入力し、求められたときにユーザー名とパスワードを入力します。画面構成はプラットフォームによって異なりますが、入力する項目は共通しています。

ほとんどのシステムでは、手順は次のようになります。

  • システム設定。 ネットワークまたはプロキシの設定パネルを開き、手動の HTTP または HTTPS プロキシを有効にして、ホストとして gw.dataimpulse.com を、ポートとして 823 を入力します。
  • 認証情報の入力プロンプト。 最初のリクエストで、ユーザー名とパスワードを求めるダイアログが表示されます。ダッシュボードのログインとパスワードを入力します。その後、ブラウザは以降のすべてのリクエストに Proxy-Authorization ヘッダーを付加します。
  • ブラウザ拡張機能。 プロキシ切り替え拡張機能を使うと、認証情報を設定した複数のプロファイルを保存できます。プロキシプールを切り替えたり、ブラウジングのトラフィックを分けたりするときに便利です。

オペレーティングシステムレベルの設定は、ほとんどのアプリケーションに一度にプロキシを適用しますが、ブラウザや拡張機能は範囲をウェブ閲覧に限定します。

Python と curl でプロキシ認証を設定するには?

コードでは、HTTP クライアントに同じ username:password@host:port 形式の文字列を渡します。ライブラリが 407 の認証処理を自動的に行います。代表的なツールは Python の requests ライブラリと curl です。

Python の requests では、proxies の辞書を定義してリクエストに渡します。

import requests

proxies = {
    "http": "http://login:[email protected]:823",
    "https": "http://login:[email protected]:823",
}

resp = requests.get("https://httpbin.org/ip", proxies=proxies)
print(resp.json())

curl では、 -x フラグでプロキシを設定し、インラインの認証情報を受け付けます。

curl -x http://login:[email protected]:823 https://httpbin.org/ip

どちらの例も、ゲートウェイ経由でトラフィックを送り、出口 IP を表示します。これにより、認証が成功したかをすぐに確認できます。このパターンは、リクエストをローテーティング IP 経由でルーティングする、ほとんどの ブロックされずにスクレイピングする ワークフローの基礎となります。

プロキシの認証情報を安全に保つには?

プロキシの認証情報は秘密情報として扱ってください。入手した人は誰でもあなたの帯域幅を消費し、あなたのアカウントでトラフィックをルーティングできてしまうからです。以下の対策で、よくある漏えいを防げます。

  • 共有コードに認証情報をハードコードしない リポジトリにコミットしたキーや共有ノートブックに貼り付けたキーは、プロキシのログイン情報が漏えいする主な原因です。代わりに環境変数から読み込みましょう。
  • 環境変数やシークレットマネージャーを利用する ログインとパスワードを埋め込むのではなく実行時に読み込むことで、秘密情報を露出させずに同じコードをあらゆる環境で実行できます。
  • 認証情報を定期的に変更する プロキシのパスワードを定期的に、また露出の疑いがあれば直ちに変更し、古い漏えい値が使えなくなるようにします。
  • 適切な場合はホワイトリストでアクセスを制限する 固定のサーバー群には、IP ホワイトリストを使えば認証情報をコードに保存する必要が一切なくなります。

DataImpulse は、その IP を 倫理的なプロキシ から調達しています。これらの IP は、同意のうえで報酬を受け取るユーザーから提供されています。IP の調達と同様に、プールへアクセスする認証情報の保管にも十分な配慮が必要です。

認証情報と IP ホワイトリストの比較

要素 ユーザー名とパスワード IP ホワイトリスト
セキュリティ 認証情報が漏れる可能性がある 固定 IP に紐づく
利便性 あらゆるネットワークから機能する 静的 IP の設定が必要
自動化への適合性 スクリプトで容易 固定サーバーに適する
共有 IP のリスク 低い、アカウント単位のアクセス その IP を使う人は誰でも入れる
ユーザー名:パスワード認証と IP ホワイトリストの比較

よくある質問

プロキシ認証とウェブサイトのログインの違いは何ですか?

プロキシ認証は、トラフィックを中継するプロキシサーバーへのアクセスを制御し、ウェブサイトのログインは宛先サイトへのアクセスを制御します。プロキシ認証は最初に行われ、ターゲットサイトが求めるいかなる認証情報とも別のものです。

ユーザー名とパスワードと IP ホワイトリストでは、どちらが安全ですか?

どちらか一方が常に安全というわけではなく、それぞれ異なるリスクに対応します。IP ホワイトリストは秘密情報をコードの外に保ちますが IP が変わると機能しなくなり、ユーザー名とパスワードはどこでも機能しますが慎重に保管する必要があります。

なぜ 407 Proxy Authentication Required エラーが出続けるのですか?

407 エラーは通常、認証情報が間違っているか不足している、IP がホワイトリストに登録されていない、または誤ったゲートウェイにリクエストを送信していることを示します。ログイン、パスワード、ホスト、ポートがすべてダッシュボードと一致しているか確認してください。

SOCKS5 でプロキシ認証を使えますか?

はい。SOCKS5 はユーザー名とパスワードによる認証に対応しており、DataImpulse は HTTP、HTTPS、SOCKS5 を提供しています。認証情報の扱いは同様ですが、接続文字列には http ではなく socks5 スキームを使用します。

Proxy-Authorization ヘッダーを自分で組み立てる必要がありますか?

ほとんどの場合、必要ありません。ブラウザや、Python の requests や curl などの HTTP ライブラリは、ユーザー名とパスワードを指定すれば Proxy-Authorization ヘッダーを自動的に構築します。

DataImpulse が適さないのはどんなときですか?

静的 ISP プロキシ、フルマネージドのスクレイピング API、または銀行や政府のサイトへのアクセスが必要な場合、DataImpulse は適したツールではありません。DataImpulse は、公開データの収集やコンテンツへのアクセスに適した、ローテーティング住宅プロキシ、モバイルプロキシ、データセンタープロキシを提供しています。

認証付きプロキシを試す準備はできましたか?

DataImpulse では、ユーザー名とパスワードまたは IP ホワイトリストで HTTP、HTTPS、SOCKS5 のプロキシを利用できます。料金は 1 GB あたり 1 ドルからの従量課金制で、トラフィックに有効期限はありません。 アカウントを作成 すると、ダッシュボードからゲートウェイの認証情報を取得し、数分でトラフィックのルーティングを開始できます。


Share article: