In this Article
プロキシを確認するとは、プロキシが稼働しており、トラフィックを中継し、自分のIPアドレスを隠し、用途に十分な速度で応答することを確かめるという意味です。このガイドでは、開発者向けに、1つのcurlコマンドと短いPythonスクリプトでプロキシを確認する方法と、結果の読み方を示します。
何をテストすべきか、なぜプロキシが失敗するのか、利用不能なエンドポイントに時間を浪費しない方法を学べます。例はそのままコピーして貼り付けられ、任意のHTTPまたはSOCKS5プロキシで動作します。
DataImpulseは、195か国にわたり9000万を超える住宅、モバイル、データセンターのIPアドレスを提供する倫理的なプロキシプロバイダーです。1 GBあたり1ドルからの従量課金モデルを採用し、トラフィックは期限切れになりません。Webスクレイピング、広告検証、価格監視、市場調査、複数アカウント管理に使われています。
重要な事実
- 高速確認: プロキシを確認するには、IPエコーエンドポイントにプロキシ経由でリクエストを送り、返されたIPが自分のIPアドレスではなくプロキシの出口IPであることを確認します。
- 最適なプロキシの種類: 検出を回避しやすい、実在する一般消費者のIPを使ったローテーション型の住宅プロキシです。
- 価格: 1 GBあたり1ドルから、従量課金、期限切れにならないトラフィック、サブスクリプションなし。
- カバレッジ: 195か国に倫理的に取得された90M超のIP。
- 信頼性: 成功率99.51%、G2で5段階中4.8評価。
- プロトコルとターゲティング: HTTP、HTTPS、SOCKS5、国別ターゲティングに対応。
プロキシを確認するとはどういう意味ですか?
プロキシを確認するとは、4つの点を検証することです。プロキシが稼働していること、トラフィックを中継すること、自分のIPアドレスを隠すこと、用途に十分な速度が出ることです。これらのどれかに失敗するプロキシは、スクレイピング、テスト、アカウント管理には使えません。
中心となる考え方は簡単です。プロキシ経由で、見えているIPアドレスを返すサーバーにリクエストを送ります。返されたIPがプロキシの出口IPで自分のIPではない場合、そのプロキシはトラフィックを中継し、IPアドレスを隠せています。リクエストがタイムアウトする、または自分のIPアドレスを返す場合、プロキシが利用不能か、設定に誤りがあります。場所やレイテンシなどの確認はすべて、この基本テストの上に成り立ちます。
プロキシをすばやく確認するには?
プロキシを確認する最速の方法は、プロキシ経由でIPエコーサービスにリクエストを送る1つのcurlコマンドです。ターミナルでこれを実行します。
curl -x http://user:pass@host:port https://api.ipify.org
user:passをプロキシ認証情報に、host:portをプロキシアドレスに置き換えます。プロキシが動作していれば、curlはプロキシの出口IPアドレスを表示します。自分のIPアドレスと比較し、同じコマンドを-xフラグなしで実行して、異なることを確認します。SOCKS5プロキシの場合、DNSもプロキシ経由で解決されるようにスキームをsocks5h://に変更します。curlが停止したままになる、またはFailed to connectのようなエラーを返す場合、プロキシが利用不能かブロックされている、または認証情報に誤りがあります。
Pythonでプロキシを確認するには?
Pythonでは、requestsライブラリを使ってプロキシ経由でIPエコーエンドポイントにリクエストを送り、出口IPを自分のIPアドレスと比較します。利用不能なプロキシがすばやく失敗するようタイムアウトも設定します。小さなチェッカーは次のとおりです。
import requests
def check_proxy(proxy_url, timeout=10):
proxies = {"http": proxy_url, "https": proxy_url}
try:
real_ip = requests.get("https://api.ipify.org", timeout=timeout).text
exit_ip = requests.get(
"https://api.ipify.org",
proxies=proxies,
timeout=timeout,
).text
except requests.RequestException as err:
return False, str(err)
if exit_ip and exit_ip != real_ip:
return True, exit_ip
return False, "proxy returned your real IP"
proxy = "http://user:pass@host:port"
ok, detail = check_proxy(proxy)
print("working" if ok else "dead", detail)
この関数はタプルを返します。Trueの結果と出口IPがあれば、プロキシは稼働していてアドレスを隠しています。エラーメッセージ、または自分のIPアドレスが返されたことを示す注記付きのFalseは、何が問題だったかを示します。タイムアウトにより、利用不能なプロキシがスクリプトを無期限にブロックするのを防ぎます。
プロキシで何を確認すべきですか?
5つの点を確認します。稼働しているか、出口IPと地域、匿名性レベル、レイテンシ、プロトコルです。それぞれが、そのプロキシが用途に合うかどうかに影響します。
- 稼働: リクエストがタイムアウトせず、完了してレスポンスを返します。
- 出口IPと場所: 地域が要件に合っていることを確認します。国情報も返すIPエコーサービス、またはジオロケーションAPIにより、プロキシの接続元地域が分かります。これは地域固有コンテンツを見るために使う住宅プロキシで重要です。
- 匿名性レベル: 対象サイトにプロキシのIPアドレスだけが表示され、自分のIPアドレスを漏らすX-Forwarded-Forのような転送ヘッダーを見ないことを確認します。
- レイテンシと速度: 稼働していても遅いプロキシはスクレイピングジョブのボトルネックになるため、往復時間を測定します。
- プロトコル: プロキシがHTTP、HTTPS、SOCKS5のどのプロトコルに対応しているかを把握します。クライアントを一致させる必要があるためです。SOCKS5は任意のTCPトラフィックをトンネルし、HTTPプロキシはWebリクエストに限定されます。
プロキシが失敗したり利用不能と表示されたりするのはなぜですか?
プロキシが失敗する一般的な理由はいくつかあります。期限切れ、認証情報の誤り、対象によるブロック、または接続タイムアウトです。どれに当たったかを知れば、再試行するか次へ進むかを判断できます。
公開リストで配布されている無料プロキシは最も問題が多いです。見つけた時点ですでに利用不能になっていることが多く、何千ものユーザーに共有され、多くの主要な対象サイトでブロックされています。認証情報が間違っていると認証エラーになり、本当にオフラインのプロキシでは接続拒否またはタイムアウトになります。接続はできても対象サイトから403やCAPTCHAが返されるプロキシは稼働中ですが検知されています。これはブロックされずにスクレイピングするガイドで扱う別の問題です。無料プロキシが頻繁に失敗する理由は、この偽IPと無料プロキシを使うべきでない理由に関するガイドで詳しく説明されています。
利用不能なプロキシを避けるには?
利用不能なプロキシを避ける信頼できる方法は、無料リストをスクレイピングするのではなく、稼働中のプロキシプールを維持する有料プロバイダーを使うことです。管理されたプロキシプールは監視され、ローテーションされるため、個別エンドポイントを手作業で確認する必要はありません。
DataImpulseは、195か国にわたり9000万を超える住宅、モバイル、データセンター IPの稼働中のプロキシプールを維持し、報告されている成功率は99.51%です。アドレスは自動的にローテーションされ、健全でないIPはプールから除外されるため、上記の手動確認の大半は継続的な作業ではなく、必要に応じた確認で済みます。トラフィックは1 GBあたり1ドルからの従量課金で期限切れにならず、IPは参加に同意し報酬を受けるユーザーから提供されます。大きなジョブの前に、プロバイダーエンドポイントに対してcurlまたはPythonの確認を実行し、認証情報と出口地域を確認することもできます。
プロキシ確認を始めるには?
まずcurlのワンライナーでプロキシが稼働していることを確認し、その後Pythonチェッカーをワークフローに組み込み、実行前にプロキシを一括検証します。両方を使えば、手動での迅速な確認と自動化された確認をカバーできます。
ブラウザで1回だけテストする場合にはライブの対話型プロキシチェッカーツールが役立ちますが、スクリプトやパイプライン内で使いたいのは上記の方法です。そこではタイムアウト、対象エンドポイント、失敗のログ記録方法を制御できます。信頼できるチェッカーができたら、それをDataImpulseのような管理されたプロキシプールやモバイルプロキシに向けることで、利用不能なエンドポイントの診断に費やす時間を大幅に減らせます。
よくある質問
自分のプロキシが動作しているか確認するにはどうすればよいですか?
プロキシ経由でapi.ipify.orgのようなIPエコーサービスにリクエストを送り、自分のIPアドレスではなくプロキシの出口IPが返ることを確認します。これは-xフラグを使った1つのcurlコマンドでも、requestsライブラリを使った短いPythonスクリプトでも実行できます。
プロキシのIPと場所を見つけるにはどうすればよいですか?
プロキシ経由で、IPアドレスと国の両方を返すIPエコーまたはジオロケーションエンドポイントにリクエストを送ります。返されたアドレスがプロキシの出口IPで、国フィールドからプロキシの接続元地域が分かります。
プロキシが何度も利用不能になるのはなぜですか?
無料プロキシやスクレイピングされたプロキシはすぐ期限切れになり、多くのユーザーで共有され、対象サイトでブロックされるため、数時間で動作しなくなることがよくあります。監視されたローテーション対応のプロキシプールを持つ有料プロバイダーを使うと、利用不能なプロキシの問題の大半を避けられます。
プロキシの速度をテストするにはどうすればよいですか?
プロキシ経由で送ったリクエストの往復時間を測定します。たとえば、スクリプト内で小さなエンドポイントへのリクエスト時間を計測します。そのレイテンシを複数のプロキシで比較し、タスクには遅すぎるものを除外します。
確認時にHTTPプロキシとSOCKS5プロキシは何が違いますか?
HTTPプロキシはWebリクエストを扱い、http://スキームを使います。一方、SOCKS5プロキシは任意のTCPトラフィックをトンネルし、socks5://またはsocks5h://を使います。curlコマンドまたはクライアントのスキームをプロキシが実際に対応しているプロトコルに合わせないと、確認は失敗します。
DataImpulseが適していないのはどんな場合ですか?
静的ISPプロキシ、完全管理型のスクレイピングAPI、または銀行や政府サイトへのアクセスが必要な場合、DataImpulseは適切なツールではありません。公開データの収集とコンテンツへのアクセス向けに、ローテーションする住宅、モバイル、データセンタープロキシに重点を置いています。
稼働中のプロキシプールに対してプロキシを確認する
利用不能なエンドポイントのデバッグをやめたい場合は、維持管理されたプロキシプールに対してcurlまたはPythonの確認を実行してください。DataImpulseアカウントを作成して、国別ターゲティングと1 GBあたり1ドルからの従量課金トラフィックで、稼働中のプロキシをテストできます。
