域名特工 – 批量扫描未注册域名实现方法。
经过简单的自学,可以按照以下逻辑进行域名批量扫描,稳定性还行,已经实践过很多次,分享实现过程就是打算把上线中的域名特工网站进行下线处理了,有点浪费服务器资源,纯靠爱发电。
本方法纯属小白玩法,大佬肯定能比我做的更好
准备工作
宝塔面板:Nginx+PHP7.x+MySQL
在你的网站根目录新建一个: conn.php 文件,用于配置数据库信息,格式如下
<?php
//数据库信息
$dbUser = “www_zai_la”;
$dbName = “www_zai_la”;
$dbPsw = “密码”;
$conn = mysqli_connect(“localhost”,$dbUser,$dbPsw,$dbName);
mysqli_set_charset($conn,”utf8″);
if (!$conn) {
exit(“无法链接数据库<br>”);
}else {
//echo “数据库已链接<hr>”;
}
?>
例如你想扫描2字母的 .ci 域名,按图新建一个叫ci的数据库表:
在你的网站根目录新建一个:domain.txt 文件
在网站根目录新建一个:sql.php 文件
在网站根目录新建一个:whoisConfig.php 文件
在网站根目录新建一个:flashCi.php 文件
准备就绪后,domain.txt 存入你想扫描的域名,你可以去到 363.hk/web/mi 按规则批量生成,生成后把后缀替换下即可,这里不做过多演示,这个都不会的话,建议放弃。
把以下内容复制 sql.php 文件,然后在浏览器进行访问。
<?php
include ‘conn.php’;
$domain_name = file(‘domain.txt’); //返回数组的内容
$domain_name = str_replace(“\r\n”, ”,$domain_name); //清除换行符
$domain_name = str_replace(“\n”, ”,$domain_name); //清除换行符
$domain_name = str_replace(“\t”, ”,$domain_name); //清除制表符
foreach($domain_name as $v){
$sql = “INSERT INTO ci (id,domain) VALUES (‘NULL’,’$v’);”;
mysqli_query($conn,$sql);
}
?>
在浏览器进行访问后,你txt里面的域名全部就存入到MySQL数据库里面了。
接下来进行 whoisConfig.php 的配置。
因为每个后缀都有不同的 whois 查询频率的限制,所以要想办法绕开这个限制,我这里使用的是多服务器查询。
将下面的代码复制进网站根目录的 whoisConfig.php 文件里面
<?php
//这个的whois查询url只是演示,自己去寻找或者搭建即可
//以前我搭建的域名特工网站总计使用了12个不同的查询服务器,一般来说需要不得于5个。
//如果你扫描的后缀不多,几个后缀几个查询链接就够了。
$whois_url = array(
“http://whois.fuling.org”=>”whois.fuling.org”,
“http://whois2.fuling.org”=>”whois2.fuling.org”,
“http://whois3.fuling.org”=>”whois3.fuling.org”,
);
?>
准备就绪后就把以下代码复制进 flashCi.php 文件。
我会在里面进行说明注释,希望你能明白是什么意思。
<?php
include ‘conn.php’;//引入数据库配置
include ‘whoisConfig.php’;//引入whois查询的url
$stream_opts = [
“ssl” => [
“verify_peer”=>false,
“verify_peer_name”=>false,
]
];
$get = “select * from ci”;
foreach ($conn->query($get) as $row){
sleep(10);
$v = $row[‘domain’];
//这里是随机在whoisConfig.php的链接中挑选一个进行查询,这样分流出来避免注册局快速拉黑
$url = array_rand($whois_url).”/$v”;
$str = file_get_contents(“$url”, false, stream_context_create($stream_opts));
$whois_server = $str;
$whois_server = str_replace(“\r\n”, ”,$whois_server); //清除换行符
$whois_server = str_replace(“\n”, ”,$whois_server); //清除换行符
$whois_server = str_replace(“\t”, ”,$whois_server); //清除制表符
preg_match_all(“/Registry Expiry Date: (.*?)T/”, $whois_server, $expired_time);
if (strpos($whois_server,’omain Status: No Object Foun’)) {
//echo “$v–<font color=’green’>可以注册</font><br>”;
$status = “1”;
$get_time = date(“Y-m-d H:i:s”);
$sql = “UPDATE ci SET `state`=’$status’,`getTime`=’$get_time’,`expTime`='{$expired_time[1][0]}’ where domain = ‘$v'”;
mysqli_query($conn,$sql);
}else{
//echo “$v–<font color=’red’>不可注册</font>”;
$status = “2”;
$get_time = date(“Y-m-d H:i:s”);
$sql = “UPDATE ci SET `state`=’$status’,`getTime`=’$get_time’,`expTime`='{$expired_time[1][0]}’ where domain = ‘$v'”;
mysqli_query($conn,$sql);
}
}
?>
展开
检查一下你的准备工作是否已经就绪:
1、数据库配置文件 : ok
2、whoisConfig.php : ok
3、domain.txt 文件已存入到数据库 : ok
4、flashCi.php 已配置 : ok
接下来进行最后一步,打开浏览器,访问你网站根目录的 flashCi.php 页面,这里所需的时长根据你要扫描多少域名而定,熟悉下运行过程的话建议弄5个域名测试下就行了,测试没问题,了解其中的原理,再进行批量扫描。
输出显示
一句话就可以搞定
$sql = “select * from ci where state = ‘1’”;
foreach ($conn->query($sql) as $row){
echo $row[‘domain’];
}
自己设计点好看的css给访问者即可。
加入定时任务
使用宝塔的定时任务功能,定时访问URL,例如 https://www.lzhs.com/flashCi.php,访问时间建议每隔12小时一次,因为扫描完整个后缀大约需要几个小时,12小时的间隔也差不多了,速度太快的话就会导致程序一致在扫描状态,域名也不是实时都在删除,意义不大,本来这种程序就是时不时遇到一个短的又恰好是自己喜欢的。
总结
至此,域名特工批量扫描未注册域名的方法就已经一字不落的分享出来了,域名特工这个网站也随之下线了。
如果你使用了老刘分享的方法建站了,还希望给个友情链接到本文处,多谢!
如果有啥做的辣鸡的地方,还欢迎大神指正。
留言