qystudio 发表于 2020-7-22 09:43

PHP实现博客类型判断

代码原创,需要自取。新人注册,多发帖,融入社区,也请大家多多评价。
我在论坛没有搜索到这样的文章,代码也确实是自己编写的,如有雷同纯属巧合。
大家可能遇到过这样的情况:想看人家的博客是什么程序做的,于是就直接进入人家的默认后台登录界面,看看就知道了。然而别人把后台路径一改,你是不是就没办法了呢?答案:有。


实现思路:
国内常用的博客程序有wordpress、emlog、typecho,这些程序都有一个不变的目录,比如wordpress的就是wp-include,typecho的就是usr或者vsr,emlog的就不太好找,需要多加几个目录嵌套检测就好了。
使用CURL获得状态码,if...elseif...else...疯狂检测状态码,如果不是404,就证明不变的目录存在,也就说明这个博客是基于这个程序搭建的。
至于为什么不用switch...case...是因为switch...case...在很多的if...elseif...else...语句中可以节省性能,但是这次的if语句不多,所以就不用switch去写了。


这次就不打包,直接上代码:
<?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 'wordpress';
}elseif (http_status ($teurl) == "0"){
    echo 'typecho';
}elseif (http_status ($emurl) == "0"){
    echo 'emlog';
}else{
    echo 'error';
}
如有BUG或者其他的逻辑问题,请指出,新人请多多包涵

漫漫长昼 发表于 2020-8-15 07:13

浏览器插件whatruns和Wappalyzer
页: [1]
查看完整版本: PHP实现博客类型判断