今天看到某網頁上有類似每日英語的小功能,覺得其中的英語很應該看一看。可是那英語8秒才更新一下。我可沒有這耐心等它更新完啊。直接看他的原始碼。知道是用JavaScript在後面不斷地更新資料。查看代碼,其中有一個english.js,開啟看看。其中有一個代碼是這樣的。
this.queryDB=function (e){
o.url="Plugins/EnglishXML/getEnglish.asp?s="+Math.random()
o.Open();
}
好了,什麼都知道了。直接在瀏覽器上輸入網址,其返回結果如下所示:
<querys>
<English>
<![CDATA["In Brazil,many ancient forests are very well preserves."]]>
</English>
<Chinese>
<![CDATA[ 在巴西,古老的森林得到了很好的保護。]]>
</Chinese>
</querys>
從伺服器返回的是個純XML檔案,而且理所當然的只有1句。但是我想得到全部的!本來想找出其資料檔案的位置。可是看來看就這麼個ASP網頁,自己也沒有學過注入攻擊的手段。只能用最笨的暴力方式——刷!當然肯定不能用瀏覽器刷了。
下載下來還要,看起來方便才好。所以就決定寫個Client去刷。程式很簡單兩個小時也就稿定了,介面如下:
看圖應該就可以看出來,我刷了3.3萬次。刷到後來,有近5000次刷出來的東西都是之前刷到過的,就停下來了。(其實還有8條資料沒有刷到)
刷的時候,想到一個問題。設總共有n個句子,我要刷多少次,才能保證已經刷完所有句子的機率大於x%?因為理論上,無論我刷多少次都不能保證我已經刷到了所有的句子。
刷出來的句子被儲存成了XML檔案。看XML檔案不方便,可以用程式開啟(功能沒有實現,給XmlDataProvider設定Source屬性即可)。程式上沒有加排序、尋找之類的功能。因為根本沒有必要,所有的資料都可以從這裡下載到,是個Access資料庫……然後你想幹什麼都可以。寫這個程式只是怕最近沒有用到技術生疏了。比如XML、Encoding之類。
PS:程式僅供學習之用,請勿用於其它目的。直接編譯需要使用Visual Studio 2010。