們可以針對不同的訪問者,隱藏部分內容,這時候就用到客戶端的網頁加密解密技術,用作選擇性隱蔽展示。當然客戶端的加密安全度是不能與服務器相提并論,肯定不能用于密碼這類內容的加密,但對于一般級別的內容用作展示已經夠了。
主要學習的是:
string 對象的charCodeAt()方法和fromCharCode()方法對字符的ASCII編碼進行獲取和修改。
下面是完整代碼:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>網頁加密及解密</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<p><textarea id="text1" name="textfield" cols="50" rows="5">錢莊王員外這個人怎么樣?</textarea></p>
<input type="button" name="Button1" value="加密" onClick="Encrypt(text1.value)">
<input type="button" name="Button2" value="解密" onClick="unEncrypt(text1.value)">
<script language="JavaScript">
var p=0;
function Encrypt(Text) {
p=p+1;
output=new String;
alterText=new Array();
varCost=new Array();
TextSize=Text.length;
for (i=0; i < TextSize; i++) {
idea=Math.round(Math.random() * 111) + 77;
alterText[i]=Text.charCodeAt(i) + idea;
varCost[i]=idea;
}
for (i=0; i < TextSize; i++) {
output +=String.fromCharCode(alterText[i], varCost[i]);
}
text1.value=output;
}
function unEncrypt(Text) {
if (p>0){
p=p-1;
output=new String;
alterText1=new Array();
varCost1=new Array();
TextSize=Text.length;
for (i=0; i < TextSize; i++) {
alterText[i]=Text.charCodeAt(i);
varCost[i]=Text.charCodeAt(i + 1);
}
for (i=0; i < TextSize; i=i+2) {
output +=String.fromCharCode(alterText[i] - varCost[i]);
}
text1.value=output;
}
}
</script>
</body>
</html>
案列視頻演示:
JS案例演示,網頁的加密解密
(科技自媒體原創作者:錢莊王員外)
標站點:
aHR0cHMlM0EvL2subS5hdXRvaG9tZS5jb20uY24vZGV0YWlsL3NoYXJlXzAxZG1xeThmYTE2OHZrYWU5aDYwdmcwMDAwLmh0bWw=
該地址經過base64加密,可以通過如下地址進行解密:
https://base64.supfree.net
準備工具:
chome瀏覽器,python3.7語言環境,pycharm,百度字體編輯器:http://fontstore.baidu.com/static/editor/index.html
破解方法:
1、打開chrome瀏覽器,在瀏覽器地址欄中輸入目標地址,打開網頁后,在頁面中點擊鼠標右鍵,選擇檢查,可以看到相關文字已被加密。
文字被加密
2、可以通過復制,來驗證文字是否被加密。如復制:
老朋友的推薦
復制出的文字為:
老朋友?推薦
3、此類現象為文字被CSS樣式加密,破解步驟如下:
1、通過瀏覽器開發者模式,找到頁面中文字所使用的css樣式 2、通過抓包等方法找到加載的css文件,通過正則表達式取出字體文件URL 3、通過百度字體編輯器解析woff文件:http://fontstore.baidu.com/static/editor/index.html 4、使用fontTools處理字體文件,得出對應關系 5、通過對應關系解析加密字體
4、首先使用python的request模塊請求該頁面,通過正則表達式獲取字體文件URL,請求該URL,獲取到字體文件,寫入到本地。
5、通過百度字體編輯器,解析ttf文件
6、通過百度字體編輯器,可以看到,"的"對應的字體編碼為"$EC2A",接下來通過python下的fontTools模塊讀取該TTF文件,并建立文字對應關系,保存為字典。
7、通過for循環遍歷該文字對應關系字典,對原網頁返回進行替換,即可得到正常數據。
老朋友的推薦,去看了一幾個牌子,頭都看暈了,沒有結果,決定不了買哪個牌子,九了女兒意見,準備在榮威里面選盤款。性價上最高的就是I5了,看中這款的原因,并不是因為配置高,也不是養力強,而是囊中羞澀,預算控有那么電啊?,而榮威這個品牌過硬,質量可靠,故障率低,朋友買了都說挺一的。暫時沒有,還是覺外有點說不過去啊!買車看車子做這個決定,是和女兒共同商量決定的,我看中的是這個牌子的知名度,品質這些方面,女兒的話是喜歡這款車型的十觀,女孩子嘛,都是十貌協會,兩廂車上較炫酷,十形時尚養感,適合年輕妹子。女兒盤看就中意了。
代碼參考:
https://github.com/freedom-wy/js-reverse/tree/master/autohome/koubei
歡迎交流,一起學習,一起進步。
另外,我在慕課網上主講課程:
《Python爬蟲工程師必學——App數據抓取實戰》,還請各位大神多多支持。課程地址:
我們最近遇到了一些文件被惡意下載的情況。如果不及時處理,OSS的每日流量費用將超過1000元。為了解決這個緊急問題,我們不得不暫時下架這些文件。
今晚,發現了一個有趣的項目:Staticrypt。它可以給靜態HTML頁面加上密碼保護,非常實用。
安全加密并密碼保護你的公共靜態HTML文件的內容,這些文件將在瀏覽器中解密,無需任何后端支持,因此可以通過Netlify、GitHub Pages等靜態托管服務進行發布。
StatiCrypt使用AES-256和WebCrypto技術,以你的長密碼加密HTML文件,并返回一個靜態HTML頁面,該頁面會顯示一個密碼提示,現在你可以安全地上傳這個頁面,其中包含了你的加密內容,解密過程在客戶端的JavaScript中進行。
StatiCrypt 能在沒有后端的情況下保護 HTML 頁面密碼。
StatiCrypt 使用 WebCrypto 技術來生成一個靜態的、受密碼保護的頁面,頁面會在瀏覽器中解密。
你可以將生成的頁面上傳到一個靜態內容托管的平臺(比如 GitHub Pages)。
這樣,用戶訪問頁面時會看到一個密碼輸入框,輸入正確的密碼后,JavaScript 就會在瀏覽器中解密并加載你的 HTML 內容。
簡單來說,它就是加密你的頁面,并把密碼輸入界面做成一個用戶友好的方式放在新的文件里。
StatiCrypt 采用的AES-256 加密,雖然 AES-256 是最先進的加密技術之一,但在面對暴力破解(brute-force)或字典攻擊(dictionary attack)時,若密碼短語不夠長或不夠復雜,依然有可能被攻破。因此,還需要使用一個長且不尋常的密碼短語以提高安全性。
幾個名詞解釋:
1. AES-256 (高級加密標準-256位): 一種對稱加密算法,使用 256 位的密鑰來加密和解密數據,被廣泛認為是非常安全的加密標準。
2. 暴力破解 (brute-force attack): 一種攻擊方法,攻擊者嘗試所有可能的密碼組合,直到找到正確的密碼。由于密碼的復雜性越高,暴力破解所需的時間就越長。
3. 字典攻擊 (dictionary attack): 一種攻擊方法,攻擊者使用一個預先定義的密碼字典(包含常見密碼或密碼組合)來嘗試破解密碼。與暴力破解不同,字典攻擊利用了密碼的常見性來提高破解效率。
Staticrypt通過npm作為CLI提供,使用npm install -g staticrypt進行安裝,并按如下方式使用:
Usage: staticrypt <filename><passphrase>[options]
Options:
--help 顯示幫助信息[boolean]
--version 顯示版本號[boolean]
-e,--embed 是否在頁面中嵌入 crypto-js(或者使用外部 CDN)[boolean][default:true]
-o,--output 生成的加密文件的文件名/路徑[string][default:null]
-t,--title 輸出 HTML 頁面的標題[string][default:"Protected Page"]
-i,--instructions 顯示給用戶的特別說明[string][default:null]
-f,--file-template自定義 HTML 模板的路徑,包含密碼提示框[string][default:"[...]/cli/password_template.html"]
使用示例
1、cd 靜態文件夾
2、輸入:staticrypt example.html -p leadsoft,對當前頁面進行加密。
3、輸入:http-server
4、訪問http://127.0.0.1:8080/example.html
5、輸入密碼:leadsoft
6、現在可以愉快的訪問頁面了。
文件大小,也從1K增加到了35k。
7、當然,你可以可以自定義HTML以使加密頁面符合您的風格
*請認真填寫需求信息,我們會在24小時內與您取得聯系。