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 parse_url 一个好用的函数
Oct 03 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
php获取当前时间的毫秒数的方法
Jan 26 PHP
PHP exif扩展方法开启详解
Jul 28 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 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 身份证号验证函数
2009/05/07 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
extjs form textfield的隐藏方法
2008/12/29 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
require.js中的define函数详解
2017/07/10 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
python k-近邻算法实例分享
2014/06/11 Python
初步理解Python进程的信号通讯
2015/04/09 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
视光学专业毕业生推荐信
2013/10/28 职场文书
英语感恩演讲稿
2014/01/14 职场文书
小区门卫管理制度
2014/01/29 职场文书
创新比赛获奖感言
2014/02/13 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
法院授权委托书格式
2014/09/28 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
JavaScript 数组去重详解
2021/09/15 Javascript