1. 程式人生 > >下載網頁中的 pdf 各種姿勢,教你如何 carry 各種網頁上的 pdf 文件。

下載網頁中的 pdf 各種姿勢,教你如何 carry 各種網頁上的 pdf 文件。

> 關聯詞: PDF 下載 FLASH 網頁 HTML 報告 內嵌 瀏覽器 文件 FlexPaperViewer swfobject pdf2swf 。 這個需求是最近幫一個學妹處理一下各大高校網站裡的 PDF 文件下載,又增加了無用的逆向知識 XD ,根據這些思路,可以有效的下載這類網站的文件檔案。 這需要你有點 HTML5 和 Flash 時代的基礎認知,順便能看 F12 的 network 、cache 等內容,推算真實地址等。 我從最簡單的說起,首先準備一個谷歌瀏覽器,有趣的是需要谷歌瀏覽器的列印功能,匯出到 PDF 上。 ## 第一種樣本,是直接的 .pdf 該類直接下載即可,沒有難度。 - http://zjc.suda.edu.cn/_upload/article/files/5f/cd/6352cea9466b80a3677983aab1ef/72cd882e-8bf8-4021-9960-553ebc770e4d.pdf ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321184037373-333276161.png) ## 第二種樣本,是現代 H5 + JS 內嵌 PDF 瀏覽器的方式。 屬於現代 H5 JS 的產物,需要用 F12 開發者工具看原始碼推斷 PDF 檔案路徑,接下來截圖舉例。 - http://www.nuaa.edu.cn/2020/0108/c295a192335/page.htm ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321184245521-22402215.png) 對其右鍵選檢查,此時進入 F12 的 HTML 元素審查位置,可以找到它的定義程式碼。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321185423801-458457759.png) 仔細看標籤內容可以發現,存在 data-url="/_upload/article/files/3d/8d/78ed42f44031bcb6793b0eb27af1/8e6ad93b-4902-4fd8-bba5-bfabaf852885_1.png" 這類標籤。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321185605300-1817101051.png) 試圖搜尋(Ctrl + F)頁面內容中的 .pdf 檔案字尾,就會發現它的檔案源存在了 pdfsrc="/_upload/article/files/3d/8d/78ed42f44031bcb6793b0eb27af1/8e6ad93b-4902-4fd8-bba5-bfabaf852885.pdf" 。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321185739593-1949737693.png) 此時需要確定它的伺服器源,從而獲取真實地址,可以絕大概率是從這裡來的。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321185835389-1636912732.png) 因此地址改為 http://www.nuaa.edu.cn//_upload/article/files/3d/8d/78ed42f44031bcb6793b0eb27af1/8e6ad93b-4902-4fd8-bba5-bfabaf852885.pdf 就出來了。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321190007870-1564930580.png) 覺得還不太相信?那就再來一個。 - http://zjc.suda.edu.cn/88/5c/c5230a362588/page.htm ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321184305424-567648672.png) 直接進 F12 直接搜 .pdf 直接找到源直接替換直接得到檔案路徑。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321190130702-387412397.png) 直接得到 http://zjc.suda.edu.cn//_upload/article/files/5f/cd/6352cea9466b80a3677983aab1ef/72cd882e-8bf8-4021-9960-553ebc770e4d.pdf 就是了。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321190300042-2129065839.png) 聰明的你學會了嗎?接著我們進入第三種樣本吧。 ## 第三種樣本,舊時代的遺留產物 FLASH 下的 PDF 文件 這個需要一點程式設計基礎了,我之前思路走歪了,現代電腦已經不支援過去的 Flash 軟體了,我先是獲取了 swf 後試圖轉換圖片、反編譯其內容,但能夠在 Win10 上 work 的軟體已經不多了。 最後痛定思痛,想起,我是個程式猿鴨,為什麼要這麼耿直的使用工具呢?沒錯,我直接懟程式碼進去了,就可以解決了嘻嘻,接下來就是復現這個過程。 > 注意,針對 swf 轉 pdf 問題檔案,可以使用 github 的程式碼去實現,在這裡不過多提及,關鍵詞可以是 pdf2swf 和 FlexPaper 使用正向程式碼解決問題。 > 只是想起以前瀏覽器還可以直接讀取 flash swf 檔案的,不知道為什麼現在已經不支援了。 - http://job.neuq.edu.cn/content.jsp?urltype=news.NewsContentUrl&wbtreeid=1022&wbnewsid=1978&&tdsourcetag=s_pcqq_aiomsg ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321184440970-1078046211.png) 從右鍵我們可以得知它是 flash 播放器,這個真的沒辦法通過 html 得到,那麼怎麼辦呢。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321190904892-1601503485.png) 搜尋 .pdf 或 .doc 都沒用了,根本得不到它的檔案,反而可以得到 swf 檔案,講道理,如果是早年間的電腦,相關工具應該還是可以解決問題的,如 swf2png 這類工具。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321191109753-451421480.png) 但是 win10 已經無法正常 work 了,那麼我在這個地方浪費了很久以後,仔細看了一下它的元件,對,就是 /system/resource/swf/FlexPaperViewer.swf 挺古老的東西了。 > 順便一提,谷歌瀏覽器將在 2020年12月終止 flash 元件。 那麼,正面轉換 swf 已經不現實了,我開始閱讀標籤程式碼,如下圖。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321191717719-347022486.png) ```html


``` 寫程式碼嘛,這裡就是定義這個 FlexPaperViewer 元件的呼叫引數,那麼看到 isPrintable=false ,這裡 false 就是關,表示停用印表機選項,改成 true 先。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321191829014-565217283.png) 發現沒反應,這是因為這時候標籤沒有重新整理,所以編輯一下再儲存,讓 JS 過載改元件。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321192148349-295867805.png) 此時你會看到一個神奇的選項出來了,對的,就是印表機,那麼你知道怎麼做了嗎? ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321192158989-148078523.png) 列印它,然後另存為 PDF 就可以了。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321192251091-1260368630.png) 嗯,接下來你都知道了吧。 ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321192400962-1108086114.png) ## 第四種樣本,炫酷的動畫版 PDF 文件。 這一種動畫制的 PDF 版本,有點複雜,依賴庫使用的是 SWFObject 元件,但也不是不能搞,但不能像前面的那種方式處理了。 - http://report.dsjyw.net/ ![](https://img2020.cnblogs.com/blog/1641852/202003/1641852-20200321184644645-1957702093.png) ```javascript /*! SWFObje