通过SOCKS服务器使用ping?

时间:2011-03-11 15:35:38

标签: python socks icmp

我想定期检查我的SOCKS服务器是否正常工作。为了做到这一点,我想到通过SOCKS服务器ping 8.8.8.8(谷歌DNS服务器)。

还有其他推荐的方法吗? 如果它是最佳的,我怎么能用python ping SOCKS?

4 个答案:

答案 0 :(得分:7)

SOCKS代理提供TCP代理服务(SOCKS 5添加了UDP支持)。您无法“通过”SOCKS代理服务执行ICMP Echo。

即使你可以,你也会测试ICMP Echo和Echo Reply,而不是你的SOCKS服务器运行正常。

如果您想测试您的SOCKS服务器“运行正常”,我建议您打开本地侦听端口,然后尝试通过SOCKS服务连接到它。

答案 1 :(得分:4)

您可以使用httping通过SOCKS服务器检查网络,而不是普通的ping

  

ping:将ICMP ECHO_REQUEST数据包发送到网络主机
  httping:衡量网络服务器的延迟和吞吐量

ICMP工作在OSI模型的Layer3(网络层),SOCKS工作在Layer5(会话层),httping工作在Layer7(应用层),因此ping消息无法通过SOCKS,但是httping消息可以。

例如,我在VPS中设置了shadowsocks(SOCKS5代理)服务器,使用我的macbook pro作为客户端使用127.0.0.1:1080,我想检查google的网络是否良好。

httping -x 127.0.0.1:1080 -g http://www.google.com -5

screen capture of httping google through SOCKS5

httping usage httping [options] -5 The proxy server selected is a SOCKS5 server. -g url This selects the url to probe. E.g.: http://localhost/ -x proxyhost[:port] Probe using a proxyserver.

答案 2 :(得分:1)

你可以使用curl来获取一些网站,如果有正确答案,那么socks代理就可以了。例如

curl --socks5 127.0.0.1:1080 ifconfig.me

如果你收到警告,那么你的袜子就无法使用了

curl: (7) Unable to receive initial SOCKS5 response.

答案 3 :(得分:0)

这就是我的方法,使用子进程执行操作系统的ping命令并使用正则表达式解析输出可能是最简单的。


修改

activestate上有一个示例,大部分都在那里,你只需要更改套接字以某种方式指定你的代理,但这不是我的区域,所以我不知道如何你会去做的。