2011-10-17 3 views
2

나는 웹에서 긁어 낸 공개 프록시 목록을 가지고 있지만 그 중 많은 수가 실제로 연결할 수있는 것은 아닙니다. Ruby를 사용하여이 목록을 필터링하고 싶습니다.Ruby에서 프록시가 연결 가능한지 확인하는 방법은 무엇입니까?

프록시에 성공적으로 연결할 수 있으면 true를 반환하고 그렇지 않으면 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은 올바른 것을 테스트하지 않습니다.

관련 문제