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&MYSQL留言板源码
Jul 19 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
PHP 登录完成后如何跳转上一访问页面
Jan 14 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
May 07 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
Netbeans 8.2与PHP相关的新特性介绍
Oct 08 PHP
php中序列化与反序列化详解
Feb 13 PHP
Laravel实现短信注册的示例代码
May 29 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 PHP
Swoole4.4协程抢占式调度器详解
May 23 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中的 == 运算符进行字符串比较
2006/11/26 PHP
php 远程关机操作的代码
2008/12/05 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
php实现网页端验证码功能
2017/07/11 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
js加强的经典分页实例
2013/03/15 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
浅析vue数据绑定
2017/01/17 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
python交互式图形编程实例(三)
2017/11/17 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
建龙钢铁面试总结
2014/04/15 面试题
家长会学生家长演讲稿
2013/12/29 职场文书
保护环境建议书300字
2014/05/13 职场文书
文化产业实施方案
2014/06/07 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
民族学专业求职信
2014/07/28 职场文书
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