第一次听说“小偷程序”!呵呵、、
“小偷”定义
指的是利用ASP 或PHP等强大功能,把远程网站上的数据(图片,网页及其他文件)抓取到本地,经过各种处理后显示到自己的页面上或者存储进数据库的一类程序。
“小偷”功能及用途
你可以通过这种小偷程序,完成过去一些似乎完全不可能实现的任务,比如说把某个站的页面偷梁换柱后变成自己的页面,或者把某个站的一些数据(文章,图片)保存到本地数据库中加以利用。
“小偷”的优点
如果你的站被百度等搜索收入那么在短期内你的网站访问是会有很大提高且无须维护网站。减少运行成本,因为小偷程序中的数据来自其他网站,它将随着该网站的更新而更新;可以节省大量的服务器资源,一般小偷程序就几个文件,所有网页内容都是来自其他网站。
“小偷”的缺点
不稳定,如果目标网站出错,程序也会出错,而且,如果目标网站进行升级维护,那么小偷程序也要进行相应修改;速度,因为是远程调用,速度和在本地服务器上读取数据比起来,肯定要慢一些。
获得各个网站的代码
1.Perl
#!/usr/bin/perl
# 通过IE浏览器中的[查看]->[源文件]可看HTML文件内容。
# perl中可以不通过浏览器直接取得HTML文件内容,用的
# 就是perl模块libWWW
use strict;
use LWP::UserAgent;
use threads::shared;
my $URL = "http://osdev.beguest.com";
my $ua = new LWP::UserAgent;
$ua->agent('Mozilla/3.0');
my ($address,$params) = split(/\?/,$URL);
my $req = new HTTP::Request ('GET',$address);
$req->content_type('applicationn/x-www-form-urlencoded');
$req->content();
my $res = $ua->request($req);
my $content = $res->as_string();
# 此时$content里面是网页内容
print $content;
$URL里就是要偷数据的地址。例子中的是本人的小站。偷自己的东西,没犯法吧?
当然,这个会把网页内容打印到控制台。所以很多数据或者需要保存的时候,应该用重定向符号输出到文件。如:
perl yourfile.pl >a.html
这样,输出的结果就保存在文件a.html中了。至于分析的语句,PERL可以使用方便而简洁的正则,限制于不同程序的不同分析,这里就不写分析语句了。
2.Active Server Pages - VBScript
ASP版本的小偷程序,也不见得有什么太大的难度。不过应用了XMLHTTP组件的功能而已,事实上,我也很惊讶ASP写这个程序的简短之处:
<%
URL = "http://osdev.beguest.com/osdev3.htm"
Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
objXMLHTTP.Open "GET",URL,False
objXMLHTTP.Send
Response.Write Server.HTMLEncode(objXMLHTTP.responseText)
Set objXMLHTTP = Nothing
%>
简单不?呵呵....
3.Active Server Pages - JScript
从原理来说,这个和VBScript差不多。从语句来说,这个跟VBScript也差不多-毕竟,它们都用同一个组件:
<script language="JScript">
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
xmlhttp.Open("POST", "http://osdev.beguest.com/osdev3.htm", false);
xmlhttp.Send();
alert(xmlhttp.responseText);
</script>
4.Java
Java用来干这个,实在有点大才小用的感觉:
import java.io.*;
import java.net.*;
public class getURLContent
{
public static void main(String args[]) throws MalformedURLException,IOException
{
URL url = new URL("http://osdev.beguest.com/osdev3.htm");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
while(reader.ready()){
System.out.println(reader.readLine());
}
}
}
5.php
php:
file_get_contents(url);
?>