PHPでWhois情報取得。ただし、ライブラリは使っちゃダメ…(´Д`;)

  • Twitter
  • Facebook
  • Pinterest
  • Hatena
  • instagram
  • YouTube

※以前、はてなブログで公開していたエントリーです。

IPアドレスやドメインのWhois情報を取得するには、Linux環境であればwhoisコマンドが使えるのですが、Windows環境では、whois.jp や ベリサイン(Verisign)等のWEB上のWhois情報提供サービスを利用するか、GTwhoisの様なアプリを使う事になります。

ちょっとWhois情報を参照するだけなのに、各Whois情報提供サービスにアクセスしたり、自前でDNSサーバーを構築するのもアレなんで、PHPでWhois情報が取得出来ないか色々調べてみたのですが、どうやらライブラリ(PEAR::Net_Whois)を使うのが簡単だと判りました。

でも最初からライブラリを使うのは、何だか負けた気がする…。

私見ですが、例え頻雑かつ冗長なコードになり、動作するまでに時間を要したとしても、学習段階では自分なりに言語の標準関数を試してみるのが良いと思っています。(あくまで個人の感想です)

「頭の固いヤツ…」 と言われても、ライブラリを使うのは最終手段であり、ライブラリの内部動作(?)をよく理解しないうちに使うのは、折角の学習機会を逸して自分の引き出しを減らす事になると思っています。(最初からライブラリを使うのは、掛け算や割り算を勉強するのにいきなり電卓を使うイメージ?)

で、色々調べてやってみたら出来たので記事にしました。ヽ(´ー`)ノ

流れとしてはIPやドメイン名をフォームから受け取って、配列の中の条件に合致する該当Whoisサーバーをピックアップして問い合わせを実行。

