PHP实现的网站目录扫描索引工具

5年以前  |  阅读数:372 次  |  编程语言:PHP 

代码很简单,这里就不多废话了,本代码来至一位网友的投稿,经测试可用


    <?php
    error_reporting(E_ALL & ~E_NOTICE);
    ignore_user_abort();
    set_time_limit(0);
    if ($_GET['act'] == 'op') {
        $data_url = $_GET['url'] . '/';
        $hz = $_GET['type'];
        list($fw1, $fw2) = explode('-', $_GET['fw']);
        $zs404 = strlen(file_get_contents_curl($data_url . "momaka")) + 200; //404页面字数
        $file_name = $_SERVER["REMOTE_ADDR"] . '_' . mt_rand(1000, 9999999) . '.txt'; //写入的文件名
        setcookie("file_name", $file_name, time() + 3600 * 24 * 7); //写入cookie 方便识别
        for ($i = $fw1;$i <= $fw2;$i++) {
            $name = $data_url . $i . $hz; //curl读取页面
            $data = file_get_contents_curl($name); //判断页面是否有用
            if (strlen($data) > $zs404) {
                $log = $name . ' *yes';
            } else {
                $log = $name . ' no';
            }
            file_put_contents($file_name, $log . PHP_EOL, FILE_APPEND); //写入文件
            if ($_GET['ys']) {
                sleep($_GET['ys']); //遇到防火墙使用延迟扫目录

            }
        }
    }
    if ($_GET['act'] == 'list') {
        $filename = $_COOKIE["file_name"]; //要下载的文件名
        header("Content-Type:application/force-download");
        header("Content-Disposition:attachment;filename=" . $filename);
        readfile($filename);
    }
    if ($_GET['file_name']) {
        $data = file_get_contents($_COOKIE["file_name"]);
    }
    /* CURL 配置函数 */
    function file_get_contents_curl($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
        //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        $dxycontent = curl_exec($ch);
        return $dxycontent;
    }
    ?> 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html ns="http://www.w3.org/1999/xhtml">
    <head>
    <http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
    <title>网站目录文件图片扫描工具</title>
    <script src="jquery-1.8.3.min.js"></script>
    </head>
    <style>
    body{ margin: 0; padding: 0; background-color: #F9F9F9;}
    .list{margin: 0 auto; width: 500px; padding: 30px 0; background-color: #FFF; margin-top: 50px; border-radius: 8px; border: 1px solid #ECECEC;}
    .list h1{ text-align: center; font-size: 1.8em; margin: 30px 0;color: #686B82;}
    .list input{width: 250px; height: 28px; border-radius: 5px; border: 1px solid #CACACA; margin: 0 0 20px 20px; display: inline-block; padding: 2px 8px;}
    input:focus { border-color: #66afe9; outline: 0; -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6); box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);}
    #sm{width: 270px; height: 32px; font-size: 16px; background-color: #0DD88D; color: #FFF; border: 0;margin-left: 140px;cursor:pointer;}
    .list span{float: left; display: inline-block; width: 120px; text-align: right; line-height: 30px;}
    .list a{ text-align: center; display: block; color: #808080; text-decoration: none;}
    </style>
    <body>
    <?php if($data) {?>
    <p style="text-align:center;">
        每隔15秒更新一次数据 查找连接后面为 *yes 即可用页面
    </p>
    <?php echo $data; ?>
    <script>function moma(){ history.go(0);}setInterval("moma()",15000);</script>
    <?php }else{ ?>
    <div class="list">
        <h1>网站目录文件扫描工具</h1>
        <span>链接:</span><input type="text" id="url" placeholder="如https://www.baidu.com" value="">
        <span>后缀:</span><input type="text" id="type" placeholder="如 .html ,目录模式则放空" value="">
        <span>范围:</span><input type="text" id="fw" placeholder="如1-99999或a-zzzzz" value="">
        <span>延迟:</span><input type="text" id="ys" placeholder="遇防火墙请填写轮询时间,如2" value="">
        <input type="submit" id="sm" value="扫描">
        <a href="index.php?file_name=1" target="_blank">查看扫描结果</a></br>
        <a href="index.php?act=list" target="_blank">下载扫描结果</a></br>
    </div>
    <?php } ?>
    <div id="data">
    </div>
    <script>
    $("#sm").click(function(){
        $(this).disabled=true; 
        if(confirm('之前有一个任务可能正在进行,选择确定则新建任务扫描,选择取消则查看任务')){
            $.get("index.php?act=op",
            {
                url : $("#url").val(),
                type : $("#type").val(),
                fw : $("#fw").val(),
                ys : $("#ys").val()
            },
            function(req) {
                alert("扫描结束!");
            });
        }else{
            window.open("index.php?file_name=1");
        }
    })
    </script>
    </body>
    </html>

有相同需求的小伙伴可以参考下

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例