当前位置:首页>资料库>利用PHP CURL查询.sv域名的whois并监控掉落

利用PHP CURL查询.sv域名的whois并监控掉落

据我所知,目前.sv域名好像没有公开的whois服务器,查询whois的话只有去注册局官网查询。

自己写代码查询不是多此一举吗?非也非也,如果你自己通过curl查询到whois,然后配合strpos函数,不就可以监控.sv域名的删除情况了吗。

这种查询方式应该在同类后缀中通用。

我的方法只是坚持能用即可,不能和大佬们的高大上方法相比。

工作原理

首先打开nic.sv,这个是.sv域名的官网。
利用PHP CURL查询.sv域名的whois并监控掉落

我们可以看到官网首页就是查询域名的输入框,后面跟了一个Consultar按钮,打开F12,查看这个按钮的点击触发。

利用PHP CURL查询.sv域名的whois并监控掉落

可以看到,这个按钮触发的是 BuscarDominio() 这个function,直接在F12里面搜索这个方法,搜到后可以看到官网的代码如下:

/// BUSCAR DOMINIOS en la base de datos
function BuscarDominio() { 
    //alert("Hola");
	 Nombre = document.getElementById('nombre').value;
	 idE = document.getElementById('ID').value;
	//alert(idE);
	 if(Nombre != ''){
	  objReq = new getRequestObject();
	  objReq.onreadystatechange = procesaMadre;
	  objReq.open("POST",'https://svnet.sv/accion/procesos.php',true);
	  objReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	  accion = 2;	
	  var param = 'key=Buscar';
	  param += '&ID='+idE;
	  param += '&nombre='+Nombre;
	  objReq.send(param);
		//alert(param);
	 } else{
	   document.getElementById('DivResultado').innerHTML='Escribe un nombre de dominio';
	 }
} 

可以看到这个为带参数post请求指定地址。

带的参数为:

accion = 2; 
key=Buscar; 
ID= 214547854782423654 //这是个固定值
nombre= 域名前缀

知道所带的参数后,新建一个sv.php文件,将以下代码复制进去

<?php
header('Content-Type','application/x-www-form-urlencoded');
$domain = $_GET['domain'];
$tld = explode(".",$domain);
$tld = $tld[0];
$data = array(
    "accion" => "2",
    "key"=>"Buscar",
    "ID"=>"214547854782423654",
    "nombre"=>"$tld",
    "enviar"=>"Consultar"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://svnet.sv/accion/procesos.php");
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = curl_exec($ch);
//未完,下面接着讲解,下面的代码跟在这后面的
?>

例如我查询的域名是8.sv,官网首页的查询只需要输入8即可,但是我的代码里面进行了分割,所以https://www.lzhs.com/sv.php?domain=8.sv,还是以这种格式,这里就获取到了所有8前缀的sv可注册情况

代码获取的页面

利用PHP CURL查询.sv域名的whois并监控掉落

注册局的页面

利用PHP CURL查询.sv域名的whois并监控掉落

到这一步说白了就是:代码获取到的就是注册局没有css的页面。

然后打开F12查看源代码,你会发现没有注册的域名就是没注册,注册了的域名注册局都给了每个域名一个ID

如上图所示8.org.sv是可以注册的,点击没啥反应。

然后8.sv是已经被注册了的,点击进去后是whois的页面

先F12查看注册局是怎么查whois的

利用PHP CURL查询.sv域名的whois并监控掉落

好像被水印挡住了,不过没影响,你们自己也可以手动去看,这里模糊可以看到方式为onclick=”Whois(29312)”

到这一步就是说明注册局有一个function为whois的方法,跟的参数为域名的id

老规矩F12查看该方法怎么使用的,代码如下

/// BUSCAR DOMINIOS en la base de datos
function Whois(ID) { 
    //alert("Hola");
	 ID = ID; 
  //alert(ID);
	//alert(idE);
	 if(ID > 0){
	  objReq = new getRequestObject();
	  objReq.onreadystatechange = procesaMadre;
	  objReq.open("POST",'accion/procesos.php',true);
	  objReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	  accion = 2;	
	  var param = 'key=Whois';
	  param += '&ID='+ID; 
	  objReq.send(param);
		//alert(param);
	 } else{
	   document.getElementById('DivResultado').innerHTML='Escribe un nombre de dominio';
	 }
} 

可以看到这个function所需的参数,whois的id我们直接进行匹配就行了,用到php的preg_match_all函数

preg_match_all("/<strong>$domain<\/strong> <button type=\"button\" class=\"btn btn-warning\" onClick=\"Whois\((.*?)\)\">/",$result,$domainid);

这就把已注册的sv域名id匹配出来了。

跟着注册局提供的方法进行查询返回结果

$domainid =  $domainid[1][0];
$data = array(
    "key"=>"Whois",
    "ID"=>"$domainid",
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://svnet.sv/accion/procesos.php");
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = curl_exec($ch);
$res = substr($result, strripos($result, '<div class="alert blanco">'));
echo "<div style = 'margin-left:-900px'>".$res."</div>";

最终的结果如下

利用PHP CURL查询.sv域名的whois并监控掉落

最后一步,判断域名是否注册

if (strpos($res,"egistrad")) {
    echo "域名已注册";
    //自定义代码,可以设置自动按时刷新页面,反复查询是否删除
}else {
    echo "域名未注册";
    //自定义代码
}

到此,整个sv域名查询whois的方法就结束了。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。联系邮箱:domain@fuling.org