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

2022年11月5日 | 分类: 【技术】

参考:https://www.lzhs.com/2022/139.html

目前.sv域名没有公开的whois服务器,只有去注册局官网在线查询whois。
可以通过curl查询到whois,然后配合strpos函数,就可以获得.sv域名的状态,从而预测.sv的掉落时间并实施抢注。
这种查询方式可适用于仅提供在线查询whois的其他后缀。

首先打开 https://svnet.sv/ ,这是.sv域名的官网。

官网首页就是查询域名的输入框,后面是Consultar(西班牙语:咨询)按钮,查看这个按钮的点击触发。

<input type="button" name="enviar" class="btn form-control btn-primary" value="Consultar" onclick="BuscarDominio()">

可以看到,这个按钮触发的是 BuscarDominio() 这个function,在页面内的 JS 代码如下:

/// 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);
    //未完,下面接着讲解,下面的代码跟在这后面的
    ?>

“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可注册情况
代码获取的页面

注册局的页面

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

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

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

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

先F12查看注册局是怎么查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(“/$domain<\/strong>