通过SOCKS服务器使用ping?
我想定期检查一下我的SOCKS服务器是否正常工作。为此,我想通过SOCKS服务器去ping一下8.8.8.8(谷歌的DNS服务器)。
有没有其他推荐的方法?如果这个方法不错的话,我该怎么用Python通过SOCKS来ping呢?
4 个回答
你可以用curl这个工具通过socks代理访问一些网站,如果能成功获取到正确的内容,那说明这个socks代理是可以用的。比如说:
curl --socks5 127.0.0.1:1080 ifconfig.me
如果你收到了警告信息,那说明你的socks代理是不能用的。
curl: (7) Unable to receive initial SOCKS5 response.
你可以用 httping
来通过 SOCKS 服务器检查网络,而不是用普通的 ping
。
ping:向网络主机发送 ICMP ECHO_REQUEST 数据包
httping:测量网页服务器的延迟和吞吐量
ICMP 在 OSI 模型的第三层(网络层)工作,SOCKS 在第五层(会话层)工作,而 httping 在第七层(应用层)工作。所以 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
通过 SOCKS5 访问 Google 的 httping 截图
httping 使用方法
httping [选项]
-5 选择的代理服务器是 SOCKS5 服务器。
-g url 选择要探测的 URL。例如: http://localhost/
-x proxyhost[:port] 使用代理服务器进行探测。
SOCKS代理是一种提供TCP代理服务的工具(SOCKS 5还增加了对UDP的支持)。不过,你不能通过SOCKS代理来进行ICMP回显测试。
即使你能这样做,你测试的也只是ICMP回显和回显回复,而不是你的SOCKS服务器是否正常运行。
如果你想确认你的SOCKS服务器是否“正常运行”,我建议你打开一个本地监听端口,然后通过SOCKS服务尝试连接这个端口。