PHP服务端代理页面开发_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP服务端代理页面开发

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:开发页面代理服务
黑客防线网安网讯:  最近公司暂时断开外网,只开放公司自己所有的站点允许访问,说实在的,做WEB开发的断网,真是让人哭笑不得......    由于需要查找资料,只好简单写了一个PHP的服务端代理页面来用一...
  最近公司暂时断开外网只开放公司自己所有的站点允许访问说实在的,做WEB开发的断网,真是让人哭笑不得......
  
  由于需要查找资料,只好简单写了一个PHP的服务端代理页面来用一下!
  
  简单框架页面:
  
  以下为引用的内容:
  
  <styletype="text/css">
  
  *{margin:0;padding:0;}
  
  html,body{overflow:hidden;}
  
  td{padding:0;vertical-align:top;}
  
  </style>
  
  <tablewidth="100%"height="100%"cellspacing="0"cellpadding="0"border="0">
  
  <tr>
  
  <tdstyle="height:25px;background:#d4d0c8;padding:5px10px;">
  
  <formmethod="post"action="action_get.php"target="actioncontent"style="margin:0;padding:0;">
  
  <inputtype="text"id="targeturl"name="targeturl"style="width:100%;border:1pxinset;margin:0;"/>
  
  </form>
  
  </td>
  
  </tr>
  
  <tr>
  
  <td>
  
  <iframename="actioncontent"style="width:100%;height:100%;"></iframe>
  
  </td>
  
  </tr>
  
  </table>
  
  <scripttype="text/javascript">
  
  window.onload=function(){
  
  document.getElementById('targeturl').focus();
  
  };
  
  </script>
  
  PHP代理页面:
  
  以下为引用的内容:
  
  <?php
  
  //使用Snoopy的抓页功能
  
  include"Snoopy.class.php";
  
  //目标URL
  
  $url=$_REQUEST['targeturl'];
  
  //将所有传递过来的参数列出来
  
  $par=array();
  
  $GetPost=array_merge($_POST,$_GET);
  
  foreach($GetPostAs$Key=>$Value){
  
  if($Key!='targeturl'){
  
  $Value=str_replace("%25","%",$Value);
  
  array_push($par,($Key."=".$Value));
  
  }
  
  }
  
  //判断目标URL是否带有?(即是否带有参数)
  
  $cc=strpos($url,"?")?"&":"?";
  
  //重组URL
  
  $geturl=!$par?$url:$url.$cc.implode("&",$par);
  
  //抓取重组后的URL页面内容
  
  $snoopy=newSnoopy;
  
  $snoopy->fetch($geturl);
  
  //替换目标内容中脚本里有可能替换父窗口地址的代码
  
  $org=str_replace("top.location","top.title",$snoopy->results);
  
  //尝试转换目标内容编码到UTF-8
  
  $opt=iconv("gbk","utf-8",$org);
  
  //判断目标内容编码为GBK或UTF-8
  
  $ec=strlen($opt)?"gbk":"utf-8";
  
  ?>
  
  <scripttype="text/javascript">
  
  //封闭运行,避免与后面内容中脚本混乱
  
  (function(){
  
  vareasyUTF8=function(gbk){if(!gbk){return'';}varutf8=[];for(vari=0;i<gbk.length;i++){vars_str=gbk.charAt(i);if(!(/^%u/i.test(escape(s_str)))){utf8.push(s_str);continue;}vars_char=gbk.charCodeAt(i);varb_char=s_char.toString(2).split('');varc_char=(b_char.length==15)?[0].concat(b_char):b_char;vara_b=[];a_b[0]='1110'+c_char.splice(0,4).join('');a_b[1]='10'+c_char.splice(0,6).join('');a_b[2]='10'+c_char.splice(0,6).join('');for(varn=0;n<a_b.length;n++){utf8.push('%'+parseInt(a_b[n],2).toString(16).toUpperCase());}}returnutf8.join('');};
  
  vargetArgs=function(surl){varsarg=surl.split('?'),rv={};rv.filename=sarg[0];if(!sarg[1]){returnrv;}varaarg=sarg[1].split('&'),atmp=[];for(vari=0;i<aarg.length;i++){atmp=aarg[i].split('=');rv[atmp[0]]=atmp[1];}returnrv;};
  
  varcreateIPH=function(name,value){if(!name){return;}if(/msie/i.test(navigator.appVersion)){returndocument.createElement('<inputtype="hidden"name="'+name+'"value="'+value+'"/>');}else{vardfi=document.createElement('input');dfi.type='hidden';dfi.name=name;dfi.value=value;returndfi;}};
  
  //回显目标URL到父窗口文本框
  
  vardtu=top.document.getElementById('targeturl');
  
  if(dtu){dtu.value='<?phpecho$geturl;?>';}
  
  //目标URL及domain
  
  varsref='<?phpecho$url;?>';
  
  varsdomain=sref.match(/^http://[^/]*/i)[0];
  
  //页面加载后执行下面的过程
  
  varprocess=function(){
  
  //抓取页面中所有链接
  
  vardlink=document.getElementsByTagName('a'),la=dlink.length;
  
  //抓取页面中所有表单
  
  vardform=document.getElementsByTagName('form'),lf=dform.length;
  
  //遍历所有链接,替换它们的href地址
  
  for(vari=0;i<la;i++){
  
  varsrc=dlink[i].href.toString().replace(/^http://www.w3cgroup.com(?:/geturl)?/i,sdomain);
  
  varoargs=getArgs(src),ahref=[];
  
  //UTF-8编码参数值
  
  for(vardinoargs){
  
  if(!d||d=='filename'||!oargs[d]){continue;}
  
  ahref.push(d+'='+encodeURIComponent(easyUTF8(oargs[d])));
  
  }
  
  varghref=ahref.length?oargs.filename+'?'+ahref.join('&'):oargs.filename;
  
  //重设链接地址
  
  dlink[i].href='http://www.w3cgroup.com/geturl/action_get.php?targeturl='+ghref;
  
  }
  
  //遍历所有表单,替换它们的action地址
  
  for(i=0;i<lf;i++){
  
  //抓取表单action并处理
  
  varsrc=dform[i].action.toString().replace(/^http://www.w3cgroup.com(?:/geturl)?/i,sdomain);
  
  if(!(/^http/.test(src))){src=(/^/.*$/.test(src))?(sdomain+src):(sdomain+'/'+src);}
  
  //创建一个隐藏域targeturl,值为上面处理的src地址
  
  vardfi=createIPH('targeturl',src);
  
  dform[i].appendChild(dfi);
  
  //创建一个隐藏域ie,值为utf-8,纯属为搜索引擎使用
  
  vardfi2=createIPH('ie','utf-8');
  
  dform[i].appendChild(dfi2);
  
  //重设表单提交目标窗口
  
  dform[i].target='actioncontent';
  
  //重设表单action地址
  
  dform[i].action='http://www.w3cgroup.com/geturl/action_get.php';
  
  //重设表单onsubmit事件,用来UTF8编码字段值
  
  dform[i].onsubmit=function(){
  
  vardlms=this.elements,l=dlms.length-1,pn='',pt='',pv='';
  
  for(vari=0;i<l;i++){
  
  pn=dlms[i].name,pt=dlms[i].type,pv=dlms[i].value;
  
  if(!pn||pn=='targeturl'||pn=='ie'){continue;}
  
  if(pt=='submit'||pt=='reset'||pt=='button'){
  
  dlms[i].value=encodeURIComponent(pv);
  
  }else{
  
  dlms[i].value=encodeURIComponent(easyUTF8(pv));
  
  }
  
  }
  
  };
  
  }
  
  };
  
  //绑定该过程到window.onload
  
  if(document.attachEvent){window.attachEvent('onload',process);}else{window.addEventListener('load',process,false);}
  
  })();
  
  </script>
  
  //脚本放在输出内容前,避免内容中可能出现脚本错误而导致我们要做的事情被废掉
  
  //输出抓到的目标页面内容
  
  <?phpecho($ec=="gbk")?$opt:$org;?>
  
  在这个小作品中,我编写了一个重要的JavaScript函数easyUTF8,它可以很方便地在JavaScript脚本中将GBK编码的内容转换为UTF-8编码
  
  我们还处理了一下表单中添加项目的兼容问题,注意看createIPH函数,在IE中创建的表单项内容,在指定name和value时可能会出现我们不希望的结果,这在DHTML手册中已经有过描述了
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17595-1.html
网站维护教程更新时间:2012-09-21 05:21:54  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer