小偷程序原理

一般来说,我们做网站,数据都是在我们自己的数据库中的,但有些数据,我们不想也不能自己去收集数据,比如新闻\天气预报,(我们无法天天更新),所以我们就需要借助别人的网站来显示这些内容 。但如果直接链接到别人的网站,那就不是自己的站点了,所以我们通过xmlhttp对象来在后台把别人的网页内容载入到内存中,经过筛选,将别人的网页内容显示出来 ,这就是所谓的“小偷程序”。

小偷程序实际上是通过了XML中的XMLHTTP组件调用其它网站上的网页,动态载入内存后,再对别人网页的内容进行分析过滤。所以,原则上只要别人网页上能显示出来的信息,你都可以使用(关于连接,一般的下载网站的连接你是截不到的,因为它进行了隐藏)。现在有很多新闻小偷程序,很多都是调用了sina的新闻网页,对其中的html进行了一些替换,同时对广告也进行过滤。除了新闻截取,你还可以利用小偷程序去截取一些别的信息,比如天气预报等。

小偷程序的优点有:
1、无须维护网站,因为小偷程序中的数据来自其他网站,它将随着该网站的更新而更新;
2、可以节省服务器资源,一般小偷程序就几个文件,所有网页内容都是来自其他网站。

其缺点有:
1、不稳定,如果目标网站出错,程序也会出错。目标网站进行升级维护,小偷程序也要进行相应修改;
2、速度慢,因为是远程调用,速度和在本地服务器上读取数据比起来,肯定要慢一些。

小偷程序一般是使用xmlhttp组件来下载别人的网页,将别人的网页内容载到了你的内存中,再经过分析,过滤掉不需要的内容,最终实现按照自己的格式来显示内容。比如这个网页:http://www.itb2b.com.cn/thief/index.asp ,就是截取了新浪的内容。

以下是小偷程序代码:
<%
'常用函数
'1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码
function getHTTPPage(url)
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
set http=nothing
if err.number<>0 then err.Clear
end function
%>    

换句话说,要做小偷程序,你必须了解xmlhttp组件的使用。微软提供的Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。

XMLHTTP对象及其方法:
创建XMLHTTP对象的语句如下:

Set objXML = CreateObject("Msxml2.XMLHTTP")

Set objXML = CreateObject(“Microsoft.XMLHTTP”)
其中Set objXML = CreateObject("Msxml2.XMLHTTP")是最新的版本

对象创建后调用Open方法对Request对象进行初始化,语法格式为:
poster.open http-method, url, async, userID, password
Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。
参数的含义如下所示:  
http-method: HTTP的通信方式,比如GET或是 POST
url: 接收XML数据的服务器的URL地址。通常在URL中要指明ASP或CGI程序
async: 一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
userID:用户ID,用于服务器身份验证
password:用户密码,用于服务器身份验证

比如,我们要调用百度的网页,我们可以:
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET","http://www.baidu.com",false
Http.send()

Send方法是用来发送XML数据的,用法如下:
poster.send()  

如果不用send来发参数,而你要调用的网页又要接收参数,可以这样简单处理
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET","http://要调用的网页?id=1&name=abc",false
Http.send()
Http.send()以后,xmlhttp对象会返回一个对象,这个对象里面就包含了所调用网页的内容,就象从浏览器里打开一样,只不过网页内容是在内存中,还没有显示出来。但在调用过程中可能会出错,所以XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。

0 Response对象已经创建,但XML文档上载过程尚未结束
1 XML文档已经装载完毕
2 XML文档已经装载完毕,正在处理中
3 部分XML文档已经解析
4 文档已经解析完毕,客户端可以接受返回消息

所以我们一般这样处理:
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET","http://要调用的网页?id=1&name=abc",false
Http.send()
'检查是否完成,readystate值为4说明载入完毕
if Http.readystate<>4 then
   exit function
end if  

Http.send()后,经检测Http.readystate==4,说明载入完毕,这时网页内容已经载入到了Http.responseBody中了 ,但是如果是中文网页,Http.responseBody中会有乱码,这需要我们转换一下乱码 ,所以完整的调用是这样的:
dim http
set http=Server.createobject("Microsoft.XMLHTTP")
Http.open "GET","你要调用的网址",false
Http.send()
if Http.readystate<>4 then '如果不等于4,说明出错了
   exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
set http=nothing
其中,bytesToBSTR是一个自己写的函数
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

所以,getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")表示,将Http.responseBody的内容按GB2312编码转换一下,放到getHTTPPage变量中。
最后,你再对getHTTPPage变量进行分析,取出你想显示的数据就行了。

需要注意的是,BytesToBstr函数中用到了adodb.stream组件,这需要你的服务器有执行它的权限。

下面我们讲个实例,我们显示一下新浪的新闻。要想显示新浪的新闻,我们就要先找到新浪的新闻网址是什么。新浪有个动态新闻页网址:http://news.sina.com.cn/old1000/news1000_日期.shtml 。比如,我们要显示6月18日的新闻,就输入
http://news.sina.com.cn/old1000/news1000_20050618.shtml ,打开网页你会发现是一个新闻列表,下面我们就要分析一下它的结构,右键查看源代码。里面很乱,但你可以找到<!--新闻开始-->和<!--新闻结束-->,中间的内容就是列表的内容。好了,也就是我说,我们想显示6月18号的新闻,就这样调用:
dim http
set http=Server.createobject("Microsoft.XMLHTTP")
Http.open "GET","http://news.sina.com.cn/old1000/news1000_20050618.shtml",false
Http.send()
if Http.readystate<>4 then
   exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
set http=nothing
start=Instr(wstr,"<!--新闻开始-->")
over=Instr(wstr,"<!--新闻结束-->")
wstr=mid(wstr,start+11,over-start-11)

