选择显示字体大小

教你做小偷程序 容易学

     要做一名好的小偷有点难度:p
  
  这是我投给电脑报的一篇稿子,很简单,写得很仓促,有很多不足的地方,高手们笑的时候麻烦指正一下,原文是拿alexa开刀,我在落伍发表的时候修改成了qq天气预报小偷.
  
  灵活运用xmlhttp组件
  
  你也可以做“小偷”
  
   看到这个标题你可千万别误会,这里所说的“小偷”指的是在asp中运用xml中的xmlhttp组件提供的强大功能,把远程网站上的数据(图片,网页及其他文件)抓取到本地,经过各种处理后显示到页面上或者存储进数据库的一类程序。你可以通过这种小偷程序,完成过去一些似乎完全不可能实现的任务,比如说把某个站的页面偷梁换柱后变成自己的页面,或者把某个站的一些数据(文章,图片)保存到本地数据库中加以利用。“小偷”的优点有:无须维护网站,因为小偷程序中的数据来自其他网站,它将随着该网站的更新而更新;可以节省大量的服务器资源,一般小偷程序就几个文件,所有网页内容都是来自其他网站。缺点在于:不稳定,如果目标网站出错,程序也会出错,而且,如果目标网站进行升级维护,那么小偷程序也要进行相应修改;速度,因为是远程调用,速度和在本地服务器上读取数据比起来,肯定要慢一些。怎么样,听起来很神奇吧?我们现在就开始来学习一些“小偷”程序的入门知识吧!
  
  我们拿个简单点的东西来研究一下吧,qq网站上的天气预报程序
  
  程序演示地址:http://www.gtocn.com/tianqi.asp
  源码下载:http://www.gtocn.com/tianqi.txt
  
  代码如下:
  
  <%
  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
  %>
  
  替换完需要修改的内容后,就可以把修改的内容显示在页面上了。至此程序结束
  
  
  
   程序使用方法及结果:把上述代码去掉说明部分后保存为tianqi.asp,上传到支持aspxml的空间下,在浏览器中运行即可。你可以在在这个程序的基础上进行进一步的界面美化或者程序优化。
  
   以上只是一些关于xmlhttp组件的初级应用,实际上它还能实现的功能还有很多,比如说保存远程图片到本地服务器上,配合adodb.stream组件可以把获取来的数据保存进数据库。小偷的作用和使用范围都很广。但是不可以拿来做违法的事哦!
  
   也许还有人要问了,这种“小偷”程序难道只是asp的专利吗?非也,php通过fopen函数一样可以实现同样的效果,由于php本身的各种特点,写出来的小偷程序和asp相比,在体积和执行效率上都有者明显的优势,但限于篇幅,这里就不一一说明了。
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons