小偷程序大揭秘 前言:小偷程序其實(shí)是懶人的妙法。它可以偷文章,,實(shí)時(shí)新聞資訊,,歌曲,,甚至歌曲數(shù)據(jù)的職能尋找和入庫(kù)等,!功能可謂強(qiáng)大,,但是還有好多朋友到處求小偷程序,,問(wèn)什么,?因?yàn)榫W(wǎng)上沒(méi)有幾篇詳細(xì)介紹小偷程序的文章供大家參考,。其實(shí)做小偷程序并不難,我在這兒把我作小偷程序的經(jīng)驗(yàn)貼出來(lái)大家看看,,可能也有不對(duì)的地方,,請(qǐng)大家多多指出來(lái)。 一,、基本原理及簡(jiǎn)單實(shí)例 原理部分網(wǎng)上太多了,,blue1000也沒(méi)有必要在這里羅嗦了,這里引用一下,嘿嘿 注:此下內(nèi)容為引用(有部分修改):原作者:572019 引用自:動(dòng)易網(wǎng)絡(luò) (一)原理 小偷程序?qū)嶋H上是通過(guò)了XML中的XMLHTTP組件調(diào)用其它網(wǎng)站上的網(wǎng)頁(yè),。比如新聞小偷程序,,很多都是調(diào)用了sina的新聞網(wǎng)頁(yè),并且對(duì)其中的html進(jìn)行了一些替換,,同時(shí)對(duì)廣告也進(jìn)行了過(guò)濾,。用小偷程序的優(yōu)點(diǎn)有:無(wú)須維護(hù)網(wǎng)站,因?yàn)樾⊥党绦蛑械臄?shù)據(jù)來(lái)自其他網(wǎng)站,,它將隨著該網(wǎng)站的更新而更新,;可以節(jié)省服務(wù)器資源,,一般小偷程序就幾個(gè)文件,所有網(wǎng)頁(yè)內(nèi)容都是來(lá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ù)比起來(lái),,肯定要慢一些,。 (二)事例 下面就XMLHTTP在ASP中的應(yīng)用做個(gè)簡(jiǎn)單說(shuō)明 <% ’常用函數(shù) ’1、輸入url目標(biāo)網(wǎng)頁(yè)地址,,返回值getHTTPPage是目標(biāo)網(wǎng)頁(yè)的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)頁(yè)得到的將是亂瑪,,可以通過(guò)adodb.stream組件進(jìn)行轉(zhuǎn)換 Function BytesToBstr(body) 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 = "GB2312" ’轉(zhuǎn)換原來(lái)默認(rèn)的UTF-8編碼轉(zhuǎn)換成GB2312編碼,否則直接用XMLHTTP組件調(diào)用有中文字符的網(wǎng)頁(yè)得到的將是亂碼 BytesToBstr = objstream.ReadText objstream.Close set objstream = nothing End Function ’下面試著調(diào)用http://www./earticle/的html內(nèi)容 Dim Url,Html Url="http://www./earticle/"; Html = getHTTPPage(Url) Response.write Html %> 注:此上內(nèi)容為引用(有部分修改):原作者:572019 引用自:動(dòng)易網(wǎng)絡(luò) 二,、幾個(gè)常用的函數(shù) (一)InStr 函數(shù) 描述 返回某字符(string2)串在另一字符串(string1)中第一次出現(xiàn)的位置,。 語(yǔ)法 InStr(string1, string2) 例如: Dim SearchString, SearchChar SearchString ="http://" ‘ 要在其中搜索的字符串。 SearchChar = "blue1000" ‘ 搜索 "blue1000",。 MyBK = Instr(SearchString, SearchChar) ‘ 返回 8 ‘如果找不到則返回“0”,,例如: SearchChar = "BK" MyBK = Instr(SearchString, SearchChar) ‘ 返回 0 (二)Mid 函數(shù) 描述 從字符串中返回指定數(shù)目的字符。 語(yǔ)法 Mid(string, start, over) 例如: Dim MyBK MyBK = Mid("我們的BK()設(shè)計(jì)", 7, 12) ‘截取字符串"我們的BK()設(shè)計(jì)"第7個(gè)字符以后的12個(gè)字符 ‘此時(shí)MyBK的值就變成了"" (三)Replace 函數(shù)(這個(gè)我就不細(xì)說(shuō)了,,只舉個(gè)例子) Dim SearchString, SearchChar SearchString ="我們的BK設(shè)計(jì)是一個(gè)網(wǎng)站建設(shè)資源網(wǎng)站" ‘ 要在其中搜索的字符串,。 SearchString =Replace(SearchString,"BK設(shè)計(jì)","Blue1000.Com") ‘此時(shí)SearchString的值就變成了"我們的Blue1000.Com是一個(gè)網(wǎng)站建設(shè)資源網(wǎng)站" 上面的內(nèi)容只說(shuō)了如何獲取整個(gè)頁(yè)面的html的代碼和幾個(gè)常用的函數(shù),那么如何獲取指定部分的代碼呢,?如何刪除我不需要的內(nèi)容呢,?如何才能將外站的鏈接改成我的呢?又如何實(shí)現(xiàn)把原來(lái)的翻頁(yè)做成我的呢,? 上一篇blue1000給大家講了些原理和幾個(gè)常用的函數(shù),,這一節(jié)說(shuō)一些技巧類的東西~(對(duì)高手來(lái)說(shuō),這是廢話,,所以高手可以不看,,但也不要罵我哦) (一)如何截取指定區(qū)域的HTML代碼? (對(duì)方網(wǎng)站的HTML代碼在哪兒看?暈:IE瀏覽器>>查看>>源文件,。不要告訴我你不知道IE是什么,!) 例如我只想獲取以下HTML代碼中"<td>"和"</td>"之間的的文字部分: <html> <title>BK()設(shè)計(jì)--網(wǎng)頁(yè)制作資源站點(diǎn)</title> <body> <table> <tr><td></td></tr> <tr><td id="Content">BK()設(shè)計(jì)--網(wǎng)頁(yè)制作資源站點(diǎn)是個(gè)資源多多的站點(diǎn)……</td></tr> </table> </body> </html> <% …… Dim StrBK,start,over,RsBK StrBK=getHTTPPage(網(wǎng)頁(yè)的地址) start=Instr(StrBK,"<td id=""Content"">") ’此處的作用是獲取字符串開(kāi)始地方的定位,。Instr函數(shù)前面一節(jié)說(shuō)過(guò)了哦~ ’這里要有人問(wèn)了:原來(lái)的代碼是<td id="Content">,怎么你這里調(diào)用的是<td id=""Content"">啊?答案:asp中(準(zhǔn)確的說(shuō)是VBscript中是用兩個(gè)雙引號(hào)來(lái)表示一個(gè)雙引號(hào)的,因?yàn)殡p引號(hào)對(duì)于程序來(lái)說(shuō)是個(gè)敏感字符,。) over=Instr(StrBK,"…</td></tr>")’此處的作用是獲取字符串結(jié)束地方的定位,。 ’這里又要有人問(wèn)了:( :程序調(diào)用HTML代碼干嗎前面多出來(lái)3個(gè)點(diǎn)點(diǎn)"…"啊,?答:提示:上面一行也有一個(gè)</td></tr>,,如果這里用</td></tr>來(lái)定位的話,程序會(huì)錯(cuò)誤地把上面一行的</td></tr>當(dāng)成欲獲取字符串的結(jié)束部分了,。 RsBK=mid(StrBK,start,over-start) ’此處的作用是取出StrBK中第start個(gè)字符到第over個(gè)字符之間的字符串,。mid函數(shù)前面一節(jié)我也講過(guò)了;over-start是為了計(jì)算出開(kāi)始位置和結(jié)束位置之間的距離,,也就是字符數(shù),。 response.write(RsBK) ’最后輸出程序獲取的內(nèi)容 %> 不要高興的太早,當(dāng)你運(yùn)行的時(shí)候,,你會(huì)發(fā)現(xiàn)頁(yè)面的html代碼有錯(cuò)誤,,為什么呢?因?yàn)槟惬@取的html代碼是: <td id="Content">BK()設(shè)計(jì)--網(wǎng)頁(yè)制作資源站點(diǎn)是個(gè)資源多多的站點(diǎn)… 看到了吧,?有殘缺的HTML代碼?。≡趺崔k呢,?start=Instr(StrBK,"<td id=""Content"">")這個(gè)語(yǔ)句獲取的是"<td id="Content">"在StrBK中的位置數(shù),現(xiàn)在我們可以在程序語(yǔ)句的后面加上17,那么程序就會(huì)將位置指向<td id="Content">后面的那個(gè)字符. 好的,程序?qū)⒏某蛇@樣: <% …… Dim StrBK,start,over,RsBK StrBK=getHTTPPage(網(wǎng)頁(yè)的地址) start=Instr(StrBK,"<td id=""Content"">") + 17 over=Instr(StrBK,"…</td></tr>") ’這里你也可以減去七(-7)把3個(gè)點(diǎn)去掉 RsBK=mid(StrBK,start,over-start) response.write(RsBK) %> 這樣就OK了,我們就可以將我們想要的東西偷過(guò)來(lái)顯示在我們自己的頁(yè)面了,呵呵~ (二)如何將獲取的字符中的一部分刪掉或者做一些修改? 接著上面的來(lái)講,我們可以將RsBK中的"BK()"換成"BK": RsBK=replace(RsBK,"BK()","BK") 或者直接把"()"刪掉: RsBK=replace(RsBK,"()","") 好了,現(xiàn)在RsBK就變成了:"BK設(shè)計(jì)--網(wǎng)頁(yè)制作資源站點(diǎn)是個(gè)資源多多的站點(diǎn)……"了. 但是事實(shí)中,有些情況可能replace函數(shù)是不適應(yīng)的,比如我們想把某個(gè)字符串里面的所有連接都去掉.連接可能包括很多種類型,replace只能替代其中特定的一個(gè),我們不可能用一個(gè)又一個(gè)對(duì)應(yīng)的replace函數(shù)來(lái)替換吧? 那么現(xiàn)在就用到了程序中的正則表達(dá)式,詳細(xì)請(qǐng)參閱: 正則表達(dá)式簡(jiǎn)介(1): http://www./bbs/disp ... ;ID=1558&page=1 正則表達(dá)式簡(jiǎn)介(2): http://www./bbs/disp ... ;ID=1559&page=1 如果哪位朋友正好想去掉頁(yè)面中所有鏈接的話,請(qǐng)關(guān)注Blue1000.com的下一篇教程:<<如何清除網(wǎng)頁(yè)中的所有鏈接[正則表達(dá)式]>> (三)如何將對(duì)方網(wǎng)站的翻頁(yè)也處理成我們自己的呢? 答案是:利用replace函數(shù)和頁(yè)面參數(shù)的傳遞,。 例如對(duì)方頁(yè)面里含有這樣的翻頁(yè)代碼:"<a href=2.htm>下一頁(yè)</a>",我們可以先利用上面講的內(nèi)容,獲取這個(gè)字符串,,然后用replace函數(shù):RsBK=replace(RsBK,"<a href=","<a href=page.asp?Url=") 然后再page.asp的程序里獲取Url的參數(shù)值,,最后用小偷技術(shù)獲取下一頁(yè)你想要的內(nèi)容就可以了。 (四)如何將獲取的內(nèi)容入庫(kù) 由于篇幅有限,這里簡(jiǎn)單說(shuō)一下. 其實(shí)很簡(jiǎn)單: 將偷來(lái)的內(nèi)容作一下處理,,防止在寫(xiě)入數(shù)據(jù)庫(kù)的時(shí)候出現(xiàn)sql注入錯(cuò)誤,,例如:replace(String,"‘","‘‘") 然后執(zhí)行一個(gè)插入數(shù)據(jù)庫(kù)操作的sql命令就ok了~ 以上只是一些關(guān)于XMLHTTP組件的初級(jí)應(yīng)用,實(shí)際上它還能實(shí)現(xiàn)的功能還有很多,,比如說(shuō)保存遠(yuǎn)程圖片到本地服務(wù)器上,,配合adodb.stream組件可以把獲取來(lái)的數(shù)據(jù)保存進(jìn)數(shù)據(jù)庫(kù)。小偷的作用和使用范圍都很廣,。 |
|
來(lái)自: ender > 《我的圖書(shū)館》