加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP域whois脚本不返回所有信息

发布时间:2020-12-13 13:23:04 所属栏目:PHP教程 来源:网络整理
导读:我需要获取whois信息.我的功能正常,但没有返回“管理联系人,注册人联系人,管理联系人,技术联系人”信息. 但是当我在Mac上运行以下命令时,它会返回所有信息 “whois google.com” 这是我的php函数从whois服务器获取信息 function QueryWhoisServer($whoisserv
我需要获取whois信息.我的功能正常,但没有返回“管理联系人,注册人联系人,管理联系人,技术联系人”信息.

但是当我在Mac上运行以下命令时,它会返回所有信息
“whois google.com”

这是我的php函数从whois服务器获取信息

function QueryWhoisServer($whoisserver,$domain) {
$port = 43;
$timeout = 10;
$fp = @fsockopen($whoisserver,$port,$errno,$errstr,$timeout) or die("Socket Error " . $errno . " - " . $errstr);

fputs($fp,$domain . "rn");
$out = "";
while(!feof($fp)){
    $out .= fgets($fp);
}

fclose($fp);
return $out; 
} 
echo QueryWhoisServer("whois.verisign-grs.com","google.com");
我找到了一个可能的解决方案,假设(由我自己检查)注册商whois服务器正在返回联系信息.

为此,每个域都需要根据下面的代码查询相关的注册商whois服务器.

检查代码注释,了解每个函数的功能.

function GetWhoisInfo($whoisserver,$domain){
  $port = 43;
  $timeout = 10;
  $fp = @fsockopen($whoisserver,$timeout) or die("Socket Error " . $errno . " - " . $errstr);
  stream_set_blocking($fp,true);
  fputs($fp,$domain . "rn");
  $out = "";

  while(!feof($fp)){
      $out .= fgets($fp);       
  }

  fclose($fp);  
  return $out;
}

function GetRegistrarWhoisServer($whoisserver,$domain) {
  $out = GetWhoisInfo($whoisserver,$domain);
  $rws_string = explode("rn",$out);
  $rws = explode("Registrar WHOIS Server: ",$rws_string[2])[1];  
  return $rws; 
}

function WhoisToJson($winfo) {
  $winfoarr = explode(PHP_EOL,$winfo);
  $jsonarr = [];
  foreach($winfoarr as $info){
   $infodata = explode(": ",$info);
   if($infodata[0] !== "")$jsonarr[$infodata[0]] = $infodata[1];    
   //avoid to process privacy info at the end of whois service output
   if($infodata[0] === "DNSSEC")break;
  }
  return json_encode($jsonarr);
} 

function QueryWhoisServer($whoisserver,$domain) {
  //query to $whoisserver whois to get registrar whois server address only
  $rws = GetRegistrarWhoisServer($whoisserver,$domain);

  //query to registrar whois server (registrar whois servers are returning contact infos)
  $out = GetWhoisInfo($rws,$domain);  

  //parsing infos and formatting to json
  return WhoisToJson($out);
} 

echo QueryWhoisServer("whois.verisign-grs.com","google.com");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读