我目前正在使用PHP打开端口43连接,使用此代码直接从注册表获取whois信息。
// connecting to the whois server.
$handle = fsockopen($server, 43);
if (!$handle)
return false; // connection failure
//asking the server
fwrite($handle, $domain_name."\r\n");
// getting response
$response = '';
while (!feof($handle))
$response .= fgets($handle, 1024);
fclose($handle);
它工作得很好但是我想通过代理服务器连接,所以我通过它路由我的intertent连接。如果能够使用cURL,我会使用curl_setopt($ curl_handle,CURLOPT_PROXY,$ ip_address。':4040');但我找不到使用fsocketopen做到这一点的方法。我怎样才能用cURL或fsocketopen()实现这个目标?
答案 0 :(得分:1)
套接字没有代理。只是网关和路由器在中间(如果有的话)。你在谈论cURL,它有代理 - 它只使用http / s代理服务。例如,如果您在服务器example.com:8080上有http代理服务,则首先需要在端口8080上打开与服务器example.com(套接字)的连接,然后发送您的请求,代理将转发您的请求并返回响应。在您的情况下,您只需在特定主机上的端口43上打开tcp连接,并直接与目标服务器交换数据。如果您不想直接这样做并透露您的IP(或其他东西),您也需要一些服务。如果您可以访问其他机器,则可以使用它来完成工作。如果你想手动执行它你可以使用ssh或类似的东西,如果你想让它自动化,你可能需要在中间服务器上编写服务,因为你可能不会找到任何公共代理服务器与其他协议比流行http,ftp,...
希望这有帮助。
顺便说一句,我认为你没有理由在whois服务上使用代理。
答案 1 :(得分:0)
您可以使用SOCKS代理中继从您的计算机到SOCKS服务器到WHOIS服务器的TCP连接,但您必须在fsockopen
上实施SOCKS通信协议。
另一种方法是在服务器上使用ProxyChains并通过PHP执行它。我在这里回答了一个类似的问题(How to capture and feed telnet using php and shell scripting?),其中展示了如何从PHP调用代理链以在远程服务器上执行WHOIS命令并阅读响应。