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 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
PHP JSON格式数据交互实例代码详解
Jan 13 PHP
php学习之 数组声明
Jun 09 PHP
php 无法加载mcrypt.dll的解决办法
Apr 03 PHP
克隆一个新项目的快捷方式
Apr 10 PHP
使用淘宝IP库获取用户ip地理位置
Oct 27 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 PHP
PHP实现的日历功能示例
Sep 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php中$this-&amp;gt;含义分析
2009/11/29 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
jquery高效反选具体实现
2013/05/05 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
js实现简单的秒表
2020/01/16 Javascript
基于python中的TCP及UDP(详解)
2017/11/06 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
开学典礼感言
2014/02/16 职场文书
见习报告怎么写
2014/10/31 职场文书
新教师个人工作总结
2015/02/06 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
热爱劳动主题班会
2015/08/14 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
Python函数中apply、map、applymap的区别
2021/11/27 Python
Golang获取List列表元素的四种方式
2022/04/20 Golang
Mysql数据库group by原理详解
2022/07/07 MySQL