我想定期检查我的SOCKS服务器是否正常工作。为了做到这一点,我想到通过SOCKS服务器ping 8.8.8.8(谷歌DNS服务器)。
还有其他推荐的方法吗? 如果它是最佳的,我怎么能用python ping SOCKS?
答案 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上有一个示例,大部分都在那里,你只需要更改套接字以某种方式指定你的代理,但这不是我的区域,所以我不知道如何你会去做的。