1

を使用gethostbyname()しても常に IP アドレスが返されるとは限りません。代わりに、同じホスト名を再度返します。この理由は何ですか?最初は偽のホスト名だと思いました。次に、いくつかのボットをキャッチしようとしている関数でそれを使用すると、baidu が偽のホスト名を使用しているとキャッチされましたが、テストしたところ、これは誤りでした。

例:

echo gethostbyname('baiduspider-123-125-71-12.crawl.baidu.com');

戻り値

baiduspider-123-125-71-12.crawl.baidu.com

しかし

echo gethostbyname('201-35-178-134.cslce701.dsl.brasiltelecom.net.br');

戻り値

201.35.178.134

これをよりよく理解するための助けがあれば幸いです。

4

1 に答える 1

2

ドキュメントを参照してください。失敗すると、IPv4 アドレスまたは変更されていないホスト名を含む文字列が返されます。

ドメインが見つからない場合、または対応する A レコードがない場合は、変更されていないホスト名を返します。

あなたの例では、Baidu はボットの A レコードを設定していません。Linux では、hostコマンドは次のように出力します。

Host baiduspider-123-125-71-12.crawl.baidu.com not found: 3(NXDOMAIN)
于 2013-10-25T22:57:05.733 に答える