自分がインターネットを良く使っていたりWEBサービスを運営していたりすると、「高速なアクセス」「安全な通信」「特定地域からのアクセス」を確保するためにプロキシサーバーを使う場合があります。
このプロキシサーバーの情報を集め公開しているCyberSyndromeというサイトがとても便利です。
・CyberSyndrome – The Proxy Search Engine
プロキシサーバーの情報を確認できる「Proxy Checker」や、環境変数を調べられる「ENV Checker」、ドメイン情報を調べられる「Whois」などの便利なツールがありますし、プロキシ初心者にはプロキシについての知識を一から学べる「プロキシサーバ入門」というページもあります。
そして、このサイトの中にSpeed Rankingというページがあり、プロキシアクセスが高速な順にランキング表示してくれており非常に便利です。今回このランキングをもとに、プログラムからプロキシリストを取得しやすくなるようにYahoo!PipesによるAPI化をしてみました。
APIの詳細と、利用上の注意事項は「続きを読む」以降に続きます。
FiestProxy
・Pipes: FirstProxy
FirstProxyではCyberSyndromeのSpeed Rankingで情報提供されている、プロキシの「ホスト名(IP)」「ポート」「カントリーコード」「匿名性の種類」を確認できます。一覧はアクセス速度順に表示されていますので、上にある方が高速なプロキシサーバだと言えます。
また、各情報で絞りこむ事ができます。
■port(ポート)
80番しか使えないなど制限がある場合は、portに「80」と指定する事で絞り込みできます。
正規表現になっているので、「8080」などもヒットしてしまいますが、厳密に絞り込む場合は「^80$」などとすれば良いでしょう。
■class(匿名性の種類)
こちらを参考にすると、4種類存在します。
- A:HTTPのリクエストヘッダにプロキシ特有の環境変数を付加しない匿名プロキシ
- B:HTTPのリクエストヘッダにプロキシ特有の環境変数を付加する匿名プロキシ
- C:HTTPのリクエストヘッダにクライアントと無関係なIPアドレスを付加する匿名プロキシ
- D:HTTPのリクエストヘッダにクライアントのIPアドレスを付加するプロキシ
A→Dの順で匿名性が高い事になります。
こちらも正規表現で指定できますので「AかBのみ」という意味で「(A|B)」という指定も可能です。
■country(カントリーコード)
プロキシサーバーの所在国での絞り込みもできます。
カントリーコードについてはこちらを参考にしてください。
・CyberSyndrome : Proxy List / Country Code – 国別プロキシリスト
「JP」が日本、「CN」が中国。、「US」がアメリカ合衆国って感じです。
APIとして使用する
PipesですからAPIのように使えますね。
・RSS
http://pipes.yahoo.com/yager/first_proxy?_render=rss
・JSON
http://pipes.yahoo.com/yager/first_proxy?_render=json
・PHP
http://pipes.yahoo.com/yager/first_proxy?_render=php
JSON、PHPでは「ホスト名(IP)」「ポート」「カントリーコード」「匿名性の種類」の各値が個別の項目として取得できます。
もちろん絞り込みもできますから、「USのプロキシ環境変数なし」という条件で、
http://pipes.yahoo.com/yager/first_proxy?_render=json&country=US&class=A
などとすることができます。
注意事項
冒頭にも書いていますが、このAPIの情報取得元はCyberSyndrome様であり、閲覧やプログラムからの利用などに問題はありませんが、転載などの二次利用目的でこのAPIを利用しないでください。同プロキシリストの掲載についてはルールがありますのでCyberSyndrome様のガイドラインをご確認ください。
まとめ
最後に、非常に便利な情報をご提供頂いたCyberSyndrome様に大変感謝しております。
みなさんも節度あるご利用をお願いします。
▼ 体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
▼ 新米IT担当者のための ネットワーク構築&管理がしっかりわかる本