2011-10-17 8 views
2

私はWebから撤去した公開プロキシのリストを持っていますが、それらの多くは実際には接続できません。私はRubyを使ってこのリストをフィルタリングしたいと思います。Rubyでプロキシが接続可能かどうかを確認するには?

私は正常にプロキシに接続できればそれを返すような関数を作り、それ以外の場合はfalseを返します。

def connectable?(proxy) 
    ip, port = proxy.split(':') 
    return true if connect(ip, port) == success 
    false 
end 
+0

どこから接続していますか? –

答えて

2
あなたが使用することができ

'ピング' ライブラリ:

はここで、一般的な考えです

require 'net/ping' 

def connectable?(proxy) 
    host, port = proxy.split(':') 
    return Net::Ping::TCP.new(host, port).ping 
end 

あなたは、ホスト名の代わりにIPアドレスを使用する必要がある場合は、 'Resolv.getname()'メソッドはあなたを助けることができます

+0

Net :: Ping :: TCPクラスはTCPSocketで動作します。 「TCP pingを使用するだけで、接続を開こうとします。成功すれば、成功します。 – WarHog

+0

しかし、プロキシが使用するのと同じポートには接続しません。プロキシサーバーではなく、ホストが存在するかどうかを確認するだけです。 – EJP

+0

トピックスターターは書いています: "それらの多くは実際に接続可能ではありません...もし私が正常にプロキシに接続することができます"。スニペットのコードは、指定されたポート(指定されたポートにある任意のポート)の所定のホストへのTCP接続を確立します。私が間違っているか問題の仕様を誤解している場合は、私を修正してください。 – WarHog

3

成功した場合は、接続を閉じることを忘れずに、あなたのように接続してみてください。 Pingは正しいことをテストしません。

関連する問題