海运的博客

PHP检查域名年龄及Whois脚本

发布时间:July 1, 2014 // 分类:PHP // No Comments

<?php
class DomainAge{
  private $WHOIS_SERVERS=array(
    "com"               =>  array("whois.verisign-grs.com","/Creation Date:(.*)/"),
    "net"               =>  array("whois.verisign-grs.com","/Creation Date:(.*)/"),
    "org"               =>  array("whois.pir.org","/Created On:(.*)/"),
    "info"              =>  array("whois.afilias.info","/Created On:(.*)/"),
    "biz"               =>  array("whois.neulevel.biz","/Domain Registration Date:(.*)/"),
    "us"                =>  array("whois.nic.us","/Domain Registration Date:(.*)/"),
    "uk"                =>  array("whois.nic.uk","/Registered on:(.*)/"),
    "ca"                =>  array("whois.cira.ca","/Creation date:(.*)/"),
    "tel"               =>  array("whois.nic.tel","/Domain Registration Date:(.*)/"),
    "ie"                =>  array("whois.iedr.ie","/registration:(.*)/"),
    "it"                =>  array("whois.nic.it","/Created:(.*)/"),
    "cc"                =>  array("whois.nic.cc","/Creation Date:(.*)/"),
    "ws"                =>  array("whois.nic.ws","/Domain Created:(.*)/"),
    "sc"                =>  array("whois2.afilias-grs.net","/Created On:(.*)/"),
    "mobi"              =>  array("whois.dotmobiregistry.net","/Created On:(.*)/"),
    "pro"               =>  array("whois.registrypro.pro","/Created On:(.*)/"),
    "edu"               =>  array("whois.educause.net","/Domain record activated:(.*)/"),
    "tv"                =>  array("whois.nic.tv","/Creation Date:(.*)/"),
    "travel"            =>  array("whois.nic.travel","/Domain Registration Date:(.*)/"),
    "in"                =>  array("whois.inregistry.net","/Created On:(.*)/"),
    "me"                =>  array("whois.nic.me","/Domain Create Date:(.*)/"),
    "cn"                =>  array("whois.cnnic.cn","/Registration Date:(.*)/"),
    "asia"              =>  array("whois.nic.asia","/Domain Create Date:(.*)/"),
    "ro"                =>  array("whois.rotld.ro","/Registered On:(.*)/"),
    "aero"              =>  array("whois.aero","/Created On:(.*)/"),
    "nu"                =>  array("whois.nic.nu","/created:(.*)/")
  );
  public function age($domain)
  {
    $domain = trim($domain); //remove space from start and end of domain
    if(substr(strtolower($domain), 0, 7) == "http://") $domain = substr($domain, 7); // remove http:// if included
    if(substr(strtolower($domain), 0, 4) == "www.") $domain = substr($domain, 4);//remove www from domain
    if(preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i",$domain))
    {
      $domain_parts = explode(".", $domain);
      //取后缀
      $tld = strtolower(array_pop($domain_parts));
      if(!$server=$this->WHOIS_SERVERS[$tld][0]) {
        return false;
      }
      $res=$this->queryWhois($server,$domain);
      if(preg_match($this->WHOIS_SERVERS[$tld][1],$res,$match))
      {
        date_default_timezone_set('UTC');
        $time = time() - strtotime($match[1]);
        $years = floor($time / 31556926);
        $days = floor(($time % 31556926) / 86400);
        if($years == "1") {$y= "1 year";}
        else {$y = $years . " years";}
        if($days == "1") {$d = "1 day";}
        else {$d = $days . " days";}
        return "$y, $d";
      }
      else
        return false;
    }
    else
      return false;
  }
  private function queryWhois($server,$domain)
  {
    $fp = @fsockopen($server, 43, $errno, $errstr, 20) or die("Socket Error " . $errno . " - " . $errstr);
    if($server=="whois.verisign-grs.com")
      $domain="=".$domain;
    //echo $domain;
    fputs($fp, $domain . "\r\n");
    $out = "";
    while(!feof($fp)){
      $out .= fgets($fp);
    }
    fclose($fp);
    //echo $out;
    return $out;
  }
}
$w=new DomainAge();
$age = $w->age("baidu.com");
echo $age."\n";
?>

标签:none

评论已关闭

分类
最新文章
最近回复
  • 海运: 正常情况下编译整个内核执行make menuconfig后就不会出现此提示,当单独编译单个模块...
  • oijq: 就是用的armbian的配置文件哈,按你的教程做的,在执行make LOCALVERSION=...
  • 海运: 使用armbian的配置文件,其它添加或修改自己懂的部分,不懂的就不要碰了。
  • oijq: 编译时这些选项全部选Y吗?Actions Semi Platforms (ARCH_ACTIO...
  • 海运: n1编译bbr内核模块参考这个:https://www.haiyun.me/archives/...
  • jiqz: make M=net/ipv4/ CONFIG_TCP_CONG_BBR=m modules编...
  • ruralhunter: 哦,文档里应该是对的,是.config
  • ruralhunter: cp /mnt/boot/config-4.18.7-aml-s9xxx .config这里应...
  • 海运: 你是编译不成功呢?还是编译后不能运行呢?还是运行后不能访问web界面呢?
  • 白墨: 可能不清楚就是编译安装后启动后访问不了web界面