如何检查 Socks5 代理是否有效

如何检查 Socks5 代理是否有效

有没有一种简单的方法,最好使用 Linux 终端,来检查 Socks5 代理是否有效?

答案1

如果您自己创建了代理,则首先应检查是否有开放端口(p仅当相关进程是您的或您是 root 时,该参数才有效):

netstat -tlnp

这应该会给你一行类似的东西:(我有一个代理localhost:8888

tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN

如果您发现这样的行或代理不是您的,请尝试通过它发送数据包。例如,使用以下命令请求网页curl

curl --socks5 localhost:8888 binfalse.de

应该输出一些 HTML 内容。希望这有助于查找错误 ;-)


辅助:在我的示例中,我通过以下方式创建代理:

ssh -o ServerAliveInterval=60 -D8888 someone@somewhere

someone用您的用户名和目标服务器替换somewhere。当然,使用 OpenSSH 只是众多可能的 socks5 代理中的一种方法。

答案2

要让 curl 解析另一端的 DNS,请更改--socks5--socks5-hostname

手册页了解更多信息。

答案3

以下命令将测试 Socks 5 代理是否正常工作localhost:8080

timeout 5 curl -x socks5://localhost:8080 http://example.com/

否则 5 秒后会超时。如果您没有命令timeout,请放弃它。

答案4

您可以使用 netcat 连接并遵守RFC 1928与服务器对话。不过,您必须能够键入和读取不可打印的字符,或者将它们记录到文件中以供进一步检查。

例如,要测试它是否是 SOCKS5 服务器并确定它支持 no-auth、gssapi 或 usr+pwd 身份验证方法中的哪种,请发送 0x05 0x03 0x00 0x01 0x02。准备使用 usr+pwd 身份验证的 SOCKS5 服务器将回复 0x05 0x02。

或者按照以下方法检查它是否是 SOCKS5 服务器并且 no-auth(方法 0)是否有效:

echo 050100 | xxd -p -r | netcat -o out.txt {server} {port}

中断之后,如果服务器支持该方法(0),则在 out.txt 末尾它应该生成 0x05 0x00,如果服务器不支持该方法,则生成 0x05 0xFF。

相关内容