小偷軟體

小偷程式實際上是通過了XML中的XMLHTTP組件調用其它網站上的網頁。比如新聞小偷程式,很多都是調用了sina的新聞網頁,並且對其中的html進行了一些替換,同時對廣告也進行了過濾。

原理

用小偷程式的 優點有:無須維護網站,因為小偷程式中的數據來自其他網站,它將隨著該網站的更新而更新;可以節省伺服器資源,一般小偷程式就幾個檔案,所有網頁內容都是來自其他網站。 缺點有:不穩定,如果目標網站出錯,程式也會出錯,而且,如果目標網站進行升級維護,那么小偷程式也要進行相應修改;速度,因為是遠程調用,速度和在本地伺服器上讀取數據比起來,肯定要慢一些。

實例

實例一

下面就XMLHTTP在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

'2、轉換亂瑪,直接用xmlhttp調用有中文字元的網頁得到的將是亂瑪,可以通過adodb.stream組件進行轉換

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

'下面試著調用http://www-3doing-com/earticle/的html內容

Dim Url,Html

Url="http://www-3doing-com/earticle/"

Html = getHTTPPage(Url)

Response.write Html

%>

實例二

新浪網站上的天氣程式

代碼如下:

<%

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

%>

替換完需要修改的內容後,就可以把修改的內容顯示在頁面上了。至此程式結束

相關詞條

相關搜尋

熱門詞條

聯絡我們