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执行速度全攻略
Oct 09 PHP
用PHP实现小型站点广告管理(修正版)
Oct 09 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
Mar 03 PHP
php实现的农历算法实例
Aug 11 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
微信公众号之主动给用户发送消息功能
Jun 22 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 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循环获取GET和POST值的代码
2008/04/09 PHP
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
Dom与浏览器兼容性说明
2010/10/25 Javascript
js快速排序的实现代码
2013/12/08 Javascript
js读取cookie方法总结
2014/10/31 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
解决python报错MemoryError的问题
2018/06/26 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Python Django 命名空间模式的实现
2019/08/09 Python
英语专业应届生求职信范文
2013/11/15 职场文书
宣传标语大全
2014/07/01 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
暑假生活随笔
2015/08/15 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python