没有标题的卷曲whois

时间:2016-07-11 17:00:35

标签: curl libcurl whois

我在php中使用curl来发出whois请求。大部分时间这种方法都可以,但是偶尔的whois服务器拒绝curl请求,因为它们使用的格式无效。

这是一个有效的例子:

  

curl -X“who-is.ga”whois.my.ga:43

另一方面,这不起作用:

  

curl -X“ikea.eu”whois.eu:43

EU whois服务器拒绝该格式,因为(看起来)包含请求中的所有标头,即:

  

WHOIS ikea.eu / HTTP / 1.1User-Agent:curl / 7.19.7   (x86_64-redhat-linux-gnu)libcurl / 7.19.7 NSS / 3.21基本ECC zlib / 1.2.3   libidn / 1.18 libssh2 / 1.4.2Host:whois.eu:43接受: /

虽然大多数whois服务器解析请求直到\ r \ n,但有些服务器会考虑整个请求。

所以我想删除其他标头,但只能删除用户代理和主机。

  

curl -X“ikea.eu”--header“Host:” - header“Accept:” - user-agent“”   whois.eu:43

但标题“/”和“HTTP / 1.1”仍然存在。

  

%WHOIS ikea.eu / HTTP / 1.1   -7:%无效模式

有关如何将所有标头静音的建议,实际上只发送“-X”的内容或如何单独删除不需要的标头?

注意:我使用curl进行whois请求,因为它允许我使用代理。我故意将这部分留在上面的例子中。

1 个答案:

答案 0 :(得分:2)

第一台服务器whois.eu似乎可以正常工作,因为它在遇到空格时会停止阅读。另一个,whois.eu读取套接字的所有输入并将其用作您的查询。

最好的办法是在telnet模式下使用cURL发送单个域并读取响应。

在我尝试的大多数WHOIS服务器上,这对我有用:

echo ikea.eu | curl telnet://whois.eu:43

应该注意,cURL一次一个字节地写入telnet模式的套接字,而不是一次写入所有数据。这可能会导致某些服务器出现问题,这些服务器不会等待换行符终止输入(例如whois.tucows.com:43),而是在他们检索到任何数据后执行查询。 / p>

在这些情况下,您可以使用netcat:

echo yahoo.com | nc whois.tucows.com 43

它还支持代理:

echo yahoo.com | nc -X5 -x127.0.0.1:1080 whois.tucows.com 43