这样wstr就是新闻列表的内容。为什么start+11和over-start-11呢?因为<!--新闻开始-->和<!--新闻结束-->都是11的长度。wstr取出来后,还要进行分析,把它的网址链接替换成你的链接,把不必要的字符过滤掉,这个工作很烦琐,你可以用replace或者用正则表达式来替换,比如:
wstr=replace(wstr,"href=""","href=""show.asp?url=")
wstr=replace(wstr,"<ul>","")
wstr=trim(replace(wstr,"</ul>","")) '完成对页面内容的截取加工
wstr=Replace(wstr,"http://news.sina.com.cn","NewsNews")
wstr=Replace(wstr,"http://tech.sina.com.cn","TechNews")
wstr=Replace(wstr,"http://sports.sina.com.cn","SportsNews")
wstr=Replace(wstr,"http://ent.sina.com.cn","EntNews")
wstr=Replace(wstr,"http://eladies.sina.com.cn","EladiesNews")
wstr=Replace(wstr,"http://jczs.sina.com.cn","jczs")
wstr=Replace(wstr,"http://auto.sina.com.cn","AutoNews")
wstr=Replace(wstr,"http://finance.sina.com.cn","FinanceNews")
wstr=Replace(wstr,"http://www.eladies.com.cn","wwwEladies")

转载于:https://www.cnblogs.com/seerlin/archive/2008/03/22/1117988.html

vivi万能小偷程序是以php语言进行开发的网站采集系统,只需要输入目标站地址就能全自动采集,高智能的采集程序,支持98%的站点,规则制作十分简单,菜鸟也能制作采集规则,采集不求人。 功能简介: ·后台配置采集节点,输入目标站地址即可全自动智能转换自动全站采集 ·支持https、支持POST获取、支持搜索、支持cookie、支持代理、支持破解防盗链、支持破解防采集 ·全自动分析,内外链接自动转换、图片地址、css、js,自动分析CSS内的图片使得页面风格不丢失 ·广告标签,方便在规则里直接替换广告代码 ·支持自定义标签,标签可自定义内容、自由截取、内容正则截取。可以放在模板里,也可以在规则里替换 ·支持自定义模板,可使用标签diy个性模板,真正做到内容上移花接木 ·调试模式,可观察采集性能,便于发现和解决各种错误 ·多条采集规则一键切换,支持导入导出 ·内置强大替换和过滤功能,标签过滤、站内外过滤、字符串替换、等等 ·IP屏蔽功能,屏蔽想要屏蔽IP地址让它无法访问 蜘蛛访问记录 高级功能 ·url过滤功能,可过滤屏蔽不采集指定链接 ·伪原创,近义词替换有利于seo ·伪静态,url伪静态化,有利于seo ·自动缓存自动更新,可设置缓存时间达到自动更新,css缓存 ·简繁体互转 ·代理IP、伪造IP、随机IP、伪造user-agent、伪造referer来路、自定义cookie,以便应对防采集措施 ·url地址加密转换,个性化url,让你的url地址与众不同 ·关键词内链功能 ·插件机制,内容灵活控制 ·还有更多功能等你发现…… ftp上传需使用二进制上传方式,方法请百度 data文件夹需要读写权限 首次使用程序请到后台进行相关设置,否则出现错位、空白等现象 默认后台:http://网站地址/@admin/index.php 默认账号: admin 默认密码: admin 程序使用环境 php5.2 - php5.5 vivi万能小偷程序 v4.0 更新日志: 1.增加采集开关,关闭时将停止采集仅使用缓存 2.增加替换支持首页和内页区分 3.增加禁止手机版搜索引擎转码 4.增加目标站编码自动识别 5.增加支持首页使用目标站标题 6.优化替换算法 7.优化后台采集节点界面 8.强化后台插件管理 9.仅保留最近1万条蜘蛛记录,为提高性能
绕看漫画小偷程序,免费完全开源,新手可以学习用,2011.11.30更新全站程序为完全开源版,代码完全公开,适合初级学习;可以用于交流修改和二次开发;无任何加密文件,可以任意修改了;本站会陆续更新所有程序为开源免费版,支持二次开发。 目标站是:raokan 更新速度还可以,主要是图片没经过防盗链,容易被采集。 广告比较少,界面不是太漂亮,很一般的那种。 他的漫画资源倒是不少,不过有个很大的缺点与那些专门的漫画站比,就是速度不好,为什么? 因为,他的站的图片是一个ip里面的,不像其他大站,图片分为好几个服务器,会根据客户ip不同自动调整服务器ip,力求找到最优的速度服务器. 这个站是我大学时候的东西了,有几年了。。 属于古董级的东西了。大家不嫌弃的话,就下载研究研究,很简单,也许你看了代码后也完全可以仿照着写出小偷程序了呢。 代码写法经过整合,完全适合新手参考,相同代码归类,一目了然。 下面说说本程序的修改方法: 本程序无后台,修改网站信息,找到config.asp这个文件,用记事本打开,可以看到下面的代码: 这些代码没行后面都有相应的注释,按照注释进行修改就可以了。 其他的文件一般不用修改 其他文件想修改的话,要用记事本打开相应的文件。 我举个例子就成了,比如 头部文件 head.asp ,用记事本打开,看到如下: 以上这些里面的网址啥的都是可以修改的,等等吧,自己看着办了,网址和汉字都还是可以看懂的吧。。 说说广告问题: 广告都是js调用的,我这里也没仔细看过哪个是管的哪个广告,里面的js文件都可以用记事本打开看看,如果里面是广告网址的话,那么他就是广告文件了,记得js广告文件,必须代码是经过js转换后的。 Tags: 漫画小偷 4dzz小偷 asp小偷
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值