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
Dec 13 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
mac下Apache + MySql + PHP搭建网站开发环境
Jun 02 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
Nov 20 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
PHP批量删除jQuery操作
Jul 23 PHP
基于swoole实现多人聊天室
Jun 14 PHP
php7性能提升的原因详解
Oct 13 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 GD绘制24小时柱状图
2008/06/28 PHP
PHP 组件化编程技巧
2009/06/06 PHP
浅析php工厂模式
2014/11/25 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
基于jquery的表格排序
2010/09/11 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
浅谈js闭包理解
2019/03/28 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
Shell如何接收变量输入
2016/08/06 面试题
维护民族团结演讲稿
2014/08/27 职场文书
立志成才演讲稿
2014/09/04 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
Vue如何清空对象
2022/03/03 Vue.js