Heim > php教程 > PHP源码 > PHP小偷程序的设计与实现示例

PHP小偷程序的设计与实现示例

WBOY
Freigeben: 2016-06-08 17:21:31
Original
1262 Leute haben es durchsucht

小偷程序其实就是自动去采集别人网站的内容,然后进行一些处理之后换成自己网站上无能为力,像现在有dedecms就有此功能,还有火车头也是这样的工具了,下面来看一个例子。

<script>ec(2);</script>


实自己一直想做一个内涵图片的网站,以前的想法是做一个CMS,然后自己上传一些图片。。

开始真这么做的,没什么动力。之后就放弃了,后来研究了一个CURL。反正还是把这个想法实现比较好。

用PHP盗图,就好比:穿着袜子穿凉鞋一样。虽然没问题,但看着确实蛋疼。

我先说一下我对PHP小偷程序的设计,PHP不支持多线程,这样就只能分先后顺序来做了

获取到目标网站的HTML页面+解析HTML页面获取到图片存储的连接+用二进制方式读取并且保存在本地+重命名  == 流程OK

你现在用两种方式来运行程序:

第一种:用游览器跑程序(多半会卡死,设置超时和内存大小就OK,你之间比较难等)

另一种:用命令行启动PHP(不存在PHP超时的问题)

/

 代码如下 复制代码
**
     *HTML解析类
     *author:Summer
     *date:2014-08-22
 **/
 
 class Analytical{
 
    public function __construct()
    {
          require_once('Class/SimpleHtmlDom.class.php');
          $this->_getDir();
    }
 
    private function _getDir()
    {
        $dir = "../TMP/HTML/Results/1";
        $imgBIG  = "../TMP/IMG/JPG/BIG";
        $it = new DirectoryIterator($dir."/");
        foreach($it as $file) {
         //用isDot ()方法分别过滤掉“.”和“..”目录
         if (!$it->isDot()) {
             $dirs = $dir."/".$file ;
             $tmp = explode(".",$file);
             $html = file_get_html($dirs);
                              $ulArr = $html->find('img');
                              foreach($ulArr as $key=>$value)
             {
                                 if ($value->class == "u")
                 {
                 $url = "http://www.111cn.net ".$value->src;
                 $infomation = file_get_contents($url);
                 $result = $this->saveHtml($infomation, $imgBIG, $tmp['0'].".jpg");
                 if($result)
                    {
                       echo $file."OKn";
                    }
                 }
 
             }
         }
     }
    }
 
     private function saveHtml($infomation,$filedir,$filename)
     {
 
         if(!$this->mkdirs($filedir))
         {
             return 0;
         }
 
         $sf =  $filedir."/".$filename;
         $fp=fopen($sf,"w"); //写方式打开文件
         return fwrite($fp,$infomation); //存入内容
         fclose($fp); //关闭文件
     }
 
      //创建目录
     private function mkdirs($dir)
     {
         if(!is_dir($dir))
         {
             if(!$this->mkdirs(dirname($dir))){
                 return false;
             }
             if(!mkdir($dir,0777)){
                 return false;
             }
         }
         return true;
     }
 
 }
 
new Analytical();

上面这个是HTML页面获取IMG的连接地址的过程。

用到了两个比较重要的东西:

1.PHP的DOM解析扩展simplehtmldom

2.PHP的目录迭代器

理解这两个东西了。这个分析类就没难点了。

在说说如果获取需要解析的页面呢?

其实跟上面的原理的是一样的。主要获取页面的URL,然后通过CURL去读取页面,返回一个HTML字符串,

再通过保存函数包HTML页面保存到本地。

我这里是因为要采集页面里面的图片(为了防止别人防盗链),所以设计的比较复杂。

而且为什么要分开,是因为simplehtmldom对象是很庞大的,而且拆开进行这样对流程更加清楚。

肯定有人会说,那为什么不用正则去匹配就跳过了HTML保存到本地的环节了,BINGO!我只能懒得写正则而已

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage