佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > 小偷&小偷入庫&采集入庫

小偷&小偷入庫&采集入庫

熱門標(biāo)簽:Mysql連接數(shù)設(shè)置 銀行業(yè)務(wù) 阿里云 電子圍欄 團(tuán)購網(wǎng)站 服務(wù)器配置 科大訊飛語音識(shí)別系統(tǒng) Linux服務(wù)器
XMLHTTP應(yīng)用參考 
一、使用步驟: 
1、創(chuàng)建XMLHTTP對(duì)象 //需MSXML4.0支持 
2、打開與服務(wù)端的連接,同時(shí)定義指令發(fā)送方式,服務(wù)網(wǎng)頁(URL)和請(qǐng)求權(quán)限等。客戶端通過Open命令打開與服務(wù)端的服務(wù)網(wǎng)頁的連接。與普通HTTP指令傳送一樣,可以用"GET"方法或"POST"方法指向服務(wù)端的服務(wù)網(wǎng)頁。 
3、發(fā)送指令。 
4、等待并接收服務(wù)端返回的處理結(jié)果。 
5、釋放XMLHTTP對(duì)象 

二、XMLHTTP方法: 
1、XMLHTTP對(duì)象 
備注:客戶機(jī)可以使用XMLHTTP對(duì)象發(fā)送任意的HTTP請(qǐng)求,接受HTTP應(yīng)答,還可以對(duì)應(yīng)答的XML文檔進(jìn)行解析。 

Open方法:初始化一個(gè)Msxml2.XMLHTTP請(qǐng)求,指定HTTP請(qǐng)求方式、URL以及鑒定信息。 
Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword ) 
bstrMethod: 數(shù)據(jù)傳送方式,即GET或POST。 
bstrUrl:   服務(wù)網(wǎng)頁的URL。 
varAsync:   是否同步執(zhí)行。缺省為True,即同步執(zhí)行,但只能在DOM中實(shí)施同步執(zhí)行。用中一般將其置為False,即異步執(zhí)行。 
bstrUser:   用戶名,可省略。 
bstrPassword:用戶口令,可省略。 

Send方法:發(fā)送HTTP請(qǐng)求到服務(wù)器,返回應(yīng)答。 
語法: 
oXMLHttpRequest.send(varBody) 
說明:此方法是否同步取決于Open方法的varAsync參數(shù)。如果設(shè)為True則為同步,調(diào)用立刻返回,如果設(shè)為False調(diào)用直到整個(gè)應(yīng)答被接收了才返回。 

setRequestHeader( bstrHeader, bstrvalue ) 
bstrHeader:HTTP 頭(header) 
bstrvalue: HTTP 頭(header)的值 

如果Open方法定義為POST,可以定義表單方式上傳: 
xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded") 

三、XMLHTTP屬性: 
onreadystatechange:在同步執(zhí)行方式下獲得返回結(jié)果的事件句柄。只能在DOM中調(diào)用。 
responseBody:   結(jié)果返回為無符號(hào)整數(shù)數(shù)組。 
responseStream:   結(jié)果返回為IStream流。 
responseText :   結(jié)果返回為字符串。 
responseXML:   結(jié)果返回為XML格式數(shù)據(jù)。 

四、示例: 
 script language="javascript" > 
