如何检查Socks5代理是否有效


36

有没有一种简便的方法(最好是使用Linux终端)来检查Socks5代理是否正常工作?

Answers:


40

如果您自己创建了代理,则应首先检查是否有开放端口(该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代理中的一种方法。


1
SSH:无法解析主机名的地方:名称或服务不知道
tony_sid

6
当然,您必须someone@somewhere用您的用户名和服务器替换,例如ssh -D8888 YOURUSER@YOURHOST;-)
binfalse 2011年

在Windows上,netstat命令为: nestat -annetstat -an | grep LISTEN如果路径中包含grep。
Erik Aronesty

感谢您的curl提示。FWIW,curl还支持--socks5-hostname类似,--socks5但不尝试本地解析所提交URL的主机名(这对于连接到Intranet可能非常有用)。
kostix

7

为了获得卷曲,以解决对对方的DNS,变化--socks5--socks5-hostname

有关更多信息,请参见手册页


谢谢,直到使用此选项,我才意识到为什么我的请求失败了。
xamox

4

以下命令将测试Socks 5代理是否在以下位置工作localhost:8080

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

否则,它将在5秒后超时。如果没有timeout命令,请将其删除。


1

您可以连接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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.