1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

【先锋海盗类】Ver2005 完美版 ASP

本帖由 小叶2005-11-25 发布。版面名称:后端开发

  1. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    代码:
    <% 
    '转发时请保留此声明信息,这段声明不并会影响你的速度!
    '**************************   【先锋海盗类】Ver2005  最终版********************************
    '作者:孙立宇、apollosun、ezhonghua
    '改进者:arllic 
    '【消除所有的BUG,去掉了一些不易使用,容易使人误解的功能,优化了执行效率,此为最终版】
    '官方网站:http://www.lkstar.com   技术支持论坛:http://bbs.lkstar.com
    '电子邮件:[email protected]    在线QQ:94294089
    '版权声明:版权没有,盗版不究,源码公开,各种用途均可免费使用,欢迎你到技术论坛来寻求支持。
    '——小偷程序的原理是通过XHTML和ASP技术相结合,定向集中采集远程网页内容加工后转为本地虚拟网页。
    '——此技术自诞生以来由于它的信息覆盖面、广同步更新和免维护的特性一直受到各编程爱好者的关注和追捧。
    '——目前国内比较流行的实时新闻、闪客动漫、流行歌曲、软件下载、天气预报、股票查询等优秀作品。
    '——然而由于制作小偷程序的过程过于复杂和繁琐,还由于远程网页代码的变更而经常失效,这使小偷网页的
    '维护成为一个噩梦!所以到目前为止,目前此类佳作不多,技术也集中在小部分人手中。
    '——先锋海盗类的诞生将使小偷程序的制作和维护变得容易起来。先锋海盗类提供的12种类方法将使你对采集
    '内容的编辑掌控能力变得空前强大,另有贴心的类排错debug方法可以使你随时观察自己在各步骤获得的代码和
    '页面显示效果,彻底掌握这些类方法将使你为所欲为地采集编辑各种远程页面,而且维护也相当方便!
    '——总而言之,使用先锋海盗类将使你的"小偷"程序晋升为"海盗"程序!
    '详细使用说明或范例请见下载附件或到本人官方站点下载!
    '-------------------------------------------------------------------------------------
    Class clsThief
    '____________________
    Private value_    '窃取到的内容
    Private src_      '要偷的目标URL地址
    Private isGet_    '判断是否已经偷过
    
    public property let src(str) '赋值—要偷的目标URL地址/属性
    src_=str
    end property
    
    public property get value '返回值—最终窃取并应用类方法加工过的内容/属性
    value=value_
    end property
    
    Public Property get Version
            Version="先锋海盗类 Version 2005"
    End Property
    
    private sub class_initialize()
    value_=""
    src_=""
    isGet_= false
    end sub
            
    private sub class_terminate()
    end sub
    
    private 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
    
    public sub steal() '窃取目标URL地址的HTML代码/方法
    if src_<>"" then
            dim Http
            set Http=server.createobject("MSXML2.XMLHTTP")
            Http.open "GET",src_ ,false
            Http.send()
            if Http.readystate<>4 then 
                    exit sub
            end if
            value_=BytesToBSTR(Http.responseBody,"GB2312")
            isGet_= True
            set http=nothing
            if err.number<>0 then err.Clear
    else 
            response.Write("<script>alert(""请先设置src属性!"")</script>")
    end if
    end sub
    
    '删除偷到的内容中里面的换行、回车符以便进一步加工/方法
    public sub noReturn() 
    if isGet_= false then call steal()
    value_=replace(replace(value_ , vbCr,""),vbLf,"")
    end sub
    
    '对偷到的内容中的个别字符串用新值更换/方法
    public sub change(oldStr,str) '参数分别是旧字符串,新字符串
    if isGet_= false then call steal()
    value_=replace(value_ , oldStr,str)
    end sub
    
    '按指定首尾字符串对偷取的内容进行裁减(不包括首尾字符串)/方法
    public sub cut(head,bot) '参数分别是首字符串,尾字符串
    if isGet_= false then call steal()
                    if instr(value_ , head)>0 and instr(value_ , bot)>0 then
                            value_=mid(value_ ,instr(value_ ,head)+len(head),instr(value_ ,bot)-instr(value_ ,head)-len(head))
                    else
                            value_= "<p align=""center"">函数cut指定裁减内容不存在,请重新定义"
                    end if
    end sub
    
    '按指定首尾字符串对偷取的内容进行裁减(包括首尾字符串)/方法
    public sub cutX(head,bot) '参数分别是首字符串,尾字符串
    if isGet_= false then call steal()
                    if instr(value_,head)>0 and instr(value_,bot)>0 then
                            value_=mid(value_ ,instr(value_ ,head),instr(value_ ,bot)-instr(value_ ,head)+len(bot))
                    else
                            value_= "<p align=""center"">函数cutX指定裁减的内容不存在"
                    end if
    end sub
    
    '按指定首尾字符串位置偏移指针对偷取的内容进行裁减/方法
    public sub cutBy(head,headCusor,bot,botCusor) 
    '参数分别是首字符串,首偏移值,尾字符串,尾偏移值,左偏移用负值,偏移指针单位为字符数
    if isGet_= false then call steal()
                    if instr(value_,head)>0 and instr(value_,bot)>0 then
                            value_=mid(value_ ,instr(value_ ,head)+len(head)+headCusor,instr(value_ ,bot)-1+botCusor-instr(value_ ,head)-len(head)-headcusor)
                    else
                            value_= "<p align=""center"">函数cutBy指定裁减内容不存在"
                    end if
    end sub
    
    '按指定首尾字符串对偷取的内容用新值进行替换(不包括首尾字符串)/方法
    public sub filt(head,bot,str) '参数分别是首字符串,尾字符串,新值,新值位空则为过滤
    if isGet_= false then call steal()
                    if instr(value_,head)>0 and instr(value_,bot)>0 then
                            value_=replace(value_,mid(value_ ,instr(value_ ,head)+len(head) , instr(value_ ,bot)-instr(value_ ,head)-len(head)),str)
                    else
                            value_= "<p align=""center"">函数filt指定替换的内容不存在"
                    end if
    end sub
    
    '按指定首尾字符串对偷取的内容用新值进行替换(包括首尾字符串)/方法
    public sub filtX(head,bot,str) '参数分别是首字符串,尾字符串,新值,新值为空则为过滤
    if isGet_= false then call steal()
                    if instr(value_,head)>0 and instr(value_,bot)>0 then
                          value_=replace(value_,mid(value_ ,instr(value_ ,head),instr(value_ ,bot)-instr(value_ ,head)+len(bot)),str)
                    else
                            value_= "<p align=""center"">函数filtX指定替换的内容不存在"
                    end if
    end sub
    
    '按指定首尾字符串位置偏移指针对偷取的内容新值进行替换/方法
    public sub filtBy(head,headCusor,bot,botCusor,str) 
    '参数分别是首字符串,首偏移值,尾字符串,尾偏移值,新值,左偏移用负值,偏移指针单位为字符数,新值为空则为过滤
    if isGet_= false then call steal()
                    if instr(value_,head)>0 and instr(value_,bot)>0 then
                            value_=replace(value_ ,mid(value_ ,instr(value_ ,head)+len(head)+headCusor,instr(value_ ,bot)-1+botCusor-instr(value_ ,head)-len(head)-headcusor),str)
                    else
                            value_= "<p align=""center"">函数filtBy指定替换的内容不存在"
                    end if
    end sub
    
    '对符合条件的内容进行分块采集并组合,最终内容为以<!--lkstar-->隔断的大文本/方法
    '通过属性value得到此内容后你可以用split(value,"<!--lkstar-->")得到你需要的数组
    public sub rebuild(str) '参数是你目标页面反复出现的特征字符
    if isGet_= false then call steal()
    value_= replace(value_,str,vbcrlf&"<!--lkstar-->"&vbcrlf)
    end sub
    
    '类排错模式——在类释放之前应用此方法可以随时查看你截获的内容HTML代码和页面显示效果/方法
    public sub debug()
    dim tempstr
    tempstr="<SCRIPT>function runEx(){var winEx2 = window.open("""", ""winEx2"", ""width=500,height=300,status=yes,menubar=no,scrollbars=yes,resizable=yes""); winEx2.document.open(""text/html"", ""replace""); winEx2.document.write(unescape(event.srcElement.parentElement.children[0].value)); winEx2.document.close(); }function saveFile(){var win=window.open('','','top=10000,left=10000');win.document.write(document.all.asdf.innerText);win.document.execCommand('SaveAs','','javascript.htm');win.close();}</SCRIPT><center><TEXTAREA id=asdf name=textfield rows=32  wrap=VIRTUAL cols=""120"">"&value_&"</TEXTAREA><BR><BR><INPUT name=Button onclick=runEx() type=button value=""查看效果"">  <INPUT name=Button onclick=asdf.select() type=button value=""全选"">  <INPUT name=Button onclick=""asdf.value=''"" type=button value=""清空"">  <INPUT onclick=saveFile(); type=button value=""保存代码""></center>"
    response.Write(tempstr)
    end sub
    end class
    %>
     
  2. 一半

    一半 New Member

    注册:
    2005-10-11
    帖子:
    449
    赞:
    0
    这是干什么用的
     
  3. 小叶

    小叶 New Member

    注册:
    2005-09-04
    帖子:
    17,941
    赞:
    33
    做小偷用的,
    不过对我来说没什么用,还不如自己写。
     
  4. leoben

    leoben New Member

    注册:
    2005-09-28
    帖子:
    32
    赞:
    0

    :mad:
     
  5. 总代

    总代 New Member

    注册:
    2005-11-10
    帖子:
    4,145
    赞:
    89
    :rolleyes: