2012-02-28 24 views
3

私は多くのプロキシが必要なウェブアプリケーションを作成しています。 私はプロキシのリストも持っていますが、どちらが動作していて、どのタイプが靴下か、http、httpsかわかりません。PHPを使用してプロキシをチェックしてください

ip:port形式で5000のプロキシがあるとします。 これらのすべてを確認する最も早い方法は何ですか?

私はfsockopenを試しましたが、かなり遅いです。 最初にpingを実行すると時間が節約できますか?

+0

あなたはあなたのコードをポストする必要があり、それはあなたがチェックを行う方法で持っている膨大な量またはいくつかの問題になることができます。 – hakre

答えて

1

cURLを使用してプロキシを確認できます。良い記事がありますhere お役に立ちますか?

1

通常、このポートはプロキシタイプについての良い手がかりを与えます。
80,8080,3128 HTTP
1080は、一般的に

ソックスしかしのは現実的で聞かせている、あなたが公共のプロキシのリストを持っているように見える一般的です。ひとりひとりがこれ以上働かなくなることはまずありません。
あなたはプロキシをテストするために、スクリプトまたは類似でカールまたはのwgetまたはオオヤマネコを使用することができます。

また、SOCKSとHTTPにできるだけ良く並べ替えて、the Proxycollectiveに入力してみることもできます。 これは無料のプロジェクトですが、メンバーになるには招待コードまたは99セントチケットが必要です。 メンバーになると、プロキシリストをアップロードしてテストすることができます。すべての働くものはあなたに戻って並べ替えられます。
自分で何かをプログラムしたくない場合は、おそらくあなたの最善の策です。招待状は、さまざまなフォーラムで見つけることができます。

しかし、私が言ったことを覚えておいてください。5000のランダムなプロキシのリストがあれば、そこには10以上の作業用のものはほとんど見つかりません。公開プロキシは短期間しか生存しません。

1

このproxy checker APIは、あなたが探しているものと正確に一致する可能性があります。それを使ってプロキシリストを簡単にチェックすることができます。

あなた自身で開発したい場合は、APIと同じように小さなスクリプトを実行することは難しくありません。

3
<?php 
$proxies = file ("proxies.txt"); 
$mc = curl_multi_init(); 
for ($thread_no = 0; $thread_no<count ($proxies); $thread_no++) 
{ 
$c [$thread_no] = curl_init(); 
curl_setopt ($c [$thread_no], CURLOPT_URL, "http://google.com"); 
curl_setopt ($c [$thread_no], CURLOPT_HEADER, 0); 
curl_setopt ($c [$thread_no], CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5); 
curl_setopt ($c [$thread_no], CURLOPT_TIMEOUT, 10); 
curl_setopt ($c [$thread_no], CURLOPT_PROXY, trim ($proxies [$thread_no])); 
curl_setopt ($c [$thread_no], CURLOPT_PROXYTYPE, 0); 
curl_multi_add_handle ($mc, $c [$thread_no]); 
} 

do { 
while (($execrun = curl_multi_exec ($mc, $running)) == CURLM_CALL_MULTI_PERFORM); 
if ($execrun != CURLM_OK) break; 
while ($done = curl_multi_info_read ($mc)) 
{ 
$info = curl_getinfo ($done ['handle']); 
if ($info ['http_code'] == 301) { 
echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n"; 
} 
curl_multi_remove_handle ($mc, $done ['handle']); 
} 
} while ($running); 
curl_multi_close ($mc); 
?> 
+0

あなたが行った変更を回答として編集します。 – Avijit

関連する問題