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 相关文章推荐
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
PHP使用ActiveMQ实现消息队列的方法详解
May 31 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 PHP
php+websocket 实现的聊天室功能详解
May 27 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截取中文字符串不乱码的方法
2013/12/25 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
ionic3 懒加载
2017/08/16 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
python加载自定义词典实例
2019/12/06 Python
opencv 阈值分割的具体使用
2020/07/08 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
爱心捐助倡议书
2014/05/19 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
失恋33天观后感
2015/06/11 职场文书