[破事水] 如何下載B站所有的404圖片?
眾所周知,當(dāng)我們在B站打開一個并不存在或者已被刪除的頁面時,會被引向一個錯誤頁面,如圖:

其實(shí)把404換成400、403、503甚至100都會引向這個頁面,不過打開console一看……還是404

我們可以看到這個404頁面上放有圖片,大概都是有關(guān)B站官方形象的漫畫,可以更換顯示,一共有幾十張的樣子。首先可以猜測,這些圖片的地址是通過請求一個API返回的。翻一下XHR請求,找到請求如下,是沒有請求參數(shù)的靜態(tài)API。
觀察其響應(yīng)體,定位到圖片地址的所在位置,如圖:

設(shè)整個響應(yīng)體為source,獲取?加上了`https:`和HTML換行標(biāo)簽的所有圖片地址的數(shù)組?的代碼如下:
source.data.list.map(el?=>?'https:'?+?el.data.img?+?'\<br\/\>')
設(shè)上述數(shù)組為list,將這個數(shù)組轉(zhuǎn)換成長文本(不用換行符分行,前面分好了)的代碼如下(Array.reduce()最基礎(chǔ)的應(yīng)用):
list.reduce((a,?b)?=>?a?+?b))
組合以上代碼得到這么長一串:
document.write(JSON.parse(document.body.innerText).data.list.map(el?=>?'https:'?+?el.data.img?+?'\<br\/\>').reduce((a,?b)?=>?a?+?b))
直接用瀏覽器訪問這個API,在console中輸入上述代碼,即在頁面中得到所有圖片地址的文本,如圖:


然后你就可以拿著這個列表用BitComet等工具下載了,下載到的圖片如下:

還有一共7張圖片藏在這個頁面對應(yīng)的JS即`error.js`里面,地址如下:
//activity.hdslb.com/zzjs/cartoon/errorPage-manga-[1-7].png

圖片內(nèi)容和上面79個重復(fù),不過第一張不知何故尺寸非常大,其他正常。
