1

我目前正在使用 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);

它工作得很好,但是我想通过代理服务器连接,所以我通过它路由我的互联网连接。如果这能够使用 cURL,我会使用 curl_setopt($curl_handle, CURLOPT_PROXY, $ip_address . ':4040'); 但我找不到使用 fsocketopen 的方法。如何使用 cURL 或 fsocketopen() 完成此操作?

4

2 回答 2

1

套接字没有代理。只是网关和路由器在中间(如果有的话)。你在谈论 cURL,它有代理——它只使用 http/s 代理服务。例如,如果您在服务器 example.com:8080 上有 http 代理服务,您首先需要在端口 8080 上打开与服务器 example.com(套接字)的连接,然后发送您的请求,代理将转发您的请求并返回响应。在您的情况下,您只需在特定主机上的端口 43 上打开 tcp 连接并直接与目标服务器交换数据。如果您不想直接执行此操作并透露您的 ip(或其他内容),您也需要一些服务。如果您可以访问其他机器,则可以使用它来完成这项工作。如果你想手动完成,你可以使用 ssh 或类似的东西,如果你想让它自动化,你'

希望这可以帮助。

顺便说一句,我认为没有理由在 whois 服务上使用代理。

于 2012-09-13T23:37:23.610 回答
1

您可以使用SOCKS代理将 TCP 连接从您的计算机中继到 SOCKS 服务器到 WHOIS 服务器,但您必须通过fsockopen.

另一种方法是在服务器上使用ProxyChains并通过 PHP 执行它。我在这里回答了一个类似的问题(How to capture and feed telnet using php and shell scripting?),它展示了如何从 PHP 调用代理链以在远程服务器上执行 WHOIS 命令并读取响应。

于 2012-09-13T23:59:50.720 回答