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 相关文章推荐
操作Oracle的php类
Oct 09 PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
php array_slice函数的使用以及参数详解
Aug 30 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
PHP插入排序实现代码
Apr 04 PHP
解析PHP实现下载文件的两种方法
Jul 05 PHP
测试php函数的方法
Nov 13 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
form表单传递数组数据、php脚本接收的实例
Feb 09 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
Oct 10 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 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的面试题集,附我的答案和分析(一)
2006/11/19 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
javascript之AJAX框架使用说明
2010/04/24 Javascript
再论Javascript的类继承
2011/03/05 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
Python编程中对文件和存储器的读写示例
2016/01/25 Python
使用Python生成随机密码的示例分享
2016/02/18 Python
利用python获取Ping结果示例代码
2017/07/06 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
python在不同条件下的输入与输出
2020/02/13 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
师范生自荐信范文
2013/10/06 职场文书
团日活动策划书
2014/02/01 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
食品安全汇报材料
2014/08/18 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
2016年教代会开幕词
2016/03/04 职场文书
安全责任协议书范本
2016/03/23 职场文书
导游词之太原天龙山
2020/01/02 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android