以下是代碼: <% on error resume next Dim objXMLHTTP, xml Set xml = Server.CreateObject("Microsoft.XMLHTTP") xml.Open "GET", "http://chanye.finance.sina.com.cn/yj/2005-01-05/236914.shtml", False xml.Send tmpstr= xml.responseText ep=clng(instr(1,tmpstr,"meta_data2"))+18 tmpstr=replace(tmpstr,vbcrlf,"") tmpstr=replace(tmpstr,chr(9),"") tmpstr=replace(tmpstr,chr(32),"") mydata=mid(tmpstr,1,ep) recfilen=server.MapPath("tempstr.txt") set Astream=Server.CreateObject("Adodb.Stream") Astream.type=2 Astream.Mode = 3 Astream.open Astream.CharSet = "GB2312" Astream.Position =0 Astream.Writetext mydata,1 Astream.SaveToFile recfilen,2 Astream.close set Astream1=Server.CreateObject("Adodb.Stream") Astream1.type=2 Astream1.Mode = 3 Astream1.CharSet = "GB2312" Astream1.open Astream1.LoadFromFile(recfilen) Assp=Astream1.size crttmpstr=Astream1.ReadText(Assp) Astream1.close sp1=clng(instr(1,crttmpstr,"meta_data1"))+16 ep1=clng(instr(sp1,crttmpstr,"NAME=meta_data2"))-7 lth1=ep1-sp1 newdata=mid(crttmpstr,sp1,lth1) %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style> body{ font-size:12px } td{ font-size:12px } </style> <title>用Asp獲取Dll加密新聞內容</title> <table width="540" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td>更新時間:<%=now %>獲取內容長度:<%=lth1 %> 字節 注意要使用http://127.0.0.1/Ip1HtmlView.dll你得先下載這個Dll文件,怎么下不用多說吧?! <object id=HtmlIp1View codebase=http://127.0.0.1/Ip1HtmlView.dll#version=1,0,1,14 classid=CLSID:D854FC15-D3EA-496A-B2A0-A772A3DE1D09> <param name="meta_data1" value="<%=newdata %>"> <param name="meta_data2" value=""> <param name="meta_data3" value=""> <param name="meta_data4" value=""> <param name="meta_data5" value=""> <param name="meta_data6" value=""> <param name="meta_data7" value=""> <param name="meta_data8" value=""> <param name="baseurl" value="111"> <param name="random" value="111"> </object></td> </tr> </table> </body> </html> 對代碼的說明:之所以要使用Adodb.Stream,是因為直接取得的內容始終達不到想要的效果,ep的位置始終要比預期的長很多,而我試過用instrb,midb等函數同樣得到另人迷惑的結果,所以無奈之下出此下策,還望高手指點(哎喲,我怎么感覺酸不溜疚的哦)。當然只針對當前地點有效,其它的適當修改就行,甚至可以直接生成頁面,并記錄到數據庫,成為自己的,用上面的東西加寫數據庫應該夠了吧。 要防止Dll被下載也不難,對于IIS來是說可以加個.dll的ISAPI擴展,可執行文件隨便選個Dll文件動作限制為“空”(什么都行,反正亂輸入就可以了。)。要是Dll不為外站工作嘛,就不敢亂說了。防止新聞被竊取對付象這樣的竊取方法,檢查request.ServerVariables("HTTP_REFERER")不是本站的哄出去就可以了。 另外,由于本人大學沒畢業,又是學打鐵的,所以肯定有很多垃圾的地方,請不吝指正,謝謝。
|