2012-04-27 3 views
0

fsockopenで.de-ドメインの可用性をチェックすると、結果は常に出力されますが、cURLで約75%のクエリは失敗します。 curl_errnoはエラーコード56(CURLE_RECV_ERROR)を返します。 whois.crsnic.netで.com-domainをチェックしようとすると、毎回cURLが正常に動作します。 whois.denic.deだけが問題になります。ここでPHP - CURLを使ったDENIC whoisクエリがうまく動作しない

はコードです:

$domain = "google.de"; 
$whois_server = "whois.denic.de"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $whois_server.":43"); // Whois Server 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $domain."\r\n"); // Query 
$whois = curl_exec ($ch); 

echo "RESULT: ".$whois; 
echo "<br/>"; 
echo curl_errno ($ch); 
echo "<br/>"; 

ここfsockopenのクエリです:

fsockopen($whois_server,43, $errno, $error, 5); 

は間違っている可能性がどのような誰も考えていますか?ありがとう!

+0

DENICは、いくつかのアンチボットフィルタを確立しています。したがって、多くのリクエストを処理するには、APIを使用する必要があります。 –

+0

'whois'クエリを実行するためにHTTPライブラリを使用しないでください。ポート43でTCPソケットを開くだけです。 –

答えて

0

あなたはLinuxまたはWindowsにいますか? Linuxでの場合だけ実行します。

system('whois google.de'); 
+0

これは最悪のアドバイスです。 whoisクライアントを実行するために、プログラムからシェルにエスケープしないでください。あなたはwhoisクエリを行うPHPの特定のライブラリを持っているか、その下にポート43へのTCPソケットをオープンするだけです。 –

3

whois.denic.deリクエストの前に付加することが-T dnが必要です。

例えば:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "-T dn $domain\r\n"); // Query 
関連する問題