如何使用终端中的命令判断代理是 SOCKS 还是 HTTP?

如何使用终端中的命令判断代理是 SOCKS 还是 HTTP?

是否有一个可以在 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 上,我运行socklistgrep进行端口:

dev-s11:~ # socklist | grep 22
tcp 22 21112 0 4345 3 sshd
tcp 22 10473174 0 32616 3 sshd

这告诉我它是否由 ssh 管理。如果您使用默认端口,http 将为 80,ssh 将为 22。这将帮助您入门 - 如果您需要更多详细信息,请询问更多问题。

相关内容