通过SOCKS服务器使用ping?

7 投票
4 回答
22263 浏览
提问于 2025-04-16 13:30

我想定期检查一下我的SOCKS服务器是否正常工作。为此,我想通过SOCKS服务器去ping一下8.8.8.8(谷歌的DNS服务器)。

有没有其他推荐的方法?如果这个方法不错的话,我该怎么用Python通过SOCKS来ping呢?

4 个回答

4

你可以用curl这个工具通过socks代理访问一些网站,如果能成功获取到正确的内容,那说明这个socks代理是可以用的。比如说:

curl --socks5 127.0.0.1:1080 ifconfig.me

如果你收到了警告信息,那说明你的socks代理是不能用的。

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

你可以用 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] 使用代理服务器进行探测。

14

SOCKS代理是一种提供TCP代理服务的工具(SOCKS 5还增加了对UDP的支持)。不过,你不能通过SOCKS代理来进行ICMP回显测试。

即使你能这样做,你测试的也只是ICMP回显和回显回复,而不是你的SOCKS服务器是否正常运行。

如果你想确认你的SOCKS服务器是否“正常运行”,我建议你打开一个本地监听端口,然后通过SOCKS服务尝试连接这个端口。

撰写回答