08 2009

PHP小偷原理实现及改进

Published by at 04:36 under PHP,Web技术

PHP小偷程序说白了就是让别人帮你维护你的网站,有点不劳而获的意思。至于这个东西到底是好是坏我们不评价了,还是研究一下程序要紧。

优点:通过PHP小偷我们可以借用别人网站上的信息而不用自己辛苦地去采集

缺点:需要把整页的HTML代码读取到本地,然后通过匹配获取到想要的信息再进行显示,这样大大影响网页的加载速度

改进:通过AJAX异步读取HTML代码,后台进行匹配获取到想要的信息,再显示到前台页面

预备知识:PHP,AJAX,正则表达式

关键字:file_get_contents()  fopen()  fwrite()  eregi()

前三个关键字都是关于PHP文件处理的函数,eregi()是关于正则表达式的函数

PHP小偷原理的实现

一、file_get_contents() fopen() fwrite() 的应用

咱们用华夏黑客牛刀小试吧,把主页的全部信息获取过来

建立一个PHP文件


< ?php
$url = 'http://www.77169.com/';
//file_get_contents()函数获取网页的html文档
$file = file_get_contents ( $url );
//建立一个新文件ImitationIndex.htm
$newfile = fopen ( 'ImitationIndex.htm', 'w' );
//把内容读取进去
fwrite ( $newfile, $file );
//关闭打开的文件
fclose ( $newfile );
?>

ImitationIndex.htm获取主页全部的HTML(保存好,以备下次使用)

二、eregi()函数的应用

通过eregi()获取里的内容


< ?php
$url = 'http://www.77169.com/';
//file_get_contents()函数获取网页的html文档
$file = file_get_contents ( $url );
//通过eregi()匹配获取想要的信息
eregi ( '之间的内容
  从上面的两个例子,已经知道PHP小偷的实现原理,从中也知道它的不足之处,但通过AJAX可以完善它,使它可以用于实践项目中

  PHP小偷技术的实用和改进

  目的:获取华夏黑客的最新资讯,并实时更新查看示例
实际中可能只用到三个页面

  showNews.php,Update.php,HackNews.htm

  但为了能看到实时更新的效果,这里用到了模拟主页的页面ImitationIndex.htm


< ?php
echo ('

 

');
include ('HackNews.htm');
echo ('');
?>

showNews.php中的


echo('

');
include('HackNews.htm');
echo('

');

  HackNews.htm是已经缓存的文件,这样不用加载主页上的整个HTML再显示,这个工作留给AJAX

  document.getElementById(“hei_content”).innerHTML=xmlhttp.responseText

  xmlhttp.responseText就是加载更新后的内容

  Update.php


< ?php
$url = 'ImitationIndex.htm';
//file_get_contents()函数获取网页的html文档
$file = file_get_contents ( $url );
//$regx为正则表达式的内容,用于匹配获取想要的信息
$regx = '

 

 (.*)
< /td>
< /tr>
< /table>
< /td>
< /tr>

 

  //eregi()获取匹配到的内容,赋值给数组变量$rg;
eregi ( $regx, $file, $rg );
//建立一个新文件HackNews.htm
$newfile = fopen ( 'HackNews.htm', 'w' );
//把内容读取进去
fwrite ( $newfile, $rg [1] );
fclose ( $newfile );
//用iconv编码转换后,输出匹配的HTML内容
$rg [1] = iconv ( 'gb2312', 'utf-8', $rg [1] );
echo ($rg [1]);
?/> 

  Update.php是异步更新的后台页面

  $newfile=fopen(‘HackNews.htm’,'w’);

  fwrite($newfile,$rg[1]);

  把更新的内容重新保存在HackNews.htm中,下次在index.php中include时就直接调用这个页面

  $url=’ImitationIndex.htm’在实际应用中应该是这样$url=’http://www.77169.com/’

  但为了便于调试,建立一个ImitationIndex.htm模拟页面,如果对ImitationIndex.htm页面中最新资讯中的内容改改,就可以看到实时更新效果。

  总结:通过AJAX改进的PHP小偷技术,在采集多个网站的大量信息下,页面的加载速度并不会受多大影响。

No responses yet

Trackback URI | Comments RSS

Leave a Reply

You must be logged in to post a comment.