6

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

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

4

4 回答 4

12

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

即使可以,您也将测试 ICMP Echo 和 Echo Reply,而不是您的 SOCKS 服务器运行良好。

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

于 2011-03-11T15:57:27.293 回答
6

您可以使用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

通过 SOCKS5 访问 google 的屏幕截图

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.

于 2016-06-10T15:29:52.470 回答
3

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

curl --socks5 127.0.0.1:1080 ifconfig.me

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

curl: (7) Unable to receive initial SOCKS5 response.
于 2015-04-28T00:21:51.357 回答
0

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


编辑

有一个关于activestate的示例,大部分情况下,您只需要更改套接字以以某种方式指定您的代理,但这并不是我真正的领域,所以我不确定您将如何去做。

于 2011-03-11T15:40:23.433 回答