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&java(一)
Oct 09 PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
php开发环境配置记录
Jan 14 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
提交表单后 PHP获取提交内容的实现方法
May 25 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
php 7新特性之类型申明详解
Jun 06 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 PHP
laravel框架语言包拓展实现方法分析
Nov 22 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实现水仙花数的4个示例分享
2014/04/08 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
Yii2使用$this->context获取当前的Module、Controller(控制器)、Action等
2017/03/29 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
Keras搭建自编码器操作
2020/07/03 Python
解决python对齐错误的方法
2020/07/16 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
护理学毕业生求职信
2013/11/14 职场文书
秋季运动会广播稿
2014/02/22 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
一体化教学实施方案
2014/05/10 职场文书
雷锋电影观后感
2015/06/10 职场文书
物业保洁员管理制度
2015/08/05 职场文书
会计主管竞聘书
2015/09/15 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL