是否有一个可以在 Linux 终端中运行的简单命令判断代理是 SOCKS 还是 HTTP?
答案1
您可以检查哪些相关端口是打开的(例如使用 telnet)。Socks 通常使用端口 1080,HTTP 通常使用端口 80、443、8443 或 8080。
答案2
除了尝试一下它是 SOCKS 还是 HTTP 之外,不,你不能。
测试它是否是 http 代理:
set http_proxy = http://1.0.0.1:8080
wget --proxy=on http://www.google.com/
这将下载 google 的 html 根,如果它具有正确的内容,您就知道它是一个 http 代理。
答案3
使用以下 shell 命令来curl
检查:
ip=127.0.0.1
port=8080
(timeout 2 curl -x socks5://$ip:$port -qs -o/dev/null http://example.com/ && printf "socks5\t$ip\t$port\n") \
|| (timeout 2 curl -x socks4://$ip:$port -qs -o/dev/null http://example.com/ && printf "socks4\t$ip\t$port\n") \
|| (timeout 2 curl -x http://$ip:$port -qs -o/dev/null http://example.com/ && printf "http\t$ip\t$port\n")
完整脚本请见check_proxies.sh
文件。
答案4
在我的 SLES11 VM 上,我运行socklist
并grep
进行端口:
dev-s11:~ # socklist | grep 22
tcp 22 21112 0 4345 3 sshd
tcp 22 10473174 0 32616 3 sshd
这告诉我它是否由 ssh 管理。如果您使用默认端口,http 将为 80,ssh 将为 22。这将帮助您入门 - 如果您需要更多详细信息,请询问更多问题。