2008年8月12日星期二

小偷程序

什么是小偷程序?顾名思义,小偷就是偷东西的,而程序就是计算机用的。合起来也很好理解:偷别人资料的程序。多半指网站的数据。
  偷数据的,几乎什么语言都可以。没有什么语言是肯定不能的。不过,某些语言显得比较容易,某些就显得比较繁琐。PERL就是一种用来偷数据的方便语言,得益于其简洁的语法。
  偷了数据,其实里面多半是HTML语句,包含了各种数据。我们也知道:HTML没XML那么好分析。针对某个页面的分析,程序还可以作出来。只是字符串处理相关的各种函数应用。但若被偷的东西结构变了,就要改变我们的程序,以适应新的结构。这个是要注意的。
  下面我们对各种语言的小偷程序进行说明:
  一.获得网站数据的各种语言代码
  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也差不多-毕竟,它们都用同一个组件:
  
  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());
   }
  }
  }

没有评论: