PHP小偷程序的设计与实现方法详解


Posted in PHP onOctober 15, 2016

本文实例讲述了PHP小偷程序的设计与实现方法。分享给大家供大家参考,具体如下:

其实自己一直想做一个内涵图片的网站,以前的想法是做一个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://3water.com.$value->src;
           $infomation = file_get_contents($url);
           $result = $this->saveHtml($infomation, $imgBIG, $tmp['0'].".jpg");
           if($result)
           {
            echo $file."OK\n";
           }
         }
       }
     }
   }
  }
   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!我只能懒得写正则而已。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php中文件上传的安全问题
Oct 09 PHP
如何开发一个虚拟域名系统
Oct 09 PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
php笔记之:数据类型与常量的使用分析
May 14 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
php array_slice 取出数组中的一段序列实例
Nov 04 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
Feb 20 PHP
PHP分享图片的生成方法
Apr 25 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
基于php判断客户端类型
Oct 14 #PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
Oct 14 #PHP
php生成与读取excel文件
Oct 14 #PHP
基于PHP实现用户注册登录功能
Oct 14 #PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 #PHP
php车辆违章查询数据示例
Oct 14 #PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 #PHP
You might like
php Hex RGB颜色值互换的使用
2013/05/10 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
PHP简单遍历对象示例
2016/09/28 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
js实现div色块碰撞
2020/01/16 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
编写简单的Python程序来判断文本的语种
2015/04/07 Python
python中enumerate函数用法实例分析
2015/05/20 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
pytorch 共享参数的示例
2019/08/17 Python
django删除表重建的实现方法
2019/08/28 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
美术兴趣小组活动总结
2014/07/07 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
企业安全生产检查制度
2015/08/06 职场文书
《废话连篇——致新手》——chinapizza
2022/04/05 无线电