CHANSHIGELOG

いろんなこと

ドメインのwhoisとdnsレコードを検索できるAPIをつくってみた

ドメインwhois情報やDNSレコードを検索できるWHOISPROXYサイトを運営していますが、世の中に新しいドメインが増えて、検索できる種類が限られてきたことと、そろそろ(見た目も)作り変えたいなと思ってきたので、SlimPHP3x(Framework)を使って簡単なAPIを作ってみました。

APIにするからにはそれっぽくapi.whoisproxy.infoFQDNとして、WEB上でも検索できる2種類(whois, dig)のエンドポイントを用意しました。
結果は、安定のJSON形式で返すようにしています。

https://api.whoisproxy.info/{whois or dig}/{検索したいドメイン名} でリクエストする感じです。

試しにAppleiCloudドメイン(icloud.com)を使ってWHOISとDIGのリクエスト(GET)を投げると、以下のように返ってきます。

/whois/icloud.com

{
  "code": 200,
  "state": "success",
  "_links": {
    "self": {
      "href": "/whois/icloud.com"
    }
  },
  "results": {
    "domain": "icloud.com",
    "servername": "whois.corporatedomains.com",
    "tld": "com",
    "registered": true,
    "reserved": false,
    "client_hold": false,
    "detail": {
      "registrant": [
        "Registrant Name: Domain Administrator",
        "Registrant Organization: Apple Inc.",
        "Registrant Street: One Apple Park Way",
        "Registrant City: Cupertino",
        "Registrant State/Province: CA",
        "Registrant Postal Code: 95014",
        "Registrant Country: US",
        "Registrant Phone: +1.4089961010",
        "Registrant Phone Ext:",
        "Registrant Fax: +1.4089741560",
        "Registrant Fax Ext:",
        "Registrant Email: domains@apple.com"
      ],
      "admin": [
        "Admin Name: Domain Administrator",
        "Admin Organization: Apple Inc.",
        "Admin Street: One Apple Park Way",
        "Admin City: Cupertino",
        "Admin State/Province: CA",
        "Admin Postal Code: 95014",
        "Admin Country: US",
        "Admin Phone: +1.4089961010",
        "Admin Phone Ext:",
        "Admin Fax: +1.4089741560",
        "Admin Fax Ext:",
        "Admin Email: domains@apple.com"
      ],
      "tech": [
        "Tech Name: Domain Administrator",
        "Tech Organization: Apple Inc.",
        "Tech Street: One Apple Park Way",
        "Tech City: Cupertino",
        "Tech State/Province: CA",
        "Tech Postal Code: 95014",
        "Tech Country: US",
        "Tech Phone: +1.4089961010",
        "Tech Phone Ext:",
        "Tech Fax: +1.4089741560",
        "Tech Fax Ext:",
        "Tech Email: apple-noc@apple.com"
      ],
      "billing": [],
      "status": [
        "Domain Status: clientTransferProhibited http://www.icann.org/epp#clientTransferProhibited"
      ],
      "date": [
        "Updated Date: 2018-09-27T20:55:11Z",
        "Creation Date: 1999-01-15T05:00:00Z",
        "Registrar Registration Expiration Date: 2020-01-15T05:00:00Z"
      ],
      "name_server": [
        "Name Server: b.ns.apple.com",
        "Name Server: d.ns.apple.com",
        "Name Server: f.ns.apple.com",
        "Name Server: e.ns.apple.com",
        "Name Server: a.ns.apple.com",
        "Name Server: c.ns.apple.com"
      ]
    }
  }
}

/dig/icloud.com

{
  "code": 200,
  "state": "success",
  "_links": {
    "self": {
      "href": "/dig/icloud.com"
    }
  },
  "results": [
    "; (1 server found)",
    ";; global options: +cmd",
    "icloud.com.  21371 IN SOA adns1.apple.com. hostmaster.apple.com. 2011089978 1800 900 2592000 1800",
    "icloud.com.  21371 IN NS c.ns.apple.com.",
    "icloud.com.  21371 IN NS a.ns.apple.com.",
    "icloud.com.  21371 IN NS d.ns.apple.com.",
    "icloud.com.  21371 IN NS b.ns.apple.com.",
    "icloud.com.  21371 IN NS e.ns.apple.com.",
    "icloud.com.  21371 IN NS f.ns.apple.com.",
    "icloud.com.  3371 IN A 17.253.144.10",
    "icloud.com.  71 IN MX 10 mx1.mail.icloud.com.",
    "icloud.com.  71 IN MX 10 mx6.mail.icloud.com.",
    "icloud.com.  71 IN MX 10 mx5.mail.icloud.com.",
    "icloud.com.  71 IN MX 10 mx4.mail.icloud.com.",
    "icloud.com.  71 IN MX 10 mx2.mail.icloud.com.",
    "icloud.com.  71 IN MX 10 mx3.mail.icloud.com.",
    "icloud.com.  3371 IN TXT  google-site-verification=knAEOH4QxR29I4gjRkpkvmUmP2AA7WrDk8Kq0wu9g9o",
    "icloud.com.  3371 IN TXT  v=spf1 ip4:17.36.0.0/16 ip4:17.41.0.0/16 ip4:17.58.0.0/16 ip4:17.110.0.0/15 ip4:17.111.110.0/23 ip4:17.120.0.0/16 ip4:17.133.0.0/16 ip4:17.139.0.0/16 ip4:17.142.0.0/15 ip4:17.151.1.0/24    ip4:17.158.0.0/15 ip4:17.162.0.0/15 ip4:17.164.0.0/16 ip4:17.171.37.0/24 ip4:17.172.0.0/16 ip4:17.179.168.0/23 ~all"
  ]
}

まず、whoisについては以前僕が作成したwhoisライブラリを使っていて、新ドメインも大体は検索できる?かな?と思っています。
検証するにも、種類が多すぎているので思いついた時にしかチェックしていません。もし結果が来ない!おかしい!があったらGithubのIssueかLINEでも連絡ください!切実っっ!

GDPR施行により、ドメインによっては結果がほとんど出てこないものもありますが、各ドメインレジストリレジストラのポリシーに準して、whois結果自体は加工せずそのまま使用しているので、そういうこともあります。

github.com

digについては、GooglePublicDNS(8.8.8.8)に対してリクエストを投げているだけなので特別な加工はしていません。

僕がカスタマーサポート業をやっていた時代(4,5年前)からつくってたwhoisproxy.infoですが、今も利用してくれている方がいてとても嬉しいです!ありがとうございます!!!!!!1

このサイトが何かの役に立っている限り、徐々に更新していきたいと思いますが、サイト自体のリニューアルはこれからやりますので引き続きよろしくお願いします。

※2019/02/20追記  json形式をcontent-type: application/hal+jsonに変更しました。
 今後の予定として、正常・エラー時のレスポンスにLink属性をつけて、リファレンス等のリンクをつける予定です。

※ 2019/05/29変更
リクエスURIの変更をしました