我嘗試導出到 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 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