一、背景
又快到了期末復習周,這個學期學了一門操作系統,老師沒有給課本習題的答案,說是配套網站上有,我看了一下,確實有,是高等教育出版社的數字課程網站Abookl
不過登錄需要注冊,再完成注冊進入課程后,發現習題答案只能在線瀏覽,並沒有給下載的接口。
二、網頁代碼分析
身為計算機專業的學生最受不了這種不開源的方式了,我發現答案是由播放器打開的,覺得應該能留下一些接觸資源文件的途徑,於是翻了翻網頁源代碼,發現了一些蛛絲馬跡。
在答案網頁的源代碼一百九十行到二百行左右,有這樣一段JS代碼,上面的注釋直接告訴了我們這個函數的作用,就是用來下載資源的!
//下載資源增加下載次數 function downloadNumber(resourceInfoId,ip,resFileUrl,ticket){ jQuery.ajax( { type : "get", url : "downLoadNumber.action", data : "resourceInfoId=" + resourceInfoId + "&resourceUrl=" + resFileUrl, dataType : "text", success : function(bool) { if(bool == "true"){ location= "http://abook.hep.com.cn:80/downLoadResouce.action?resourceInfoId=" + resourceInfoId + "&resourceUrl=" + resFileUrl; }else{ return false; } } }); }
稍微分析一下這段代碼,里面套了一個json,有一個success,對應的值是一個函數,如果bool為true,會得到一個location,根據這個location的URL結構來判斷,這應該就是一個下載鏈接。
"http://abook.hep.com.cn:80/downLoadResouce.action?resourceInfoId=" + resourceInfoId + "&resourceUrl=" + resFileUrl;
不過我們發現想要拼湊出這個URL還需要兩個參數,resourceInfoId和resFileUrl這兩個參數也是最開始函數的參數,看變量命名的含義,大概猜出是資源的編號和文件URL。
那我們就直接開啟F12搜索一下吧(我這里使用的是火狐瀏覽器)。找不到按回車,直到找到了這樣一段代碼。
看樣子應該是得到了resourceInfoId=5000093767
接着去找resourceUrl,但發現找不到,難道並不需要這個參數?
於是先放棄對resourceUrl的研究,先試着拼湊URL
http://abook.hep.com.cn:80/downLoadResouce.action?resourceInfoId=5000093767
發現可以直接下載,也就印證了剛才的猜想,這樣下載鏈接的格式已經能夠確定
http://abook.hep.com.cn:80/downLoadResouce.action?resourceInfoId=**********
只需要向我之前那樣登錄進入課程獲取對應資源的resourceInfoId,然后填到上面的URL上,就大功告成!