【Proxy】プロキシチェッカー プロキシ生存チェックツール PHP製

・プロキシの生存チェックできるコマンドで利用できるバッチを公開します。
・世の中に公開されているプロキシから生存精査することができます。
・内部的には、一覧から順番にアクセスし、生存確認を行います。
・特徴は、http はもちろん、https のチェックもできます。
・最近は SSL 対応のサイトが多いので、https が利用できるプロキシは貴重です。
・ソースのサンプルとしてもご利用ください。
・余談ですが、プロキシ、プロクシを Google Trends で比較したところ、プロキシの方が 5:3 の割合で検索件数が多いようです。

概要

・利用できるプロキシを公開しているオープンなサイトから一覧を取得します。
・一覧をチェック用のテキストへ貼り付けます。
・チェック用のテキストとチェック先のURLを指定してバッチを実行します。

※ プロキシ一覧を公開しているサイトの例
http://www.cybersyndrome.net/

使い方

check_ssl_proxy.php
がプログラムの本体になります。

バッチの実行には
・第一引数に対象のファイル
・第二引数にチェックしたい対象のURL
を指定します。

php check_ssl_proxy.php test.txt http://example.com

※ https の接続チェックをする場合は、
https://example.com
と「https」の URL を指定してください。

GitHub から取得

GitHub からクローンしてご利用ください。

git clone https://github.com/pt106/CheckSSLProxyOrNot.git

ソース の内容

クローンしたくない方は下記のソースをコピー、ペースでご利用ください。

バッチ

check_ssl_proxy.php

#!/usr/bin/env php
<?php
function printr($msg){
  echo $msg .PHP_EOL;
}
function printError($msg){
  file_put_contents('php://stderr', $msg .PHP_EOL);
}

printr ('*****************************************************************************');
printr ('Start check proxy.');
printr ('*****************************************************************************');

$url = "https://play.google.com/store/apps/collection/topselling_free?hl=en";

if (isset($argv[1]) && $argv[1]) {
  $inputFile = $argv[1];
}else{
  printError('Error : Check [ip:port File]');
  printError('php check_ssl_proxy.php [ip:port File] [check url]');
  exit(1);
}

if (!file_exists ( $inputFile )) {
  printError('Error : Check [ip:port File]');
  printError('File not found .');
  exit(1);
}

if (isset($argv[2]) && $argv[2]) {
  $url = $argv[2];
}else{
  printError('Error : Check [check url]');
  printError('php check_ssl_proxy.php [ip:port File] [check url]');
  exit(1);
}

printr ($inputFile);
printr ($url);
printr ('*****************************************************************************');

$proxyUrls = file_get_contents($inputFile);
$proxyUrls = explode("\n", $proxyUrls);

if (!$proxyUrls) {
  printError('File is Empty.');
  exit(1);
}

foreach ($proxyUrls as $proxyUrl) {
  printr ('------------------------------');
  printr($proxyUrl);

  if (empty($proxyUrl)) {
    printr('This line is NULL. So Skip.');
    continue;
  }
  if (substr($proxyUrl, 0 ,1) === '#') {
    printr('This line is #. So Skip.');
    continue;
  }

  $proxy = array(
    "http" => array(
      "proxy" => $proxyUrl,
      'request_fulluri' => true,
    ),
  );

  $proxyContext = stream_context_create($proxy);
  $getHtml = @file_get_contents($url,false,$proxyContext);

  if ($getHtml) {
    printr( "OK : This proxy is alive !");
  }else{
    printr( "NG : This proxy is fail !");
  }
}

printr ('------------------------------');
printr ('*****************************************************************************');
printr ('End check proxy.');
printr ('*****************************************************************************');
exit(0);

対象ファイル

※ サンプルになりますので、一覧はご用意ください。
test.txt

192.168.1.1:80
192.168.1.2:8080

※ プロキシ一覧を公開しているサイトの例
http://www.cybersyndrome.net/

最後に

先日、個人的にSSL 通信が可能なプロキシを調査する必要があったので作成しました。
他の方でもチェックしたい方がいればご利用ください。
警報、エマー用としても利用できます。

SSL が利用できるプロキシチェック用のプログラムを作成したのですが、結果、NON-SSL でも利用できるプログラムになりました。

タイトルとURLをコピーしました