function getDatal(url){ 
  var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.4.0";//創(chuàng)建XMLHTTPRequest對(duì)象,需MSXML4.0支持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"] 
  xmlhttp.open("GET",url,false,"","";   //使用HTTP GET初始化HTTP請(qǐng)求 
  xmlhttp.send("";             //發(fā)送HTTP請(qǐng)求并獲取HTTP響應(yīng) 
  return xmlhttp.responseXML;       //獲取XML文檔 

 /script > 


  現(xiàn)在網(wǎng)上流行的小偷程序比較多,有新聞?lì)愋⊥?,音樂小偷,下載小偷,那么它們是如何做的呢,下面我來做個(gè)簡(jiǎn)單介紹,希望對(duì)各位站長有所幫助。 
(一)原理 
小偷程序?qū)嶋H上是通過了XML中的XMLHTTP組件調(diào)用其它網(wǎng)站上的網(wǎng)頁。比如新聞小偷程序,很多都是調(diào)用了sina的新聞網(wǎng)頁,并且對(duì)其中的html進(jìn)行了一些替換,同時(shí)對(duì)廣告也進(jìn)行了過濾。用小偷程序的優(yōu)點(diǎn)有:無須維護(hù)網(wǎng)站,因?yàn)樾⊥党绦蛑械臄?shù)據(jù)來自其他網(wǎng)站,它將隨著該網(wǎng)站的更新而更新;可以節(jié)省服務(wù)器資源,一般小偷程序就幾個(gè)文件,所有網(wǎng)頁內(nèi)容都是來自其他網(wǎng)站。缺點(diǎn)有:不穩(wěn)定,如果目標(biāo)網(wǎng)站出錯(cuò),程序也會(huì)出錯(cuò),而且,如果目標(biāo)網(wǎng)站進(jìn)行升級(jí)維護(hù),那么小偷程序也要進(jìn)行相應(yīng)修改;速度,因?yàn)槭沁h(yuǎn)程調(diào)用,速度和在本地服務(wù)器上讀取數(shù)據(jù)比起來,肯定要慢一些。 
(二)事例 

下面就XMLHTTP在ASP中的應(yīng)用做個(gè)簡(jiǎn)單說明 


代碼: % 
'常用函數(shù) 

'1、輸入url目標(biāo)網(wǎng)頁地址,返回值getHTTPPage是目標(biāo)網(wǎng)頁的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、轉(zhuǎn)換亂瑪,直接用xmlhttp調(diào)用有中文字符的網(wǎng)頁得到的將是亂瑪,可以通過adodb.stream組件進(jìn)行轉(zhuǎn)換 
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 

'下面試著調(diào)用http://wmjie.51.net/swords的html內(nèi)容 
Dim Url,Html 
Url="http://wmjie.51.net/swords/" 
Html = getHTTPPage(Url) 
Response.write Html 
%> 

------------------------------------------------------ 
代碼: 
'代碼]用XMLHTTP讀取遠(yuǎn)程文件 


