如何通过 whois 命令使用代理?

如何通过 whois 命令使用代理?

我尝试导出到 http_proxy 和 https_proxy,但这似乎不起作用。

我猜测从命令行查询whois信息时还有另一种使用代理的方法?

答案1

whois 命令使用特定的协议和端口进行通信,即whois 43/tcp;所以显然尝试使用 HTTP(S)(默认情况下 HTTP 端口 80/tcp 和 HTTPS 443/tcp)。

因此 HTTP 代理感知功能将不起作用,因为这些协议不涉及 whois 协议的内部工作。

如果您需要设置外部代理,则需要一个袜子感知代理,如本例所示https://stackoverflow.com/questions/6718836/how-can-i-implement-a-simple-whois-proxy-in-perl

对于 python 中的 Whois 代理,请参阅乌霍伊斯德以及如何使用它的进一步说明:python:如何使用 uwhoisd 代理执行 whois

也可以看看关于 WHOIS 协议

WHOIS 协议是一个简单的、基于明文的协议,监​​听 TCP 端口 43。有一个 RFC 定义了该协议,RFC 3912

答案2

谁是是 TCP/IP 协议,HTTP 不参与查询,因此 HTTP 代理不起作用。

如果您的代理服务器也提供 SOCKS 接口,您可以尝试使用tsocks 或 proxychains-ng 如此处所述执行查询。

答案3

对我来说这有效:

ncat --listen --exec '/usr/bin/ncat --proxy <proxy_ip>:<proxy_port> whois.ripe.net 43' 8043 &

查询:

whois --host localhost --port 8043 <ip_that_i_want_to_whois>

答案4

如果您允许端口 43 退出您的 http 代理,那么您可以使用 shell 脚本通过显式CONNECT请求来执行此操作

$1作为主机传递,whois例如whois.nic.iana$2作为查询和$3作为代理主机

#!/bin/sh
(
sleep 1
echo "CONNECT $1:43 HTTP/1.1"
echo ""

sleep 2
echo "$2"
echo ""
sleep 4

) | telnet $3 8080

相关内容