程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 【先鋒海盜類】Ver2005 最終版

【先鋒海盜類】Ver2005 最終版

編輯:關於ASP編程

復制代碼 代碼如下:
<% 
'轉發時請保留此聲明信息,這段聲明不並會影響你的速度!
'**************************   【先鋒海盜類】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
%>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved