主頁 > 知識庫 > 小偷&小偷入庫&采集入庫

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

熱門標簽:電話機器人案例 vue 地圖標注拖拽 鎮(zhèn)江云外呼系統(tǒng)怎么樣 保定電銷機器人軟件 土地證宗地圖標注符號 自動外呼系統(tǒng)怎么防止封卡 電話機器人銷售公司嗎 成都銷售外呼系統(tǒng)公司 客服外呼系統(tǒng)呼叫中心
XMLHTTP應(yīng)用參考 
一、使用步驟: 
1、創(chuàng)建XMLHTTP對象 //需MSXML4.0支持 
2、打開與服務(wù)端的連接,同時定義指令發(fā)送方式,服務(wù)網(wǎng)頁(URL)和請求權(quán)限等??蛻舳送ㄟ^Open命令打開與服務(wù)端的服務(wù)網(wǎng)頁的連接。與普通HTTP指令傳送一樣,可以用"GET"方法或"POST"方法指向服務(wù)端的服務(wù)網(wǎng)頁。 
3、發(fā)送指令。 
4、等待并接收服務(wù)端返回的處理結(jié)果。 
5、釋放XMLHTTP對象 

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

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

Send方法:發(fā)送HTTP請求到服務(wù)器,返回應(yīng)答。 
語法: 
oXMLHttpRequest.send(varBody) 
說明:此方法是否同步取決于Open方法的varAsync參數(shù)。如果設(shè)為True則為同步,調(diào)用立刻返回,如果設(shè)為False調(diào)用直到整個應(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é)果返回為無符號整數(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對象,需MSXML4.0支持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"] 
  xmlhttp.open("GET",url,false,"","";   //使用HTTP GET初始化HTTP請求 
  xmlhttp.send("";             //發(fā)送HTTP請求并獲取HTTP響應(yīng) 
  return xmlhttp.responseXML;       //獲取XML文檔 

 /script > 


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

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


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

'1、輸入url目標網(wǎng)頁地址,返回值getHTTPPage是目標網(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組件進行轉(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讀取遠程文件 


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


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

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

'首先,進行小偷程序的一些初始化設(shè)置,以上代碼的作用分別是忽略掉所有非致命性錯誤,把小偷程序的運行超時時間設(shè)置得很長(這樣不會出現(xiàn)運行超時的錯誤),轉(zhuǎ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)建一個對象并進行初始化設(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組件并進行初始化設(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è)置需要抓取的頁面地址,當然你也可以直接指定某個地址而不使用變量 

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

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

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

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

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

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

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

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


'----------遠程獲取內(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 
'--------------------否則為遠程文件,交給RemoteFile處理------------------ 
RemoteFile(Path) 
end if 
'Response.Write err.Description 

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

Sub RemoteFile(sPath) 
'-------------------------處理遠程文件函數(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)訪問過,如是,則簡單跳轉(zhuǎn)------------ 
Response.Redirect "/uploadfile/cache/"  GetFileName(path) 
Else 
'----------------否則的話就先用GetBody函數(shù)讀取---------------------- 
'Response.Write Path 
t = GetBody(Path) 
'-----------------用二進制方法寫到瀏覽器上-------------------------- 
Response.BinaryWrite t 
Response.Flush 
'-----------------輸出緩沖------------------------------------------ 
SaveFile t,GetFileName(path) 
'------------------將文件內(nèi)容緩存到本地路徑,以待下次訪問----------- 
End if 
Set objFso = Nothing 
End Sub 

Function GetBody(url) 
'-----------------------本函數(shù)為遠程獲取內(nèi)容的函數(shù)--------------------- 
'on error resume next 
'Response.Write url 
Set Retrieval = CreateObject("Microsoft.XMLHTTP") 
'----------------------建立XMLHTTP對象----------------------------- 
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對象,必須要ADO 2.5以上版本--------- 
objStream.Type = adTypeBinary 
'-------------以二進制模式打開------------------------------------- 
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)閉對象,釋放資源------------------------- 
'response.Write err.Description 
End sub 
%> 

標簽:臺灣 天津 公主嶺 重慶 懷化 內(nèi)江 麗江 成都

巨人網(wǎng)絡(luò)通訊聲明:本文標題《小偷&小偷入庫&采集入庫》,本文關(guān)鍵詞  小偷,amp,入庫,采集,小偷,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《小偷&小偷入庫&采集入庫》相關(guān)的同類信息!
  • 本頁收集關(guān)于小偷&小偷入庫&采集入庫的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章