在没有 headers 的情况下卷曲 whois
curl whois without headers
我在 php 中使用 curl 来发出 whois 请求。大多数情况下这工作正常,但偶尔 whois 服务器会拒绝 curl 请求,因为它们使用了无效的格式。
这是一个工作示例:
curl -X "who-is.ga" whois.my.ga:43
另一方面,这不起作用:
curl -X "ikea.eu" whois.eu:43
欧盟 whois 服务器拒绝该格式,因为(看起来)在请求中包含所有 headers,即:
WHOIS ikea.eu / HTTP/1.1User-Agent: curl/7.19.7
(x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3
libidn/1.18 libssh2/1.4.2Host: whois.eu:43Accept: /
虽然大多数 whois 服务器会在 \r\n 之前解析请求,但有些服务器会考虑整个请求。
所以我想删除额外的 headers,但只能删除用户代理和主机。
curl -X "ikea.eu" --header "Host:" --header "Accept:" --user-agent ""
whois.eu:43
但是headers“/”和"HTTP/1.1"仍然存在。
% WHOIS ikea.eu / HTTP/1.1
-7: %Invalid pattern
关于如何静音所有 headers 的任何建议,有效地仅发送“-X”的内容或如何单独删除不需要的 headers?
注意:我对 whois 请求使用 curl,因为它允许我使用代理。我故意把这部分从上面的例子中去掉。
第一个服务器 whois.eu
似乎可以工作,因为它在遇到空格时停止读取。另一个 whois.eu
从套接字读取所有输入并将其用作您的查询。
最好的办法可能是在 telnet 模式下使用 cURL 发送单个域并读取响应。
这适用于我尝试过的大多数 WHOIS 服务器:
echo ikea.eu | curl telnet://whois.eu:43
需要注意的是,cURL 一次写入一个字节到 telnet 模式的套接字,而不是一次写入所有数据。这可能会导致某些服务器出现问题,这些服务器不等待换行符终止输入(例如 whois.tucows.com:43),而是在接收到任何数据后执行查询。
在这些情况下,您可以使用 netcat:
echo yahoo.com | nc whois.tucows.com 43
它还支持代理:
echo yahoo.com | nc -X5 -x127.0.0.1:1080 whois.tucows.com 43
我在 php 中使用 curl 来发出 whois 请求。大多数情况下这工作正常,但偶尔 whois 服务器会拒绝 curl 请求,因为它们使用了无效的格式。
这是一个工作示例:
curl -X "who-is.ga" whois.my.ga:43
另一方面,这不起作用:
curl -X "ikea.eu" whois.eu:43
欧盟 whois 服务器拒绝该格式,因为(看起来)在请求中包含所有 headers,即:
WHOIS ikea.eu / HTTP/1.1User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2Host: whois.eu:43Accept: /
虽然大多数 whois 服务器会在 \r\n 之前解析请求,但有些服务器会考虑整个请求。
所以我想删除额外的 headers,但只能删除用户代理和主机。
curl -X "ikea.eu" --header "Host:" --header "Accept:" --user-agent "" whois.eu:43
但是headers“/”和"HTTP/1.1"仍然存在。
% WHOIS ikea.eu / HTTP/1.1 -7: %Invalid pattern
关于如何静音所有 headers 的任何建议,有效地仅发送“-X”的内容或如何单独删除不需要的 headers?
注意:我对 whois 请求使用 curl,因为它允许我使用代理。我故意把这部分从上面的例子中去掉。
第一个服务器 whois.eu
似乎可以工作,因为它在遇到空格时停止读取。另一个 whois.eu
从套接字读取所有输入并将其用作您的查询。
最好的办法可能是在 telnet 模式下使用 cURL 发送单个域并读取响应。
这适用于我尝试过的大多数 WHOIS 服务器:
echo ikea.eu | curl telnet://whois.eu:43
需要注意的是,cURL 一次写入一个字节到 telnet 模式的套接字,而不是一次写入所有数据。这可能会导致某些服务器出现问题,这些服务器不等待换行符终止输入(例如 whois.tucows.com:43),而是在接收到任何数据后执行查询。
在这些情况下,您可以使用 netcat:
echo yahoo.com | nc whois.tucows.com 43
它还支持代理:
echo yahoo.com | nc -X5 -x127.0.0.1:1080 whois.tucows.com 43