1. 程式人生 > >【原】記一次加密網頁html的研究

【原】記一次加密網頁html的研究

某次web程式設計,思考著辛辛苦苦編寫的web別人 右鍵檢視原始碼不就一目瞭然了?當然有些人會把script寫入外部js引入,但也只是增加了檢視原始碼的步驟。我就想把整個頁面html都加密下,只是右鍵檢視時,看不出程式碼。那麼是否可行?用哪種方法?

首先html程式碼的動態生成,而不是直接輸出。就需要js的document.write,動態插入html神器啊!

那麼接下來就是考慮編碼問題了,如果直接 document.write("<html>....</html>"); 也是可以的但是這跟不加密沒啥區別。但是我還是先用這種方法測試了下,遇到了點麻煩,web程式設計經常遇到的多個雙引號導致的字串錯誤問題。為了避免這種雙引號問題,就必須用編碼來繞過。

現在流行的已知編碼就幾種,比如json,base64.那就先用json來試試。

json編碼 執行如下:

右鍵檢視原始碼,可以看見程式碼至少按我的思路執行正常了,而且遇到雙引號問題也不出錯了。中文被json 編碼了,html程式碼還是被看到了大部分。加密的效果起到了1%吧。

接著試試base64

base64編碼 執行如下:

右鍵檢視程式碼,可以看出html全部加密了,但是根據資料長短分段換行還是可以看出html結構。 這個還是單行呼叫。

下面 改成鏈式呼叫

程式碼已經完全看不出原來的結構了。哈哈

接下來嘗試用2進位制編碼:

接下來嘗試用8進位制編碼:

接下來嘗試用10進位制編碼(順便增加了點無用符號增強混淆):

接下來嘗試用16進位制編碼(無分隔符):

接下來嘗試用16進位制編碼(有分隔符):

接著想弄個密碼輸入框,輸入正確密碼才顯示。

思路是 php端把真實網頁des加密,http傳輸,網路傳輸的只是一個大變數字串
必須des 用密碼解密才能知道,這個des加密好處是可以網路加密傳輸資料,雖然http是透明的,但內容可以加密碼鎖資料,別人看到的就是一堆亂碼html,不知道實際資料, des雖然比較弱,但破解不是那麼簡單的

瀏覽器訪問網頁,先輸入密碼,解密,成功則顯示真實網頁

其實還有其他編碼還有什麼壓縮編碼,我也不怎麼清楚,而且要動態輸出html,我用的php要和js配套才行,一方加密一方解密,不匹配或沒有適合的編碼,就無法完成。

結語:這種加密純屬本人無聊研究,只是web伺服器輸出html加了一層密,客戶端接收後js動態解碼輸出,雖然右鍵檢視不到程式碼,但瀏覽器開發者工具會顯示執行後的html程式碼,一覽無餘了。適合那些不想讓爬蟲看到的網站。爬蟲爬到的資料是加密後的亂碼,除非有爬蟲仿瀏覽器能執行js。這種加密後的網站爬蟲估計會非常不友好。因為爬蟲無法識別,不知道你網站標題內容,連線圖片,但是一番研究變異編碼對網頁也有了更深的理解和認識了。

完。

歡迎任何形式的轉載,但請務必註明出處,尊重他人勞動成果。