php内网探测脚本&简单代理访问
2015-09-10 19:19
681 查看
<?php $url = isset($_REQUEST['u'])?$_REQUEST['u']:null; $ip = isset($_REQUEST['i'])?$_REQUEST['i']:null; if($url != null){ $host = getHost($url); echo getCss($host,getHtmlContext($url)); }else if($ip != null){ $useIP = substr($ip,0,strripos($ip,".") + 1); ob_start(); for($i=0;$i<256;$i++){ $url = "http://".$useIP.$i; $html = getHtmlContext($url); $title = getTitle(html); $serverType = getHeader("Server"); $status = $html ? "Success": "Fail"; if($html){ echo $url." >> ".$title.">>".$serverType." >>".$status."<br/>"; } @ob_flush(); flush(); } ob_end_clean(); } function getHtmlContext($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, TRUE); //表示需要response header curl_setopt($ch, CURLOPT_NOBODY, FALSE); //表示需要response body curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_TIMEOUT, 120); $result = curl_exec($ch); global $header; if($result){ $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = explode("\r\n",substr($result, 0, $headerSize)); $body = substr($result, $headerSize); } if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') { return $body; } if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '302') { $location = getHeader("Location"); if(strpos(getHeader("Location"),'http://') == false){ $location = getHost($url).$location; } return getHtmlContext($location); } return NULL; } function getHeader($name){ global $header; foreach ($header as $loop) { if(strpos($loop,$name) !== false){ return trim(substr($loop,strlen($name)+2)); } } } function getTitle($html){ preg_match("/<title>(.*?)<\/title>/i",$html, $matches); return $matches[1]; } function getHost($url){ preg_match("/^(http:\/\/)?([^\/]+)/i",$url, $matches); return $matches[0]; } function getCss($host,$html){ preg_match_all("/<link[\s\S]*?href=['\"](.*?[.]css.*?)[\"'][\s\S]*?>/i",$html, $matches); //print_r($matches); foreach($matches[1] as $v){ $cssurl = $v; if(strpos($v,'http://') == false){ $cssurl = $host."/".$v; } $csshtml = "<style>".file_get_contents($cssurl)."</style>"; $html .= $csshtml; } return $html; } ?>
相关文章推荐
- php的代码重用与函数
- php exit()函数
- php创建新用户注册界面布局实例
- Yii2 配置框架国际化支持
- 重新看php数组
- RTP协议全解(H264码流和PS流)
- thinkphp url大小写更改
- php高效举例说明
- RTP协议分析
- php缓存技术
- php生成指定长度的随机数
- LPC18xx/43xx OTP Controller driver
- .NET基础 (13)IFormattable和IformatProvider的使用
- NXP LPC18xx LPC43xx OTP ID Boot
- PHP substr()截取字符串时,中文出现乱码的问题解决【转】
- ThinkPHP-3.2.3学习
- 1.5-php-fpm配置文件
- 用FileInputStream和FileOutputStream拷贝文件
- PHP5.3 里面数组的的实现方式
- PHP去除字符串中所有空格