(转)PHP小偷类,学习:P<?
(转)PHP小偷类,学习:P
//////////////////////////////////////////////////////////////
(转)PHP小偷类,学习:P//
(转)PHP小偷类,学习:P//
 统一搜集系统 Univeral Gather System (UGS)
(转)PHP小偷类,学习:P//
 作者 zj@52linux.com 
(转)PHP小偷类,学习:P//
 主页 http://www.52linux.com
(转)PHP小偷类,学习:P//
 联系QQ 733905
(转)PHP小偷类,学习:P//
////////////////////////////////////////////////////////////
(转)PHP小偷类,学习:P
class ugs
(转)PHP小偷类,学习:P{
(转)PHP小偷类,学习:P 
var $value_  ;  //'窃取到的内容
(转)PHP小偷类,学习:P
 var $src_    ;  //'要偷的目标URL地址
(转)PHP小偷类,学习:P
 var $isGet_   ; //判断是否已经偷过
(转)PHP小偷类,学习:P

(转)PHP小偷类,学习:P    
function BytesToBstr($f) //'变成1行
(转)PHP小偷类,学习:P
 {
(转)PHP小偷类,学习:P  
return join("",$f);
(转)PHP小偷类,学习:P  
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P 
function _striptext() //取得文字内容
(转)PHP小偷类,学习:P
 {
(转)PHP小偷类,学习:P  
(转)PHP小偷类,学习:P  
// I didn't use preg eval (//e) since that is only available in PHP 4.0.
(转)PHP小偷类,学习:P
  // so, list your entities one by one here. I included some of the
(转)PHP小偷类,学习:P
  // more common ones.
(转)PHP小偷类,学习:P
        
(转)PHP小偷类,学习:P  $search 
= array("'<script[^>]*?>.*?</script>'si"// strip out javascript
(转)PHP小偷类,学习:P
      "'<[\/\!]*?[^<>]*?>'si",   // strip out html tags
(转)PHP小偷类,学习:P
      "'([\r\n])[\s]+'",     // strip out white space
(转)PHP小偷类,学习:P
      "'&(quot|#34|#034|#x22);'i",  // replace html entities
(转)PHP小偷类,学习:P
      "'&(amp|#38|#038|#x26);'i",   // added hexadecimal values
(转)PHP小偷类,学习:P
      "'&(lt|#60|#060|#x3c);'i",
(转)PHP小偷类,学习:P      
"'&(gt|#62|#062|#x3e);'i",
(转)PHP小偷类,学习:P      
"'&(nbsp|#160|#xa0);'i",
(转)PHP小偷类,学习:P      
"'&(iexcl|#161);'i",
(转)PHP小偷类,学习:P      
"'&(cent|#162);'i",
(转)PHP小偷类,学习:P      
"'&(pound|#163);'i",
(转)PHP小偷类,学习:P      
"'&(copy|#169);'i",
(转)PHP小偷类,学习:P      
"'&(reg|#174);'i",
(转)PHP小偷类,学习:P      
"'&(deg|#176);'i",
(转)PHP小偷类,学习:P      
"'&(#39|#039|#x27);'",
(转)PHP小偷类,学习:P      
"'&(euro|#8364);'i",    // europe
(转)PHP小偷类,学习:P
      "'&a(uml|UML);'",     // german
(转)PHP小偷类,学习:P
      "'&o(uml|UML);'",
(转)PHP小偷类,学习:P      
"'&u(uml|UML);'",
(转)PHP小偷类,学习:P      
"'&A(uml|UML);'",
(转)PHP小偷类,学习:P      
"'&O(uml|UML);'",
(转)PHP小偷类,学习:P      
"'&U(uml|UML);'",
(转)PHP小偷类,学习:P      
"'&szlig;'i",
(转)PHP小偷类,学习:P      );
(转)PHP小偷类,学习:P  $replace 
= array( "",
(转)PHP小偷类,学习:P       
"",
(转)PHP小偷类,学习:P       
"\\1",
(转)PHP小偷类,学习:P       
"\"",
(转)PHP小偷类,学习:P       
"&",
(转)PHP小偷类,学习:P       
"<",
(转)PHP小偷类,学习:P       
">",
(转)PHP小偷类,学习:P       
" ",
(转)PHP小偷类,学习:P       chr(161),
(转)PHP小偷类,学习:P       chr(162),
(转)PHP小偷类,学习:P       chr(163),
(转)PHP小偷类,学习:P       chr(169),
(转)PHP小偷类,学习:P       chr(174),
(转)PHP小偷类,学习:P       chr(176),
(转)PHP小偷类,学习:P       chr(39),
(转)PHP小偷类,学习:P       chr(128),
(转)PHP小偷类,学习:P       
"?,
(转)PHP小偷类,学习:P       
"?,
(转)PHP小偷类,学习:P       
"?,
(转)PHP小偷类,学习:P       
"?,
(转)PHP小偷类,学习:P       
"?,
(转)PHP小偷类,学习:P       
"?,
(转)PHP小偷类,学习:P       
"?,
(转)PHP小偷类,学习:P      );
(转)PHP小偷类,学习:P     
(转)PHP小偷类,学习:P  $text 
= preg_replace($search,$replace,$this->value_);
(转)PHP小偷类,学习:P        
(转)PHP小偷类,学习:P  
return $this->value_=$text;
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P 
function _striplinks() //取得链接Array 
(转)PHP小偷类,学习:P
 { 
(转)PHP小偷类,学习:P  preg_match_all(
"'<\s*a\s.*?href\s*=\s*   # find <a href=../
(转)PHP小偷类,学习:P      ([\
"\'])?     # find single or double quote
(转)PHP小偷类,学习:P      (
?(1) (.*?)\\1 | ([^\s\>]+))  # if quote found, match up to next matching
(转)PHP小偷类,学习:P             # quote, otherwise match up to next space
(转)PHP小偷类,学习:P      'isx
",$this->value_,$links);
(转)PHP小偷类,学习:P      
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P  // catenate the non-empty matches from the conditional subpattern
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P  while(list($key,$val) = each($links[2]))
(转)PHP小偷类,学习:P  {
(转)PHP小偷类,学习:P   if(!empty($val))
(转)PHP小偷类,学习:P    $match[] = $val;
(转)PHP小偷类,学习:P  }    
(转)PHP小偷类,学习:P  
(转)PHP小偷类,学习:P  while(list($key,$val) = each($links[3]))
(转)PHP小偷类,学习:P  {
(转)PHP小偷类,学习:P   if(!empty($val))
(转)PHP小偷类,学习:P    $match[] = $val;
(转)PHP小偷类,学习:P  }  
(转)PHP小偷类,学习:P  
(转)PHP小偷类,学习:P  // return the links
(转)PHP小偷类,学习:P  return $this->value_=$match;
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P 
(转)PHP小偷类,学习:P function   steal($toline=true) //'窃取目标URL地址的HTML代码的方法
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P   
(转)PHP小偷类,学习:P  if($this->src_!=
"")
(转)PHP小偷类,学习:P  {
(转)PHP小偷类,学习:P   $unix=false; //如果您是unix系统 请设置true 条件是系统里有wget 这个软件,如果是window系统,设置为false,或者当有wget.exe 这个软件时也可以设置为true
(转)PHP小偷类,学习:P   // wget.exe 可从下面地址得到  http://allserv.ugent.be/~bpuype/wget/ 
(转)PHP小偷类,学习:P   if($unix){
(转)PHP小偷类,学习:P   $tmpfile=tempnam(
"/tmp","FOO");
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P   $cmd=
"wget -nv -O $tmpfile \"$this->src_\"";
(转)PHP小偷类,学习:P   //echo $cmd;
(转)PHP小偷类,学习:P   exec($cmd);
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P   $http=file($tmpfile);
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P   unlink($tmpfile);
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P   else
(转)PHP小偷类,学习:P   {
(转)PHP小偷类,学习:P   $http=file($this->src_);
(转)PHP小偷类,学习:P   
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P   //print_r($http);
(转)PHP小偷类,学习:P   if($toline) {
(转)PHP小偷类,学习:P   $this->isGet_=true;
(转)PHP小偷类,学习:P   return $this->value_=$this->BytesToBstr($http);
(转)PHP小偷类,学习:P    
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P   else
(转)PHP小偷类,学习:P   {
(转)PHP小偷类,学习:P   $this->isGet_=true;
(转)PHP小偷类,学习:P    
(转)PHP小偷类,学习:P   return $this->value_=$http;
(转)PHP小偷类,学习:P   
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P  }
(转)PHP小偷类,学习:P  else
(转)PHP小偷类,学习:P  {
(转)PHP小偷类,学习:P    
(转)PHP小偷类,学习:P   echo (
"<script>alert(\"请先设置src属性!\")</script>");
(转)PHP小偷类,学习:P  }
(转)PHP小偷类,学习:P 
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P  function steal_local($toline=true)  // 此方法为处理本地文件使用 
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P  if($this->src_!=
"")
(转)PHP小偷类,学习:P   {
(转)PHP小偷类,学习:P    if($toline) 
(转)PHP小偷类,学习:P    {
(转)PHP小偷类,学习:P     $http=file($this->src_);
(转)PHP小偷类,学习:P     $this->isGet_=true;
(转)PHP小偷类,学习:P     return $this->value_=$this->BytesToBstr($http);
(转)PHP小偷类,学习:P      
(转)PHP小偷类,学习:P    }
(转)PHP小偷类,学习:P    else
(转)PHP小偷类,学习:P    {
(转)PHP小偷类,学习:P     $http=file($this->src_);
(转)PHP小偷类,学习:P     $this->isGet_=true;
(转)PHP小偷类,学习:P     return $this->value_=$http;
(转)PHP小偷类,学习:P     
(转)PHP小偷类,学习:P    }
(转)PHP小偷类,学习:P    
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P  else
(转)PHP小偷类,学习:P   {
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P   echo (
"<script>alert(\"请先设置src属性!\")</script>");
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P   
(转)PHP小偷类,学习:P  
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P //'删除偷到的内容中里面的换行、回车符以便进一步加工/方法
(转)PHP小偷类,学习:P function noReturn() 
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P   
(转)PHP小偷类,学习:P if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P $this->value_=str_replace(
"\n","",$this->value_);
(转)PHP小偷类,学习:P $this->value_=str_replace(
"\r","",$this->value_);
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P //'对偷到的内容中的个别字符串用新值更换/方法
(转)PHP小偷类,学习:P function change($oldStr,$str) //'参数分别是旧字符串,新字符串
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P $this->value_=str_replace($oldStr,$str,$this->value_ );
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P //'按指定首尾字符串对偷取的内容进行裁减(不包括首尾字符串)/方法
(转)PHP小偷类,学习:P function  cut($head,$bot) //'参数分别是首字符串,尾字符串
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P   if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P   $message=explode($head,$this->value_);
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P   if(count($message)>1)
(转)PHP小偷类,学习:P   {
(转)PHP小偷类,学习:P    $message=explode($bot,$message[1]);
(转)PHP小偷类,学习:P    return $this->value_= $message[0];
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P   else 
(转)PHP小偷类,学习:P   {
(转)PHP小偷类,学习:P    return $this->value_=
"";
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P  
(转)PHP小偷类,学习:P 
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P 
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P function cutpro($start,$end,$no='1',$comprise='') // $no must in {1,2,3,4,5(转)PHP小偷类,学习:P..} zero is not support
(转)PHP小偷类,学习:P  //此方法较cut方法有进步,是可以调节$no 确定切到指定第no个符合条件的文字串
(转)PHP小偷类,学习:P  {  
(转)PHP小偷类,学习:P                $string=explode($start,$this->value_);
(转)PHP小偷类,学习:P    //print_r($string);
(转)PHP小偷类,学习:P                $string=explode($end,$string[$no]);
(转)PHP小偷类,学习:P    //print_r($string);
(转)PHP小偷类,学习:P                switch ($comprise){
(转)PHP小偷类,学习:P                        case 'start':
(转)PHP小偷类,学习:P                                $string=$start.$string[0];
(转)PHP小偷类,学习:P                        break;
(转)PHP小偷类,学习:P                        case 'end':
(转)PHP小偷类,学习:P                                $string=$string[0].$end;
(转)PHP小偷类,学习:P                        break;
(转)PHP小偷类,学习:P                        case 'all':
(转)PHP小偷类,学习:P                                $string=$start.$string[0].$end;
(转)PHP小偷类,学习:P                        break;
(转)PHP小偷类,学习:P                        default:
(转)PHP小偷类,学习:P                                $string=$string[0];
(转)PHP小偷类,学习:P                }
(转)PHP小偷类,学习:P                return $this->value_=$string;
(转)PHP小偷类,学习:P        }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P function cut2($head,$bot)  //cut 的另一种实现方法
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P  return  substr($this->value_,strpos($this->value_,$head)+strlen($head),strpos($this->value_,$bot)-strpos($this->value_,$head)-strlen($head));
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P //'按指定首尾字符串对偷取的内容进行裁减(包括首尾字符串)/方法
(转)PHP小偷类,学习:P function  cutX($head,$bot) //'参数分别是首字符串,尾字符串
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P   $tmp=$this->cut($head,$bot);
(转)PHP小偷类,学习:P   
(转)PHP小偷类,学习:P   return $this->value_=$head.$tmp.$bot;
(转)PHP小偷类,学习:P    
(转)PHP小偷类,学习:P 
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P //'按指定首尾字符串位置偏移指针对偷取的内容进行裁减/方法
(转)PHP小偷类,学习:P function cutBy($head,$headCusor,$bot,$botCusor) 
(转)PHP小偷类,学习:P //'参数分别是首字符串,首偏移值,尾字符串,尾偏移值,左偏移用负值,偏移指针单位为字符数
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P return substr($this->value_,strpos($this->value_,$head)+strlen($head)+$headCusor,strpos($this->value_,$bot)-1+$botCusor-strpos($this->value_,$head)-strlen($head)-$headcusor);
(转)PHP小偷类,学习:P    
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P //'按指定首尾字符串对偷取的内容用新值进行替换(不包括首尾字符串)/方法
(转)PHP小偷类,学习:P function  filt($head,$bot,$str)// '参数分别是首字符串,尾字符串,新值,新值位空则为过滤
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P  if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P  $tmp_v=$this->value_;
(转)PHP小偷类,学习:P  $tmp=$this->cut($head,$bot);
(转)PHP小偷类,学习:P  return $this->value_=str_replace($tmp,$str,$tmp_v);
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P function  filtX($head,$bot,$str)// '参数分别是首字符串,尾字符串,新值,新值位空则为过滤
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P  if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P  $tmp_v=$this->value_;
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P  $tmp=$this->cutX($head,$bot);
(转)PHP小偷类,学习:P   
(转)PHP小偷类,学习:P  return $this->value_=str_replace($tmp,$str,$tmp_v);
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P //'按指定首尾字符串位置偏移指针对偷取的内容新值进行替换/方法
(转)PHP小偷类,学习:P function  filtBy($head,$headCusor,$bot,$botCusor,$str) 
(转)PHP小偷类,学习:P //'参数分别是首字符串,首偏移值,尾字符串,尾偏移值,新值,左偏移用负值,偏移指针单位为字符数,新值为空则为过滤
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P // 这里写代码  
(转)PHP小偷类,学习:P $tmp_v=$this->value_;
(转)PHP小偷类,学习:P $ttt=substr($this->value_ ,strpos($this->value_ ,$head)+strlen($head)+$headCusor,strpos($this->value_ ,$bot)-1+$botCusor-strpos($this->value_ ,$head)-strlen($head)-$headCusor);
(转)PHP小偷类,学习:P //echo $ttt;
(转)PHP小偷类,学习:P return $this->value_=str_replace($ttt,$str,$tmp_v );
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P 
(转)PHP小偷类,学习:P //'将偷取的内容中的绝对URL地址改为本地相对地址
(转)PHP小偷类,学习:P function  local()
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P //'对偷到的内容中的符合正则表达式的字符串用新值进行替换/方法
(转)PHP小偷类,学习:P function  replaceByReg($patrn,$str) //'参数是你自定义的正则表达式,新值
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P return $this->value_=join(
"",preg_replace($patrn,$str,$this->value_));
(转)PHP小偷类,学习:P  
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P function pickByReg($patrn)
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P //  
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P function debug()
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P  $tempstr=
"<SCRIPT>function runEx(){var winEx2 = window.open(\"\", \"winEx2\", \"width=500,height=300,status=yes,menubar=no,scrollbars=yes,resizable=yes\"); winEx2.document.open(\"text/html\", \"replace\"); winEx2.document.write(unescape(event.srcElement.parentElement.children[0].value)); winEx2.document.close(); }function saveFile(){var win=window.open('','','top=10000,left=10000');win.document.write(document.all.asdf.innerText);win.document.execCommand('SaveAs','','javascript.htm');win.close();}</SCRIPT><center><TEXTAREA id=asdf name=textfield rows=32  wrap=VIRTUAL cols=\"120\">".$this->value_."</TEXTAREA><BR><BR><INPUT name=Button onclick=runEx() type=button value=\"查看效果\">&nbsp;&nbsp;<INPUT name=Button onclick=asdf.select() type=button value=\"全选\">&nbsp;&nbsp;<INPUT name=Button onclick=\"asdf.value=''\" type=button value=\"清空\">&nbsp;&nbsp;<INPUT onclick=saveFile(); type=button value=\"保存代码\"></center>";
(转)PHP小偷类,学习:P        echo $tempstr;
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P function getkeylinks($key) // 此方法用来确定包含某关键字的行的所有链接情况
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P  // this function is used for toline=false 
(转)PHP小偷类,学习:P  if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P  foreach($this->value_ as $k=>$v)
(转)PHP小偷类,学习:P  {
(转)PHP小偷类,学习:P   if(ereg($key,$v)) {
(转)PHP小偷类,学习:P    $this->value_=$v;
(转)PHP小偷类,学习:P    return $this->value_=$this->_striplinks();
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P  }
(转)PHP小偷类,学习:P  
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P function hasit($key)  // 此方法用来确定是否包含某关键字的行 
(转)PHP小偷类,学习:P {
(转)PHP小偷类,学习:P  // this function is used for toline=false and true;
(转)PHP小偷类,学习:P  if(!$this->isGet_) $this->steal();
(转)PHP小偷类,学习:P  
(转)PHP小偷类,学习:P  foreach($this->value_ as $k=>$v)
(转)PHP小偷类,学习:P  {
(转)PHP小偷类,学习:P   if(ereg($key,$v))
(转)PHP小偷类,学习:P   {
(转)PHP小偷类,学习:P     
(转)PHP小偷类,学习:P   return true;
(转)PHP小偷类,学习:P   }
(转)PHP小偷类,学习:P   
(转)PHP小偷类,学习:P  }
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P  return false;
(转)PHP小偷类,学习:P }
(转)PHP小偷类,学习:P 
(转)PHP小偷类,学习:P
(转)PHP小偷类,学习:P}
(转)PHP小偷类,学习:P?>
(转)PHP小偷类,学习:P

相关文章:

  • 2021-12-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-01
  • 2021-07-26
  • 2021-09-09
  • 2022-12-23
猜你喜欢
  • 2021-09-02
  • 2022-12-23
  • 2022-02-28
  • 2021-10-21
  • 2022-12-23
  • 2022-12-23
  • 2022-01-07
相关资源
相似解决方案