PHP实现的网站目录扫描索引工具
程序员文章站
2024-02-28 14:43:04
代码很简单,这里就不多废话了,本代码来至一位网友的投稿,经测试可用
代码很简单,这里就不多废话了,本代码来至一位网友的投稿,经测试可用
<?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>
有相同需求的小伙伴可以参考下