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 超链接 抓取实现代码
Jun 29 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
解析php取整的几种方式
Jun 25 PHP
网站防止被刷票的一些思路与方法
Jan 08 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 PHP
php实现解析xml并生成sql语句的方法
Feb 03 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
js实现购物车功能
2018/06/12 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
详解vue父子组件状态同步的最佳方式
2020/09/10 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
Python常见字典内建函数用法示例
2018/05/14 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
python远程连接MySQL数据库
2019/04/19 Python
java判断三位数的实例讲解
2019/06/10 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
gateway网关接口请求的校验方式
2021/07/15 Java/Android
Python内置数据结构列表与元组示例详解
2021/08/04 Python
基于Python实现nc批量转tif格式
2022/08/14 Python
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS