PHP小偷程序原理、实例及改进

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

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

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

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

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

一、PHP小偷原理的实现:

1、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(保存好,以备下次使用)。 

2、eregi()函数的应用 

通过eregi()获取里的内容: 
<?php 
$url='http://www.77169.com'; 
//file_get_contents()函数获取网页的html文档 
$file=file_get_contents($url); 
//通过eregi()匹配获取想要的信息 
eregi('<title>(.*)</title>',$file,$rg); 
//建立一个新文件 
$newfile=fopen('title.htm','w'); 
//把内容读取进去 
fwrite($newfile,$rg[1]); 
?>
 
 
打开title.htm可以看到已经获取了<title></title>之间的内容 

从上面的两个例子,已经知道PHP小偷的实现原理,从中也知道它的不足之处,但通过AJAX可以完善它,使它可以用于实践项目中。 

二、PHP小偷技术的实用和改进: 

目的:获取华夏黑客的最新资讯,并实时更新查看示例。 

实际中可能只用到三个页面:showNews.php、Update.php、HackNews.htm,但为了能看到实时更新的效果,这里用到了模拟主页的页面ImitationIndex.htm。 

showNews.php: 
<style type="text/css"> 
body{background:#c60;} 
a{color:#444;font:12px Courier New;padding:8px;} 
a:hover{color:#f00} 
#hei_content{width:400px;background:#ccc;border:2px solid #000;border-bottom:5px solid #000;} 
</style> 
<?php 
echo('<div id="hei_content">'); 
include('HackNews.htm'); 
echo('</div>'); 
?> 
<script type="text/javascript"> 
window.οnlοad=UpdateNews; 
function GetXmlHttp() 

var xmlhttp; 
try 

//IE7.0 ect 
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 

catch(a) 

try 

//ie6.0 ect 
xmlhttp=new ActiveXObject("Mscrosoft.XMLHTTP"); 

catch(b) 

//非IE 
xmlhttp=new XMLHttpRequest(); 


return xmlhttp; 

function StateChange() 

if(xmlhttp.readyState==4&&xmlhttp.status==200) 

document.getElementById("hei_content").innerHTML=xmlhttp.responseText; 


function UpdateNews() 

xmlhttp=GetXmlHttp(); 
xmlhttp.onreadystatechange=StateChange; 
var url='Update.php'; 
url=url+"?sid="+Math.random(); 
xmlhttp.open("GET",url,true); 
xmlhttp.send(null); 

</script>
 

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 background=http://hack.77169.com/UploadFiles_8057/200902/20090220100422648.gif colSpan=3 height=100> 
(.*)</td> 
</tr> 
</table> 
</td> 
</tr> 
<tr> 
<td colSpan=3><IMG height=8 src=/"http://hack.77169.com/UploadFiles_8057/200902/20090220100422568.gif'; 
//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小偷技术,在采集多个网站的大量信息下,页面的加载速度并不会受多大影响。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
猎马搜索源码是一种用于搜索引擎优化(SEO)的开源程序。该程序的改良版称为火端搜索,它是基于原有的百度搜索引擎和好搜搜索引擎的爬虫程序。这个程序的作用是从互联网上抓取网页数据,并将其整理成可供搜索的索引。 猎马搜索源码(火端搜索改良版)的核心部分是使用PHP编写的爬虫程序。爬虫程序通过模拟人类对网页的访问,自动查找和下载网页,并将网页的内容存储到数据库中。该程序还会自动解析网页的链接,以便进一步抓取与之相关的页面。通过这种方式,猎马搜索实现了建立搜索引擎所需要的索引。 猎马搜索源码(火端搜索改良版)的另一个重要组成部分是搜索页面的前端设计。通过HTML、CSS和JavaScript等技术,将搜索结果以友好的方式展示给用户。用户可以在搜索框中输入关键词,并通过点击搜索按钮,触发后台查询相关的网页内容。搜索结果会按照相关度和其他算法进行排序,并以列表或磁贴等形式展示给用户。 猎马搜索源码(火端搜索改良版)具有一些优化功能。例如,它可以根据用户的搜索历史和行为,提供个性化的搜索结果。此外,它还采用了各种算法来过滤垃圾信息、提高搜索效率和准确度。 总的来说,猎马搜索源码(火端搜索改良版)是一种功能强大的搜索引擎优化工具,它利用PHP编写的爬虫程序获得网页数据,并通过前端设计展示给用户。通过优化和改良,猎马搜索源码能提供个性化搜索结果,并提高搜索效率和准确度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值