Response.Buffer = True 
Dim objXMLHTTP, xml 
Set xml = Server.CreateObject("Microsoft.XMLHTTP" 

xml.Open "GET", "http://wmjie.51.net/swords/diary.rar", False 

xml.Send 

' Add a header to give it a file name: 
Response.AddHeader "Content-Disposition", _ 
              "attachment;filename=mitchell-pres.zip" 

' Specify the content type to tell the browser what to do: 
Response.ContentType = "application/zip" 

' Binarywrite the bytes to the browser 
Response.BinaryWrite xml.responseBody 

Set xml = Nothing 
%> 



------------------------------------- 
如何寫ASP入庫小偷程序 
入庫小偷的原理也很簡(jiǎn)單:就是用XMLHTTP遠(yuǎn)程讀取網(wǎng)頁的內(nèi)容,然后根據(jù)需要,對(duì)讀到的內(nèi)容進(jìn)行加工(過濾,替換,分類),最后得到自己需要的數(shù)據(jù),加入到數(shù)據(jù)庫中。 
首先:我們先用XMLHTTP讀取遠(yuǎn)程網(wǎng)頁(我的另一片文章中有介紹)。 
其次:對(duì)內(nèi)容進(jìn)行過濾,這個(gè)是比較關(guān)鍵的步驟,比如說,我要從遠(yuǎn)程網(wǎng)頁上提取出所有url連接,我應(yīng)該怎么做呢? 
代碼: 
‘這里用的是正則式 
Set objRegExp = New Regexp   '建立對(duì)象 
objRegExp.IgnoreCase = True   '大小寫忽略 
objRegExp.Global = True       '全局為真 
objRegExp.Pattern = "http://.+?"   '匹配字段 
set mm=objRegExp.Execute(str)   '執(zhí)行查找,str為輸入?yún)?shù) 
For Each Match in mm     '進(jìn)入循環(huán) 
    Response.write(Match.Value)   '輸出url地址 
next 


然后,我們需要根據(jù)需要做一些替換功能,把不必要的數(shù)據(jù)替換掉,這個(gè)比較簡(jiǎn)單,用Replace函數(shù)即可。 
最后,進(jìn)行數(shù)據(jù)庫操作 
------------------------------- 
一個(gè)例子 
代碼: 

On Error Resume Next 
Server.ScriptTimeOut=9999999 
Function getHTTPPage(Path) 
    t = GetBody(Path) 
    getHTTPPage=BytesToBstr(t,"GB2312" 
End function 

'首先,進(jìn)行小偷程序的一些初始化設(shè)置,以上代碼的作用分別是忽略掉所有非致命性錯(cuò)誤,把小偷程序的運(yùn)行超時(shí)時(shí)間設(shè)置得很長(這樣不會(huì)出現(xiàn)運(yùn)行超時(shí)的錯(cuò)誤),轉(zhuǎn)換原來默認(rèn)的UTF-8編碼轉(zhuǎn)換成GB2312編碼,否則直接用XMLHTTP組件調(diào)用有中文字符的網(wǎng)頁得到的將是亂碼。 

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 

'然后調(diào)用XMLHTTP組件創(chuàng)建一個(gè)對(duì)象并進(jìn)行初始化設(shè)置。 

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 

'處理抓取回來的數(shù)據(jù)需要調(diào)用adodb.stream組件并進(jìn)行初始化設(shè)置。%> 

'以下即為頁面顯示部分 


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"" 
'這里設(shè)置需要抓取的頁面地址,當(dāng)然你也可以直接指定某個(gè)地址而不使用變量 

wstr=getHTTPPage(url) 
'獲取指定頁面的全部數(shù)據(jù)       

start=Newstring(wstr," html>") 
'這里設(shè)置需要處理的數(shù)據(jù)的頭部,這個(gè)變量應(yīng)視不同情況而設(shè)置,具體內(nèi)容可以通過查看需要抓取的頁面的源代碼來確定。因?yàn)樵谶@個(gè)程序里我們需要抓取整個(gè)頁面,所以設(shè)置為頁面全部抓取。注意,設(shè)置的內(nèi)容必須是頁面內(nèi)容唯一的,不可以重復(fù)。 

over=Newstring(wstr," /HTML>") 
'和start相對(duì)應(yīng)的就是需要處理的數(shù)據(jù)的尾部,同樣的,設(shè)置的內(nèi)容必須是頁面中唯一的。 

body=mid(wstr,start,over-start) 
'設(shè)置顯示頁面的范圍 

'下面就是動(dòng)用乾坤挪移***的時(shí)候了,通過replace可以用一些字符替換掉數(shù)據(jù)中指定的字符。 

body = replace(body,"skin1","天氣預(yù)報(bào) - 斯克網(wǎng)絡(luò)") 
body = replace(body,"http://appnews.qq.com/cgi-bin/news_qq_search?city","tianqi.asp?id") 

'本程序中已經(jīng)完成了替換的工作,如果有其他需要的話可以繼續(xù)進(jìn)行類似的替換操作。 

response.write body 
引用: 遠(yuǎn)程獲取內(nèi)容,并將內(nèi)容存在本地電腦上,包括任何文件 


'----------遠(yuǎn)程獲取內(nèi)容,并將內(nèi)容存在本地電腦上,包括任何文件!---------- 
'On Error Resume Next 
'Set the content type to the specific type that you are sending. 
'Response.ContentType = "IMAGE/JPEG" 
'-------------------------------定義輸出格式----------------------------- 

Path=request.querystring("p") 
sPath = Path 
if left(lcase(path),7) > "http://"; then 
'-------------如果前面沒有http就是本地文件,交給LocalFile處理------------ 
LocalFile(path) 
else 
'--------------------否則為遠(yuǎn)程文件,交給RemoteFile處理------------------ 
RemoteFile(Path) 
end if 
'Response.Write err.Description 

sub LocalFile(Path) 
'-------------------如果為本地文件則簡(jiǎn)單的跳轉(zhuǎn)到該頁面------------------- 
Response.Redirect Path 
End Sub 

Sub RemoteFile(sPath) 
'-------------------------處理遠(yuǎn)程文件函數(shù)------------------------------ 
FileName = GetFileName(sPath) 
'-------------GetFileName為把地址轉(zhuǎn)換為合格的文件名過程------------- 
FileName = Server.MapPath("/UploadFile/Cache/"  FileName) 
Set objFso = Server.CreateObject("Scripting.FileSystemObject") 
'Response.Write fileName 
if objFso.FileExists(FileName) Then 
'--------------檢查文件是否是已經(jīng)訪問過,如是,則簡(jiǎn)單跳轉(zhuǎn)------------ 
Response.Redirect "/uploadfile/cache/"  GetFileName(path) 
Else 
'----------------否則的話就先用GetBody函數(shù)讀取---------------------- 
'Response.Write Path 
t = GetBody(Path) 
'-----------------用二進(jìn)制方法寫到瀏覽器上-------------------------- 
Response.BinaryWrite t 
Response.Flush 
'-----------------輸出緩沖------------------------------------------ 
SaveFile t,GetFileName(path) 
'------------------將文件內(nèi)容緩存到本地路徑,以待下次訪問----------- 
End if 
Set objFso = Nothing 
End Sub 

Function GetBody(url) 
'-----------------------本函數(shù)為遠(yuǎn)程獲取內(nèi)容的函數(shù)--------------------- 
'on error resume next 
'Response.Write url 
Set Retrieval = CreateObject("Microsoft.XMLHTTP") 
'----------------------建立XMLHTTP對(duì)象----------------------------- 
With Retrieval 
.Open "Get", url, False, "", "" 
'------------------用Get,異步的方法發(fā)送----------------------- 
.Send 
'GetBody = .ResponseText 
GetBody = .ResponseBody 
'------------------函數(shù)返回獲取的內(nèi)容-------------------------- 
End With 
Set Retrieval = Nothing 
'response.Write err.Description 
End Function 

Function GetFileName(str) 
'-------------------------本函數(shù)為合格化的文件名函數(shù)------------------- 
str = Replace(lcase(str),"http://";,"") 
str = Replace(lcase(str),"http://","/") 
str = Replace(str,"/","") 
str = replace(str,vbcrlf,"") 
GetFileName = str 
End Function 

sub SaveFile(str,fName) 
'-------------------------本函數(shù)為將流內(nèi)容存盤的函數(shù)------------------- 
'on error resume next 
Set objStream = Server.CreateObject("ADODB.Stream") 
'--------------建立ADODB.Stream對(duì)象,必須要ADO 2.5以上版本--------- 
objStream.Type = adTypeBinary 
'-------------以二進(jìn)制模式打開------------------------------------- 
objStream.Open 
objstream.write str 
'--------------------將字符串內(nèi)容寫入緩沖-------------------------- 
'response.Write fname 
objstream.SaveToFile "c:\inetpub\myweb\uploadfile\cache\"  fName,adSaveCreateOverWrite 
'--------------------將緩沖的內(nèi)容寫入文件-------------------------- 
'response.BinaryWrite objstream.Read 
objstream.Close() 
set objstream = nothing 
'-----------------------關(guān)閉對(duì)象,釋放資源------------------------- 
'response.Write err.Description 
End sub 
%> 

標(biāo)簽:衡水 江蘇 衢州 廣元 大理 棗莊 萍鄉(xiāng) 蚌埠

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《小偷&小偷入庫&采集入庫》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    乌拉特前旗| 武功县| 新竹市| 包头市| 宁晋县| 九台市| 石首市| 辉南县| 根河市| 祁东县| 即墨市| 蓬安县| 林西县| 西畴县| 舒兰市| 凤台县| 忻城县| 乌鲁木齐市| 桐城市| 色达县| 布拖县| 延长县| 定襄县| 奉化市| 云霄县| 霞浦县| 商城县| 汝阳县| 广元市| 子长县| 辰溪县| 东山县| 抚宁县| 秦安县| 横山县| 百色市| 淅川县| 海安县| 湄潭县| 紫云| 辛集市|