做一個(gè)好的教程就是要讓人看懂,,我早先買(mǎi)教程書(shū)看到第一章千篇一律都是計(jì)算機(jī)發(fā)展史再加歷史回顧和前景展望,煩死,。
所以本教程就不講一些沒(méi)用的東西了,,直接轉(zhuǎn)入正題
ASP采集其它就是利用微軟自帶的XMLHTTP組件取得遠(yuǎn)程頁(yè)面的源代碼,,再經(jīng)過(guò)程序的過(guò)濾替換處理轉(zhuǎn)換成我們想要的數(shù)據(jù),。我們也不管用什么,反正我教你的就是用一段代碼取得目標(biāo)代碼, 再把目標(biāo)代碼加工一下,。然后直接顯示啊還是寫(xiě)入數(shù)據(jù)庫(kù),。就這么簡(jiǎn)單!
引用組件CreateObject("Microsoft.XMLHTTP") --->取得目標(biāo)代碼(get) ---> 數(shù)據(jù)處理(截取,,過(guò)濾,,替換) ---> 直接顯示(小偷)或 寫(xiě)入數(shù)據(jù)庫(kù)(采集)
說(shuō)了這么多是要開(kāi)始實(shí)戰(zhàn)了.
二話不說(shuō),先寫(xiě)個(gè)剛剛講到的引用組件和取得代碼的函數(shù)
' 獲取遠(yuǎn)程HTML
Function GetURL(url)
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "GET", url, False
.Send
GetURL = .responsebody
if len(.responsebody)<100 then
response.write "獲取遠(yuǎn)程文件 <a href="&url&" target=_blank>"&url&"</a> 失敗,。"
response.end
end if
End With
Set Retrieval = Nothing
End Function
上面這段函數(shù)的URL值就是我們的目標(biāo)網(wǎng)頁(yè),,也就是要偷的頁(yè)面了。
當(dāng)然我們得到的代碼是以二進(jìn)制返回給我們的,,那我們得把他轉(zhuǎn)換成我們要的字符,,怎么辦,?
怕什么,?我自己不會(huì)寫(xiě)難道還不會(huì)上網(wǎng)找啊。找到了,,怎么實(shí)現(xiàn)的我們當(dāng)然不管它了,,只要能用就行了,,函數(shù)代碼如下:
' 二進(jìn)制轉(zhuǎn)字符串
function bytes2bstr(vin)
strreturn = ""
for i = 1 to lenb(vin)
thischarcode = ascb(midb(vin,i,1))
if thischarcode < &h80 then
strreturn = strreturn & chr(thischarcode)
else
nextcharcode = ascb(midb(vin,i+1,1))
strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode))
i = i + 1
end if
next
bytes2bstr = strreturn
end function
OK!
有了這兩個(gè)函數(shù)基本上可以實(shí)現(xiàn)簡(jiǎn)單的小偷了,。
我今天就找天空的軟件資訊開(kāi)刀,地址是: http://www./article/index_article.html
開(kāi)工:
1,建立一個(gè)ASP文件,我建的是index.asp
<%
%>
先寫(xiě)好啊,,要養(yǎng)成這樣的習(xí)慣哦,。
定義一下地址和調(diào)用函數(shù)
dim url,html
url="http://www./article/index_article.html"
Html=GetURL(url) '把地址url傳遞到GetURL這個(gè)函數(shù)
Html=Bytes2BStr(Html) '二進(jìn)制轉(zhuǎn)換成字符一下
再把剛剛兩個(gè)函數(shù)寫(xiě)進(jìn)去
最后看一下是否偷到了,我們r(jià)esponse一下
Response.write html
整個(gè)文件內(nèi)容就是:
<%
On Error Resume Next
Server.ScriptTimeOut=9999999
dim url,html
url="http://www./article/index_article.html"
Html=GetURL(url) '把地址url傳遞到GetURL這個(gè)函數(shù)
Html=Bytes2BStr(Html) '二進(jìn)制轉(zhuǎn)換成字符一下
' 獲取遠(yuǎn)程HTML
Function GetURL(url)
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "GET", url, False
.Send
GetURL = .responsebody
if len(.responsebody)<100 then
response.write "獲取遠(yuǎn)程文件 <a href="&url&" target=_blank>"&url&"</a> 失敗。"
response.end
end if
End With
Set Retrieval = Nothing
End Function
' 二進(jìn)制轉(zhuǎn)字符串
function bytes2bstr(vin)
strreturn = ""
for i = 1 to lenb(vin)
thischarcode = ascb(midb(vin,i,1))
if thischarcode < &h80 then
strreturn = strreturn & chr(thischarcode)
else
nextcharcode = ascb(midb(vin,i+1,1))
strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode))
i = i + 1
end if
next
bytes2bstr = strreturn
end function
Response.write html
%>
上次說(shuō)到哪了?好像只說(shuō)到如何得到目標(biāo)地址并得到代碼和顯示出來(lái),。這樣得到的當(dāng)然是不能用的了。我們現(xiàn)在
就來(lái)學(xué)一下把得到的數(shù)據(jù)做一個(gè)最基本的數(shù)據(jù)處理吧.
OK!開(kāi)始,!
那天剛好在站長(zhǎng)站里看到有個(gè)人想要一個(gè)殺毒軟件的小偷頁(yè)面,,說(shuō)是要丁香魚(yú)的瑞星更新小偷(怎么不來(lái)找我呢,有時(shí)間給你寫(xiě)一個(gè)嘛
不過(guò)你只要看了我的教程,,以后不要說(shuō)丁香魚(yú)了,,其它的魚(yú)一樣偷),,那我們就把丁香魚(yú)拿來(lái)開(kāi)刀。
丁香魚(yú)網(wǎng)址:http://www./rising.htm
記不記得我上次的代碼啊,,里面有幾個(gè)函數(shù),,現(xiàn)在我把它們都放入一個(gè)文件function.asp,目的是為了以后方便改啊,,添加功能什么的
我也不懂啦,,個(gè)人認(rèn)為就是好看,,不會(huì)亂,。
--------------------------------
function.asp:
<%
' 獲取遠(yuǎn)程HTML
Function GetURL(url)
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "GET", url, False
.Send
GetURL = .responsebody
if len(.responsebody)<100 then
response.write "獲取遠(yuǎn)程文件 <a href="&url&" target=_blank>"&url&"</a> 失敗,。"
response.end
end if
End With
Set Retrieval = Nothing
End Function
' 二進(jìn)制轉(zhuǎn)字符串
function bytes2bstr(vin)
strreturn = ""
for i = 1 to lenb(vin)
thischarcode = ascb(midb(vin,i,1))
if thischarcode < &h80 then
strreturn = strreturn & chr(thischarcode)
else
nextcharcode = ascb(midb(vin,i+1,1))
strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode))
i = i + 1
end if
next
bytes2bstr = strreturn
end function
Function getcontent(HTML,starcode,endcode)
dim StartPos,EndPos,Length
StartPos=Instr(1,HTML,starcode)
EndPos=Instr(StartPos,HTML,endcode)
Length=EndPos-StartPos
getcontent=Mid(HTML,StartPos,Length)
End Function
%>
前面兩個(gè)函數(shù)我就不講了,講一下getcontent,,這個(gè)函數(shù)的作用就是截取我們想要的代碼,,就叫截取吧,。
解釋一下里面用到的VB函數(shù)
Instr:
返回某字符串在另一字符串中第一次出現(xiàn)的位置(vb script沒(méi)學(xué)好的要抓緊補(bǔ)啊同志們) ,。
Mid:
從字符串中返回指定數(shù)目的字符,。
這樣大家就比較好理解了吧,,html是我們得到的網(wǎng)頁(yè)整個(gè)源碼,,starcode是我們要截取的代碼開(kāi)始,,endcode自然就是我們要截取的結(jié)束了
我們先通過(guò)starcode和endcode來(lái)指定我們要截取的位置,,再用mid取出來(lái)。上面講的都是理論的
等下通過(guò)實(shí)際的應(yīng)用我們會(huì)更好理解的,。
---------------
建一個(gè)ASP文件rising.asp作為小偷的主文件,。記不記得上次得到源碼的幾個(gè)代碼,,現(xiàn)在可以用上了,。
rising.asp:
<!-- #include file="function.asp" -->
<%
On Error Resume Next
Server.ScriptTimeOut=9999999
dim url,html,starcode,endcode
url="http://www./rising.htm" '我們要偷的頁(yè)面地址
Html=GetURL(url) '把地址url傳遞到GetURL這個(gè)函數(shù)
Html=Bytes2BStr(HTML) '二進(jìn)制轉(zhuǎn)換成字符一下
starcode="<td><div align=""center""></div></td>" '我們并不是偷網(wǎng)頁(yè)的全部,,因?yàn)榍懊娴臇|西我們不要嘛,,所以從這里開(kāi)始,,代碼不能重復(fù)哦
endcode="<td colspan=""2""><div align=""center"">"'和上面一樣,,我們尾部也不要,這里是結(jié)束的部分,,代碼要唯一,我們要的就是上面和這里的中間部分
content=getcontent(HTML,starcode,endcode) '賦值完畢了我們就調(diào)用一下這個(gè)函數(shù),,等于是參數(shù)傳遞一下
content=replace(content,"images/","http://www./images/")'這里是另外一個(gè)替換操作,,下面給你們講
Response.write content '輸出內(nèi)容
%>
主要說(shuō)一下
replace:
返回字符串,其中指定數(shù)目的某子字符串被替換為另一個(gè)子字符串,。
這個(gè)就是把代碼中我們不想要的換成我們想要的,或直接換成空,,下面是一個(gè)例子
Dim MyString
MyString = Replace("XXpXXPXXp", "p", "Y") '二進(jìn)制比較從字符串左端開(kāi)始。返回 "XXYXXPXXY",。
上面XXpXXPXXp的p就被換成了Y吧,如果換成空:
MyString = Replace("XXpXXPXXp", "p", "") '二進(jìn)制比較從字符串左端開(kāi)始,。返回 "XXXXPXX",。
那上面XXpXXPXXp的p就不見(jiàn)了。簡(jiǎn)單吧,。
我們例子里因?yàn)橛袌D片,,路徑如果不處理一下,圖片就無(wú)法正常顯示,,所以我們把"images/"換成了"http://www./images/"絕對(duì)路徑
還有哦,,他們里面有一個(gè)引用javescript,我們?cè)趓ising.asp的最前面也引用一下,,是關(guān)于版本的
<script language=javascript src="http://www./service/javascript/RsProVer.js"></script>
OK!我看一下效果哦,。
好了,成功了,。第二課也講完了,,你們可以去試試其它頁(yè)面啊,或可以用這幾個(gè)函數(shù)取不同的值來(lái)練練手,。
好了,,等第三課吧
官方 演示(為了配合樣式,我加了頁(yè)頭和頁(yè)尾了)
http://www./rising.asp 【摘自網(wǎng)絡(luò)】