以下為引用的內容: <?php //使用Snoopy的抓頁功能 include "Snoopy.class.php"; //目標URL $url = $_REQUEST['targeturl']; //將所有傳遞過來的參數列出來 $par = array(); $GetPost = array_merge($_POST,$_GET); foreach($GetPost As $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 = new Snoopy; $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"; ?> <script type="text/javascript"> //封閉運行,避免與后面內容中腳本混亂 (function(){ var easyUTF8 = function(gbk){if(!gbk){return '';}var utf8 = [];for(var i=0;i<gbk.length;i++){var s_str = gbk.charAt(i);if(!(/^%u/i.test(escape(s_str)))){utf8.push(s_str);continue;}var s_char = gbk.charCodeAt(i);var b_char = s_char.toString(2).split('');var c_char = (b_char.length==15)?[0].concat(b_char):b_char;var a_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(var n=0;n<a_b.length;n++){utf8.push('%'+parseInt(a_b[n],2).toString(16).toUpperCase());}}return utf8.join('');}; var getArgs = function(surl){var sarg = surl.split('?'),rv={};rv.filename=sarg[0];if(!sarg[1]){return rv;}var aarg=sarg[1].split('&'),atmp=[];for(var i=0;i<aarg.length;i++){atmp=aarg[i].split('=');rv[atmp[0]]=atmp[1];}return rv;}; var createIPH = function(name,value){if(!name){return;}if(/msie/i.test(navigator.appVersion)){return document.createElement('<input type="hidden" name="'+name+'" value="'+value+'"/>');}else{var dfi = document.createElement('input');dfi.type = 'hidden';dfi.name = name;dfi.value = value;return dfi;}}; //回顯目標URL到父窗口文本框 var dtu = top.document.getElementById('targeturl'); if(dtu){dtu.value = '<?php echo $geturl;?>';} //目標URL及domain var sref = '<?php echo $url;?>'; var sdomain = sref.match(/^http:\/\/[^\/]*/i)[0]; //頁面加載后執行下面的過程 var process = function(){ //抓取頁面中所有鏈接 var dlink = document.getElementsByTagName('a'),la = dlink.length; //抓取頁面中所有表單 var dform = document.getElementsByTagName('form'),lf = dform.length; //遍歷所有鏈接,替換它們的href地址 for(var i=0;i<la;i++){ var src = dlink[i].href.toString().replace(/^http:\/\/www\.w3cgroup\.com(?:\/geturl)?/i,sdomain); var oargs = getArgs(src),ahref = []; //UTF-8編碼參數值 for(var d in oargs){ if(!d||d=='filename'||!oargs[d]){continue;} ahref.push(d+'='+encodeURIComponent(easyUTF8(oargs[d]))); } var ghref = ahref.length?oargs.filename+'?'+ahref.join('&'):oargs.filename; //重設鏈接地址 dlink[i].+ghref; } //遍歷所有表單,替換它們的action地址 for(i=0;i<lf;i++){ //抓取表單action并處理 var src = 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地址 var dfi = createIPH('targeturl',src); dform[i].appendChild(dfi); //創建一個隱藏域ie,值為utf-8,純屬為搜索引擎使用 var dfi2 = 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(){ var dlms = this.elements,l = dlms.length-1,pn = '',pt = '',pv = ''; for(var i=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> //腳本放在輸出內容前,避免內容中可能出現腳本錯誤而導致我們要做的事情被廢掉 //輸出抓到的目標頁面內容 <?php echo ($ec=="gbk")?$opt:$org;?> |