返って来る値を受け取って空の変数に格納するだけなのですが、各IPの割り当てやgTLD、ccTLDを管理するサーバーが結構な数にのぼるので、どちらかと言えば whoisサーバーをリストアップ、確認、配列化する作業の方が大変でした。(^^;

ちなみに下のコードでは、入力フォームやPHPにPOSTする値の厳密なチェック部分は省略しています。

URLからドメインを抽出したい場合は parse_url()関数を使うのが手っ取り早いと思いますが、この関数で得られるホスト名がドメイン名だとは限らないので、正規表現でのチェックが必要だと思います。

また、各サーバー情報は不定期に変更される事があるのでリストのメンテナンスは必須です。
一応何度も配列内の値を確認していますが、入力ミスも有り得るので、その点は留意して下さい。(既にサーバー情報が古いかも?)

今回参考にさせていただいた記事

サーバー情報

PHP 関数

【gTLD.ccTLD】配列化


$arr_tld = array(
'aero' => 'whois.aero',
'arpa' => 'whois.iana.org',
'asia' => 'whois.nic.asia',
'biz' => 'whois.biz',
'cat' => 'whois.cat',
'com' => 'whois.verisign-grs.com',
'coop' => 'whois.nic.coop',
'edu' => 'whois.educause.edu',
'gov' => 'whois.dotgov.gov',
'info' => 'whois.afilias.net',
'int' => 'whois.iana.org',
'jobs' => 'jobswhois.verisign-grs.com',
'mil' => 'whois.nic.mil',
'mobi' => 'whois.dotmobiregistry.net',
'museum' => 'whois.museum',
'name' => 'whois.nic.name',
'net' => 'whois.verisign-grs.com',
'org' => 'whois.pir.org',
'pro' => 'whois.registrypro.pro',
'tel' => 'whois.nic.tel',
'travel' => 'whois.nic.travel',
'ac' => 'whois.nic.ac',
'ad' => 'whois.ripe.net',
'ae' => 'whois.nic.ae',
'af' => 'whois.nic.af',
'ag' => 'whois.nic.ag',
'ai' => 'whois.ai',
'al' => 'whois.ripe.net',
'am' => 'whois.amnic.net',
'as' => 'whois.nic.as',
'at' => 'whois.nic.at',
'au' => 'whois.aunic.net',
'az' => 'whois.ripe.net',
'ba' => 'whois.ripe.net',
'be' => 'whois.dns.be',
'bg' => 'whois.register.bg',
'bm' => 'rwhois.ibl.bm',
'bo' => 'whois.adsib.gob.bo',
'br' => 'whois.registro.br',
'bt' => 'whois.nic.bt',
'bv' => 'whois.ripe.net',
'by' => 'whois.ripe.net',
'bz' => 'whois.belizenic.bz',
'ca' => 'whois.cira.ca',
'cc' => 'ccwhois.verisign-grs.com',
'cd' => 'whois.nic.cd',
'ch' => 'whois.nic.ch',
'ci' => 'whois.nic.ci',
'ck' => 'whois.ck-nic.org.ck',
'cl' => 'whois.nic.cl',
'cn' => 'whois.cnnic.cn',
'co' => 'whois.nic.co',
'cx' => 'whois.nic.cx',
'cy' => 'whois.ripe.net',
'cz' => 'whois.nic.cz',
'de' => 'whois.denic.de',
'dk' => 'whois.dk-hostmaster.dk',
'dm' => 'whois.nic.dm',
'do' => 'whois.nic.do',
'dz' => 'whois.ripe.net',
'ee' => 'whois.eenet.ee',
'eg' => 'whois.ripe.net',
'es' => 'whois.ripe.net',
'eu' => 'whois.eu',
'fi' => 'whois.ficora.fi',
'fj' => 'whois.usp.ac.fj',
'fo' => 'whois.ripe.net',
'fr' => 'whois.nic.fr',
'ga' => 'whois.ripe.net',
'gb' => 'whois.ripe.net',
'gd' => 'whois.adamsnames.com',
'ge' => 'whois.ripe.net',
'gf' => 'whois.nplus.gf',
'gg' => 'whois.channelisles.net',
'gi' => 'whois2.afilias-grs.net',
'gl' => 'whois.ripe.net',
'gm' => 'whois.ripe.net',
'gr' => 'whois.ripe.net',
'gs' => 'whois.nic.gs',
'gy' => 'whois.registry.gy',
'hk' => 'whois.hkirc.hk',
'hm' => 'whois.nic.hm',
'hn' => 'whois2.afilias-grs.net',
'hr' => 'whois.ripe.net',
'hu' => 'whois.nic.hu',
'id' => 'whois.idnic.net.id',
'ie' => 'whois.domainregistry.ie',
'il' => 'whois.isoc.org.il',
'in' => 'whois.inregistry.net',
'io' => 'whois.nic.io',
'ir' => 'whois.nic.ir',
'is' => 'whois.isnet.is',
'it' => 'whois.nic.it',
'je' => 'whois.channelisles.net',
'jo' => 'whois.ripe.net',
'jp' => 'whois.jprs.jp',
'ke' => 'whois.kenic.or.ke',
'kg' => 'whois.domain.kg',
'kh' => 'whois.knnic.net.kh',
'ki' => 'whois.nic.ki',
'kp' => 'whois.kcce.kp',
'kr' => 'whois.nic.or.kr',
'kz' => 'whois.nic.kz',
'la' => 'whois.nic.la',
'li' => 'whois.nic.li',
'lk' => 'whois.nic.lk',
'lt' => 'whois.domreg.lt',
'lu' => 'whois.dns.lu',
'lv' => 'whois.nic.lv',
'ly' => 'whois.nic.ly',
'ma' => 'whois.iam.net.ma',
'md' => 'whois.nic.md',
'me' => 'whois.nic.me',
'mg' => 'whois.nic.mg',
'mk' => 'whois.ripe.net',
'mm' => 'whois.nic.mm',
'mn' => 'whois.nic.mn',
'ms' => 'whois.nic.ms',
'mt' => 'whois.ripe.net',
'mu' => 'whois.nic.mu',
'mx' => 'whois.nic.mx',
'my' => 'whois.mynic.net.my',
'na' => 'whois.na-nic.com.na',
'ng' => 'whois.rg.net',
'nl' => 'whois.domain-registry.nl',
'no' => 'whois.norid.no',
'nu' => 'whois.nic.nu',
'nz' => 'whois.srs.net.nz',
'pe' => 'whois.nic.pe',
'pk' => 'whois.pknic.net.pk',
'pl' => 'whois.dns.pl',
'pm' => 'whois.nic.pm',
'pr' => 'whois.uprr.pr',
'pt' => 'whois.dns.pt',
'pw' => 'whois.nic.pw',
're' => 'whois.nic.re',
'ro' => 'whois.rotld.ro',
'ru' => 'whois.ripn.net',
'sa' => 'whois.nic.net.sa',
'sb' => 'whois.nic.net.sb',
'sc' => 'whois2.afilias-grs.net',
'se' => 'whois.iis.se',
'sg' => 'whois.nic.net.sg',
'sh' => 'whois.nic.sh',
'si' => 'whois.arnes.si',
'sj' => 'whois.ripe.net',
'sk' => 'whois.ripe.net',
'sm' => 'whois.ripe.net',
'so' => 'whois.nic.so',
'sr' => 'whois.register.sr',
'st' => 'whois.nic.st',
'su' => 'whois.ripn.net',
'tc' => 'whois.adamsnames.tc',
'tf' => 'whois.nic.tf',
'th' => 'whois.thnic.co.th',
'tj' => 'whois.nic.tj',
'tk' => 'whois.dot.tk',
'tl' => 'whois.nic.tl',
'tm' => 'whois.nic.tm',
'tn' => 'whois.ripe.net',
'to' => 'whois.tonic.to',
'tr' => 'whois.nic.tr',
'tv' => 'tvwhois.verisign-grs.com',
'tw' => 'whois.twnic.net.tw',
'ua' => 'whois.net.ua',
'ug' => 'whois.co.ug',
'uk' => 'whois.nic.uk',
'us' => 'whois.nic.us',
'uy' => 'www.rau.edu.uy',
'uz' => 'whois.cctld.uz',
'va' => 'whois.ripe.net',
'vc' => 'whois2.afilias-grs.net',
've' => 'whois.nic.ve',
'vg' => 'whois.adamsnames.tc',
'wf' => 'whois.nic.wf',
'ws' => 'whois.website.ws',
'yt' => 'whois.nic.yt',
'yu' => 'whois.ripe.net',
'ac.uk' => 'whois.ja.net',
'ac.za' => 'whois.ac.za',
'asn.au' => 'whois.ausregistry.net.au',
'br.com' => 'whois.centralnic.net',
'cn.com' => 'whois.centralnic.net',
'com.au' => 'whois.ausregistry.net.au',
'de.com' => 'whois.centralnic.net',
'edu.cn' => 'whois.edu.cn',
'eu.com' => 'whois.centralnic.net',
'eu.org' => 'whois.eu.org',
'fed.us' => 'whois.nic.gov',
'gb.com' => 'whois.nomination.net',
'gb.net' => 'whois.nomination.net',
'gov.uk' => 'whois.ja.net',
'hu.com' => 'whois.centralnic.net',
'id.au' => 'whois.ausregistry.net.au',
'jpn.com' => 'whois.centralnic.net',
'net.au' => 'whois.ausregistry.net.au',
'no.com' => 'whois.centralnic.net',
'org.au' => 'whois.ausregistry.net.au',
'org.za' => 'whois.org.za:4321',
'qc.com' => 'whois.centralnic.net',
'ru.com' => 'whois.centralnic.net',
'sa.com' => 'whois.centralnic.net',
'se.com' => 'whois.centralnic.net',
'se.net' => 'whois.centralnic.net',
'uk.com' => 'whois.centralnic.net',
'uk.net' => 'whois.centralnic.net',
'us.com' => 'whois.centralnic.net',
'uy.com' => 'whois.centralnic.net',
'web.com' => 'whois.centralnic.net',
'za.com' => 'whois.centralnic.net',
'net.cn' => 'whois.cnnic.net.cn',
'bj.cn' => 'whois.cnnic.net.cn',
'sh.cn' => 'whois.cnnic.net.cn',
'tj.cn' => 'whois.cnnic.net.cn',
'cq.cn' => 'whois.cnnic.net.cn',
'he.cn' => 'whois.cnnic.net.cn',
'sx.cn' => 'whois.cnnic.net.cn',
'nm.cn' => 'whois.cnnic.net.cn',
'ln.cn' => 'whois.cnnic.net.cn',
'jl.cn' => 'whois.cnnic.net.cn',
'hl.cn' => 'whois.cnnic.net.cn',
'js.cn' => 'whois.cnnic.net.cn',
'zj.cn' => 'whois.cnnic.net.cn',
'ah.cn' => 'whois.cnnic.net.cn',
'fj.cn' => 'whois.cnnic.net.cn',
'jx.cn' => 'whois.cnnic.net.cn',
'sd.cn' => 'whois.cnnic.net.cn',
'ha.cn' => 'whois.cnnic.net.cn',
'hb.cn' => 'whois.cnnic.net.cn',
'hn.cn' => 'whois.cnnic.net.cn',
'gd.cn' => 'whois.cnnic.net.cn',
'gx.cn' => 'whois.cnnic.net.cn',
'hi.cn' => 'whois.cnnic.net.cn',
'sc.cn' => 'whois.cnnic.net.cn',
'gz.cn' => 'whois.cnnic.net.cn',
'yn.cn' => 'whois.cnnic.net.cn',
'xz.cn' => 'whois.cnnic.net.cn',
'sn.cn' => 'whois.cnnic.net.cn',
'gs.cn' => 'whois.cnnic.net.cn',
'qh.cn' => 'whois.cnnic.net.cn',
'nx.cn' => 'whois.cnnic.net.cn',
'xj.cn' => 'whois.cnnic.net.cn',
'tw.cn' => 'whois.cnnic.net.cn',
'hk.cn' => 'whois.cnnic.net.cn',
'mo.cn' => 'whois.cnnic.net.cn',
'net.th' => 'whois.thnic.net',
'com.tw' => 'whois.twnic.net',
'idv.tw' => 'whois.twnic.net',
'edu.tw' => 'whois.twnic.net',
'net.tw' => 'whois.twnic.net',
'net.br' => 'whois.registro.br',
'com.br' => 'whois.registro.br',
'gov.br' => 'whois.registro.br',
);

ccTLDの種類って、凄い数なのね…

【IP】配列化


$arr_ipwho = array(
'1' => 'whois.apnic.net',
'2' => 'whois.ripe.net',
'5' => 'whois.ripe.net',
'7' => 'whois.arin.net',
'14' => 'whois.apnic.net',
'23' => 'whois.arin.net',
'24' => 'whois.arin.net',
'25' => 'whois.ripe.net',
'27' => 'whois.apnic.net',
'31' => 'whois.ripe.net',
'36' => 'whois.apnic.net',
'37' => 'whois.ripe.net',
'39' => 'whois.apnic.net',
'41' => 'whois.afrinic.net',
'42' => 'whois.apnic.net',
'45' => 'whois.arin.net',
'46' => 'whois.ripe.net',
'49' => 'whois.apnic.net',
'50' => 'whois.arin.net',
'51' => 'whois.ripe.net',
'58' => 'whois.apnic.net',
'59' => 'whois.apnic.net',
'60' => 'whois.apnic.net',
'61' => 'whois.apnic.net',
'62' => 'whois.ripe.net',
'63' => 'whois.arin.net',
'64' => 'whois.arin.net',
'65' => 'whois.arin.net',
'66' => 'whois.arin.net',
'67' => 'whois.arin.net',
'68' => 'whois.arin.net',
'69' => 'whois.arin.net',
'70' => 'whois.arin.net',
'71' => 'whois.arin.net',
'72' => 'whois.arin.net',
'73' => 'whois.arin.net',
'74' => 'whois.arin.net',
'75' => 'whois.arin.net',
'76' => 'whois.arin.net',
'77' => 'whois.ripe.net',
'78' => 'whois.ripe.net',
'79' => 'whois.ripe.net',
'80' => 'whois.ripe.net',
'81' => 'whois.ripe.net',
'82' => 'whois.ripe.net',
'83' => 'whois.ripe.net',
'84' => 'whois.ripe.net',
'85' => 'whois.ripe.net',
'86' => 'whois.ripe.net',
'87' => 'whois.ripe.net',
'88' => 'whois.ripe.net',
'89' => 'whois.ripe.net',
'90' => 'whois.ripe.net',
'91' => 'whois.ripe.net',
'92' => 'whois.ripe.net',
'93' => 'whois.ripe.net',
'94' => 'whois.ripe.net',
'95' => 'whois.ripe.net',
'96' => 'whois.arin.net',
'97' => 'whois.arin.net',
'98' => 'whois.arin.net',
'99' => 'whois.arin.net',
'100' => 'whois.arin.net',
'101' => 'whois.apnic.net',
'102' => 'whois.afrinic.net',
'103' => 'whois.apnic.net',
'104' => 'whois.arin.net',
'105' => 'whois.afrinic.net',
'106' => 'whois.apnic.net',
'107' => 'whois.arin.net',
'108' => 'whois.arin.net',
'109' => 'whois.ripe.net',
'110' => 'whois.apnic.net',
'111' => 'whois.apnic.net',
'112' => 'whois.apnic.net',
'113' => 'whois.apnic.net',
'114' => 'whois.apnic.net',
'115' => 'whois.apnic.net',
'116' => 'whois.apnic.net',
'117' => 'whois.apnic.net',
'118' => 'whois.apnic.net',
'119' => 'whois.apnic.net',
'120' => 'whois.apnic.net',
'121' => 'whois.apnic.net',
'122' => 'whois.apnic.net',
'123' => 'whois.apnic.net',
'124' => 'whois.apnic.net',
'125' => 'whois.apnic.net',
'126' => 'whois.apnic.net',
'128' => 'whois.arin.net',
'129' => 'whois.arin.net',
'130' => 'whois.arin.net',
'131' => 'whois.arin.net',
'132' => 'whois.arin.net',
'133' => 'whois.apnic.net',
'134' => 'whois.arin.net',
'135' => 'whois.arin.net',
'136' => 'whois.arin.net',
'137' => 'whois.arin.net',
'138' => 'whois.arin.net',
'139' => 'whois.arin.net',
'140' => 'whois.arin.net',
'141' => 'whois.ripe.net',
'142' => 'whois.arin.net',
'143' => 'whois.arin.net',
'144' => 'whois.arin.net',
'145' => 'whois.ripe.net',
'146' => 'whois.arin.net',
'147' => 'whois.arin.net',
'148' => 'whois.arin.net',
'149' => 'whois.arin.net',
'150' => 'whois.apnic.net',
'151' => 'whois.ripe.net',
'152' => 'whois.arin.net',
'153' => 'whois.apnic.net',
'154' => 'whois.afrinic.net',
'155' => 'whois.arin.net',
'156' => 'whois.arin.net',
'157' => 'whois.arin.net',
'158' => 'whois.arin.net',
'159' => 'whois.arin.net',
'160' => 'whois.arin.net',
'161' => 'whois.arin.net',
'162' => 'whois.arin.net',
'163' => 'whois.apnic.net',
'164' => 'whois.arin.net',
'165' => 'whois.arin.net',
'166' => 'whois.arin.net',
'167' => 'whois.arin.net',
'168' => 'whois.arin.net',
'169' => 'whois.arin.net',
'170' => 'whois.arin.net',
'171' => 'whois.apnic.net',
'172' => 'whois.arin.net',
'173' => 'whois.arin.net',
'174' => 'whois.arin.net',
'175' => 'whois.apnic.net',
'176' => 'whois.ripe.net',
'177' => 'whois.lacnic.net',
'178' => 'whois.ripe.net',
'179' => 'whois.lacnic.net',
'180' => 'whois.apnic.net',
'181' => 'whois.lacnic.net',
'182' => 'whois.apnic.net',
'183' => 'whois.apnic.net',
'184' => 'whois.arin.net',
'185' => 'whois.ripe.net',
'186' => 'whois.lacnic.net',
'187' => 'whois.lacnic.net',
'188' => 'whois.ripe.net',
'189' => 'whois.lacnic.net',
'190' => 'whois.lacnic.net',
'191' => 'whois.lacnic.net',
'192' => 'whois.arin.net',
'193' => 'whois.ripe.net',
'194' => 'whois.ripe.net',
'195' => 'whois.ripe.net',
'196' => 'whois.afrinic.net',
'197' => 'whois.afrinic.net',
'198' => 'whois.arin.net',
'199' => 'whois.arin.net',
'200' => 'whois.lacnic.net',
'201' => 'whois.lacnic.net',
'202' => 'whois.apnic.net',
'203' => 'whois.apnic.net',
'204' => 'whois.arin.net',
'205' => 'whois.arin.net',
'206' => 'whois.arin.net',
'207' => 'whois.arin.net',
'208' => 'whois.arin.net',
'209' => 'whois.arin.net',
'210' => 'whois.apnic.net',
'211' => 'whois.apnic.net',
'212' => 'whois.ripe.net',
'213' => 'whois.ripe.net',
'216' => 'whois.arin.net',
'217' => 'whois.ripe.net',
'218' => 'whois.apnic.net',
'219' => 'whois.apnic.net',
'220' => 'whois.apnic.net',
'221' => 'whois.apnic.net',
'222' => 'whois.apnic.net',
'223' => 'whois.apnic.net',
);

どんどん割り当てが細分化されているなぁ…
IPv4は既に満杯らしいが、IPv6 になったらどうなるんだろう…

ドメイン Whois情報取得

  1. 入力フォームから対象ドメインを受け取る($xdom)
  2. 変数:$xdom (ドメイン名)を小文字化(大文字だと失敗する場合アリ)
  3. 変数:$xdom を $xstr に(特に意味は無いw)
  4. 配列化したドメインリストと照合。一致したら break
  5. 一応、$svflg でフラグチェック
  6. fsockopen でwhoisサーバーと43番ポート接続
  7. Whois情報を一行ずつ $whois に格納

$xdom = trim($_POST["xdom"]);
$xdom = strtolower($xdom);

if( $_POST['chk_dom']  != "" ){
	$xstr = $xdom;
	if( $xstr == "" ){
		echo "Error! input Check Domain.";
		exit;
	}

	$svflg = 0;   //フラグセット

	foreach( $arr_tld as $tld => $sv ){
		$tld = ".".$tld;

		if( preg_match("/($tld)$/", $xstr) ){
			$svflg = 1;
			break;
		}
	}

	if( $svflg == 1 ){
		//socket OPEN port=43
		$fso = fsockopen( $sv, 43, $errno, $errstr, 15 );

		if( !$fso ){
			echo "Socket connection Error! $errstr ($errno)";
			exit;
		}else{
			$whois = "";
			$rows = '0';
			fputs( $fso, "$xstr\r\n" );

			while( !feof( $fso ) ){
				$line = fgets( $fso, 512 );
				//JIS->UTF-8
				$whois .= mb_convert_encoding($line, "utf8","JIS");
				$rows++;
			}
			fclose ($fso);
		}
	}else{
		echo "$xstr : Not found Whois Server.";
		exit;
	}
}

IPアドレス Whois情報取得

  1. 入力フォームから対象IPを受け取る($xip)
  2. 変数:$xip を $xstr に(コレも特に意味は無いw)
  3. 『.(ピリオド)』で分割、第1オクテット取得
  4. 配列化したIPリスト(配列キー)と照合。
  5. 一応、$sv でリストチェック
  6. fsockopen でwhoisサーバーと43番ポート接続
  7. Whois情報を一行ずつ $whois に格納

※基本的にはドメインWhois情報取得と同じ流れで…


$xip = trim($_POST["xip"]);

if( $_POST['chk_ip']  != "" ){
	$xstr = $xip;

	if( $xstr == "" ){
		echo "Error! input Check IP.";
		exit;
	}

	$p = explode(".", $xstr);
	$oct1 = $p[0];
	$sv = $arr_ipwho[$oct1];

	if( $sv != "" ){
		//socket OPEN port=43
		$fso = fsockopen( $sv, 43, $errno, $errstr, 15 );
		if( !$fso ){
			echo "Socket connection Error! $errstr ($errno)";
			exit;
		}else{
			$whois = "";
			$rows = '0';
			fputs( $fso, "$xstr\r\n" );

			while( !feof( $fso ) ){
				$line = fgets( $fso, 512 );
				//JIS->UTF-8
				$whois .= mb_convert_encoding($line, "utf8","JIS");
				$rows++;
			}
			fclose ($fso);
		}
	}else{
		echo "$xstr : Not found Whois Server.";
		exit;
	}
}

mb_convert_encoding()を使っているのは、『.jp』ドメインの場合にWhois情報が日本語で返って来るので文字コードをUTF-8に変換する必要が有ったからです。

海外ドメインの場合は基本的に英語(シングルバイト)で返ってくるので不要かと思いますが、希に各国のローカル言語でWhois情報が返ってくる場合も有るカモ?なので、環境に合わせて適宜変更・対応して下さい。(グルーバルIPアドレスのWhois情報は英語なので不要)

上のコードでは、行数の情報が欲しかったので変数 $rows を取っていますが普段は不要かと思います。

Whois情報が正常に返って来ない場合は、対象鯖が間違っているか相手鯖が落ちている場合が殆どなので、他のWEBサービスで確認して何処に問題があるかを調べて下さい。(経験上『.org』のサーバーは一度で情報が返って来ない事が多いw)

過度な問い合わせは鯖に過負荷を掛ける事になるので、特にスクレイピング目的で使う場合などは節度をわきまえてアクセスして下さい。(`・ω・´) キリッ
 
 

カテゴリー: PHP, プログラミング タグ: , , , , , , , パーマリンク

PHPでWhois情報取得。ただし、ライブラリは使っちゃダメ…(´Д`;) への3件のフィードバック

  1. 匿名 のコメント:

    素晴らしい記事ですね!

    新しく増えたドメインをリストに追加したいと思うのですが、どのようにすればよいでしょうか。
    リンク先をいくつか見たのですが、ちょっとわからなかったです。

    お時間あるときにお返事いただけないでしょうか。
    よろしくお願いいたします。

    • doorman のコメント:

      コメントありがとうございます。(^^ゞ

      私も前から気になっていたので調べてみました。
      お役に立てるかどうか判りませんが、新しい記事にまとめてみましたので宜しければご覧下さい。
      https://roomx.jp/roomb/?p=857

  2. 匿名 のコメント:

    しらべてみました。
    こちらがwhoisサーバの設定がなくNGだった一覧です。
    http://ngdomains.pen.io/

コメント投稿