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

SOCKSプロキシを使用して、マシンからSOCKSサーバー、WHOISサーバーへのTCP接続を中継できますが、でSOCKS通信プロトコルを実装する必要がありますfsockopen

もう1つの方法は、サーバーでProxyChainsを使用し、PHPを介して実行することです。私はここで同様の質問に答えました(phpとシェルスクリプトを使用してtelnetをキャプチャしてフィードする方法は?)。これは、PHPからプロキシチェーンを呼び出してリモートサーバーでWHOISコマンドを実行し、応答を読み取る方法を示しています。

于 2012-09-13T23:59:50.720 に答える
1

ソケットにはプロキシがありません。ゲートウェイとルーターだけが中間にあります (存在する場合)。あなたはプロキシを持っているcURLについて話していました-それはhttp/sプロキシサービスのみを使用します。たとえば、サーバー example.com:8080 に http プロキシ サービスがある場合、まずポート 8080 でサーバー example.com (ソケット) への接続を開き、リクエストを送信する必要があります。プロキシはリクエストを転送し、レスポンスを返します。あなたの場合、特定のホストのポート 43 で tcp 接続を開き、ターゲット サーバーと直接データを交換します。これを直接行い、IP (または何か) を明らかにしたくない場合は、何らかのサービスも必要になります。他のマシンにアクセスできる場合は、それを使用してジョブを実行できます。手動で行いたい場合は、ssh などを使用できます。自動化したい場合は、

お役に立てれば。

ところで、whois サービスでプロキシを使用する理由がわかりません。

于 2012-09-13T23:37:23.610 に答える