小偷程序的特点
1、可以采集80%以上的站点,只需简单的在后简基塌台配置采集替换规则即可。
2、突破图片防盗链系统,可以将目标站的图片下载到服务器上面,提高访问效率,增加百度图片的收录。
3、支持静态生成,即使目标站服务器出现错误,本站依然不受影响(前提是开启静态生成和图片下载到本地服务器)。
4、授权版可以启用全国分站功能,自动产生长尾关键字,适合全国服务行业和信息查询服务。
语言代码 1.Perl
#!/usr/bin/perl
# 通过IE浏览器中的[查看]->[源文件]可看HTML文件内容。
# perl中可以不通过浏览器直接取得HTML文件内容,用的
# 就是perl模块libWWW
use strict;
use LWP::UserAgent;
use threads::shared;
my $URL = http://*******;
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 yourf ile. pl >a.html
这样,输出的结果就保存在文件a.html中了。至于分析的语句,PERL可以使用方便而简洁的正则,限制于不同程序的不同分析,这里就不写分析语句了。
2.Active Server Pages - VBScript
ASP版本的小偷程序,也不见得有什么太大的难度。不过应用了XMLHTTP组件的功能而已,事实上,我也很惊讶ASP写这个程序的简短之处:
<%
URL = http://*******
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://*******, false);
xmlhttp.Send();
alert(xmlhttp.responseText);
</script>
4.Java
Java用来干这个,实在有点大材小用的感觉:
import jav a .io.*;
import jav a. net.*;
public class getURLContent
{
public static void main(String args[]) throws MalformedURLException,IOException
{
URL url = new URL(url address);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
while(reader.ready()){
System.out.println(reader.readLine());
}
}
}
5.php
php:
$url='http://网址';
echo file_get_contents($url);
?>
6.Asp. Net
c#:
System .Net.WebClient webclient = new System .Net.WebClient();
webclient.DownloadString(http://*******);
vb.n et:
Dim webclient As New System .Net.WebClient()
webclient.DownloadString(http://*******)
实例
QQ网站上的天气程序
代码如下:
<%
On Error Resume Next
Server.ScriptTimeOut=9999999
Function getHTTPPage(Path)
t = GetBody(Path)
getHTTPPage=BytesToBstr(t,GB2312)
End function
首先,进行小偷程序的一些初始化设置,以上代码的作用分别是忽略掉所有非致命性错误,把小偷程序的运行超时时间设置得很长(这样不会出现运行超时的错误),转换原来默认的UTF-8编码转换成GB2312编码,否则直接用XMLHTTP组件调用有中文字符的网页得到的将是乱码。
Function GetBody(url)
on error resume next
Set Retrieval = CreateObject(Microsoft.XMLHTTP)
With Retrieval
.Open Get, url, False, ,
.Send
GetBody = .ResponseBody
End With
Set Retrieval = Nothing
End Function
然后调用XMLHTTP组件创建一个对象并进行初始化设置。
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
Function Newstring(wstr,strng)
Newstring=Instr(lcase(wstr),lcase(strng))
if Newstring<=0 then Newstring=Len(wstr)
End Function
处理抓取回来的数据需要调用adodb.stream组件并进行初始化设置以下即为页面显示部分
<%
Dim wstr,str,url,start,over,city
’定义一些需要使用到的变量
city = Request.QueryString(id)
’程序传回的ID变量(即用户选择的城市)赋给id
url=http://appnews-qq-com/cgi-bin/news_qq_search?city=&city&
这里设置需要抓取的页面地址,当然你也可以直接指定某个地址而不使用变量
wstr=getHTTPPage(url)
获取指定页面的全部数据
start=Newstring(wstr, <html>)
这里设置需要处理的数据的头部,这个变量应视不同情况而设置,具体内容可以通过查看需要抓取的页面的源代码来确定。因为在这个程序里我们需要抓取整个页面,所以设置为页面全部抓取。注意,设置的内容必须是页面内容唯一的,不可以重复。
over=Newstring(wstr, </HTML>)
和start相对应的就是需要处理的数据的尾部,同样的,设置的内容必须是页面中唯一的。
body=mid(wstr,start,over-start)
’设置显示页面的范围
下面就是动用乾坤挪移+++的时候了,通过replace可以用一些字符替换掉数据中指定的字符。
body = replace(body,skin1,新浪天气预报 - 麦小偷网络)
body = replace(body,http://appnews-qq-com/cgi-bin/news_qq_search?city,tianqi.asp?id)
本程序中已经完成了替换的工作,如果有其他需要的话可以继续进行类似的替换操作。
response.write body
%>
替换完需要修改的内容后,就可以把修改的内容显示在页面上了。至此程序结束