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


Posted in PHP onSeptember 08, 2016

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

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 相关文章推荐
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
学习PHP session的传递方式
Jun 15 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 PHP
laravel 框架执行流程与原理简单分析
Feb 01 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 #PHP
php添加数据到xml文件的简单例子
Sep 08 #PHP
Yii2中事务的使用实例代码详解
Sep 07 #PHP
PHP模糊查询的实现方法(推荐)
Sep 06 #PHP
浅谈PHP中的数据传输CURL
Sep 06 #PHP
PHP实现页面静态化的超简单方法
Sep 06 #PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 #PHP
You might like
php判断GIF图片是否为动画的方法
2020/09/04 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
python通过wxPython打开一个音频文件并播放的方法
2015/03/25 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python+opencv实现阈值分割
2018/12/26 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
Python 求数组局部最大值的实例
2019/11/26 Python
python实现实时视频流播放代码实例
2020/01/11 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
linux系统都有哪些运行级别
2016/03/26 面试题
商务邀请函范文
2014/01/14 职场文书
大学生职业规划范文:象牙塔生活的四年计划
2014/01/14 职场文书
年会活动策划方案
2014/01/23 职场文书
十一酒店活动方案
2014/02/20 职场文书
女儿满月酒致辞
2015/07/29 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python