Answers:
如果您自己创建了代理,则应首先检查是否有开放端口(该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代理中的一种方法。
someone@somewhere
用您的用户名和服务器替换,例如ssh -D8888 YOURUSER@YOURHOST
;-)
nestat -an
或netstat -an | grep LISTEN
如果路径中包含grep。
curl
提示。FWIW,curl还支持--socks5-hostname
类似,--socks5
但不尝试本地解析所提交URL的主机名(这对于连接到Intranet可能非常有用)。
您可以连接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。