程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 利用ActiveX控件InetCtls.Inet在ASP中實現新聞小偷

利用ActiveX控件InetCtls.Inet在ASP中實現新聞小偷

編輯:關於ASP編程
這幾天維護網站的時候要加很多的新聞或者其它文章,因為經常到一個網站上找文章,所以就想,能不能做個程序,指定一個網址,讓ASP去搜索這個網址上所有的文章,進而把搜索回來的文章進行分析,把文章內容保存到數據庫裡,這樣不就可以省去很多麻煩了嗎?

  後來才知道,這個想法早就有人想過,也有人做過新聞小偷,呵呵,不過據說是php的,我沒見過,呵呵,反正報著一種開發的心態開始進行工作……

  我記得以前收集的有一篇文章介紹的有如何用ASP獲取別人的網頁,拿出來一看,嗨,沒幾句代碼:

URL = http://news.sina.com.cn/
Set objInet = Server.CreateObject("InetCtls.Inet")
objInet.RequestTimeOut = 20
objInet.Url = URL
StrGet = objInet.OpenURL()
Response.Write StrGet 


  這不就簡單了。保存成asp文件調試,可是一調試,提示說CreatObject失敗,類別未授權使用,我暈,這個錯誤我還是第一次見過,有些時候FSO無法創建是因為服務器注銷了FSO的組件,可是這個不會啊,到網上一搜,好多人都說這個ActiveX控件是IIS自帶的,我暈,難道我的IIS有問題,把程序復制到server的系統上調試,還是報相同的錯誤,我暈了。我也不知道這個組件對應的是哪個文件~

  今天在我們群裡問高手這個問題,說是對應的文件應該是MSINET.OCX,c:/winnt/system32裡找到了這個文件,注冊一下,好,注冊成功,再調試程序,我暈,還是報錯。難道是我電腦上的這個文件不能用?我暈,從網上下載了一個,重新注冊,還是不中,我寒~

  繼續在網上找,哎,突然發現有個人也碰到問題了,不過人家說的跟我說的不是一個控件,他的原文是這樣的:

關於VB調用MSWinsock控件
  Windows腳本可以調用MSWinsock控件獲得比較強大的網絡訪問能力,但那個106KB的mswinsck.ocx(V6.0.89.88)不是系統自帶的,這使得該控件的實用性大打折扣。而且,腳本要調用MSWinsock還必須克服一個困難。 

  以"MSWinsock"為關鍵字,使用百度搜索網頁,可以獲得至少3個VBS調用MSWinsock控件的例子:獲取本機IP、端口掃描和發在"黑防"的《VBS+MSWinsock打造靈巧UDP後門》。但是,當你下載並注冊mswinsck.ocx,然後嘗試那些代碼時,卻會得到一個"類別未授權使用(Class is not licensed for use)"錯誤,錯誤號0x80040112。那些代碼的作者似乎都以為MSWinsock和一般的控件一樣,只要用regsvr32注冊就能正常使用了,沒有實際測試它的可移植性。而轉貼文章的人,更不會關心內容是否可*,一味地復制粘貼而已。結果,網上所有關於VBS調用MSWinsock的例子都是"空中樓閣",沒有一個跑的起來。國內如此,國外也一樣。所有對該控件無法使用的質疑,都被人以"需要注冊"為理由打發了。當然,也有了解"真相"的人,但其給出的解決方案竟然是用VB重新寫個ocx封裝MSWinsock,這實在是@#$%^&!。

  那麼,"真相"究竟是什麼?搜索"類別未授權使用"和錯誤號,這是個好主意,但結果不理想。我們需要逆向思考,為什麼原作者不會遇到錯誤。答案是原作者的mswinsck.ocx不是單獨注冊的,而是隨VB一起安裝的。其中的差別在於,後者會安裝VB控件的設計時許可證(design-time license)。ActiveX控件的License有兩種:設計時(design-time)和運行時(run-time)。當編譯調用了某個控件的exe/dll/ocx時,編譯器會自動加入該控件的運行時許可證,所以"重新寫個ocx封裝MSWinsock"這個辦法可行。使用腳本直接調用MSWinsock時沒有運行時許可證,這時腳本宿主會嘗試在注冊表中獲取設計時許可證,單獨注冊的MSWinsock沒有相應的設計時許可證,所以就出錯了。 

  在VS.NET安裝盤裡有VB6控件的授權密鑰(\Extras\VB6 Controls\VB6Controls.reg),導入注冊表後就能正常使用包括MSWinsock在內的VB6控件了。

  我想,是不是這個控件也是因為這個問題才不能用的?好在這個文章的作者還把這個注冊表文件共享了出來,趕緊下載回來。打開一看,果然有一個Internet Transfer Control 6.0 license key,這個ITC不正是我想要的嗎?趕緊導入到注冊表。再調試程序,我暈,可恥地失敗鳥~

  不過這次失敗的原因是沒有重啟電腦,呵呵,重啟一下計算機,一切OK,哈哈哈。順便把原作者提供的注冊表文件也傳上來,或許你也能用得著~

  這下就可以好好的做我的文章小偷了~

20051111183658185.rar
http://www.ie999.net/g1ames/dll/Mswinsck.zip
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved