大家好,我是轻云。
大家很可能遇到过这种情况:一般情况下,像博客之类的网站,直接加上/admin看看后台的界面,就能分辨出是什么网站。但是如何用PHP来检测呢?

思路

每个程序都有yige“一定目录”(我取的),什么是一定目录呢?一定目录指的就是,你的程序无论怎么魔改,都不会被改变的文件夹。比如:

  • Wordpress的:wp-include
  • Typecho的:usr或vsr
  • EMLog的:include/controller

这就是一定目录,我们就能通过CURL的方法,加上伪造的UA来访问这个网站可能的一定目录。如果状态码不是404,就说明这个网站是基于那个程序建设的。上代码:

代码

<?php
function http_status($url) {
    //判断状态码的自定义函数
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_exec($ch);
    $status = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return ($status == 404) ? 1 : 0;
    /* return $status; */
}
$geturl = $_GET['url'];
/* $wpurl = $geturl + "wp-include/"; */
if (substr($geturl,-1) == "/"){
    $wpurl = $geturl ."wp-include";
    $teurl = $geturl ."usr";
    $emurl = $geturl ."include/controller";
}else{
    $wpurl = $geturl ."/wp-include";
    $teurl = $geturl ."/usr";
    $emurl = $geturl ."/include/controller";
}

if (http_status ($wpurl) == "0"){
    echo '{code:1,type:"wordpress"}';
}elseif (http_status ($teurl) == "0"){
    echo '{code:1,type:"typecho"}';
}elseif (http_status ($emurl) == "0"){
    echo '{code:1,type:"emlog"}';
}else{
    echo '{code:0,type="error"}';
}

使用方法

这个API还做了些人性化处理:
无论你输入的网址是 http://网址/ (有/)还是 http://网址 (无/)
都能识别。
使用方法:
http://(https://)你的网址/?url=需要检测的网址

Last modification:July 12th, 2020 at 06:13 pm
如果这篇文章帮到了你,就打赏一下吧(只支持QQ)