js加密是防君子不防小人的,只能適當增加獲得源代碼的難度。如果回是調試目的,建答議提供兩個版本的js,一個加密一個非加密,調試的時候還是明文最方便,既然是給自己看為何還要加密。
只要是在網上能在線看的都能被下載下來。不論有沒有下載連接,直接從電腦埠截獲信息然後下載到本地。
2. 用JS方法加密URL
js對文字進行編碼涉及3個函數:escape,encodeURI,encodeURIComponent,相應3個解碼函數:unescape,decodeURI,decodeURIComponent
1.傳遞參數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字元截斷。
例如:<script language="javascript">document.write('<a href="http://passport..com/?logout&aid=7&u='+encodeURIComponent("http://cang..com/bruce42")+'">退出</a>');</script>
2.進行url跳轉時可以整體使用encodeURI
例如:Location.href=encodeURI("http://cang..com/do/s?word=網路&ct=21");
3. js使用數據時可以使用escape
例如:搜藏中history紀錄。
4.escape對0-255以外的unicode值進行編碼時輸出%u****格式,其它情況下escape,encodeURI,encodeURIComponent編碼結果相同。
3. 怎麼用 python 模擬 js 里 JSEncrypt 模塊的加密方式
PC登錄新浪微博時,在客戶端用js預先對用戶名、密碼都進行了加密,而且在POST之前會GET一組參數,這也將作為POST_DATA的一部分。這樣,就不能用通常的那種簡單方法來模擬POST登錄(比如人人網)。
通過爬蟲獲取新浪微博數據,模擬登錄是必不可少的。
1、在提交POST請求之前,需要GET獲取四個參數(servertime,nonce,pubkey和rsakv),不是之前提到的只是獲取簡單的servertime,nonce,這里主要是由於js對用戶名、密碼加密方式改變了。
1.1 由於加密方式的改變,我們這里將使用到RSA模塊,有關RSA公鑰加密演算法的介紹可以參考網路中的有關內容。下載並安裝rsa模塊:
下載:https//pypi.python.org/pypi/rsa/3.1.1
rsa模塊文檔地址:http//stuvel.eu/files/python-rsa-doc/index.html
根據自己的Python版本選擇適合自己的rsa安裝包(.egg),在win下安裝需要通過命令行使用easy_install.exe(win上安裝setuptool從這里下載:setuptools-0.6c11.win32-py2.6.exe 安裝文件 )進行安裝,例如:easy_install rsa-3.1.1-py2.6.egg,最終命令行下測試import rsa,未報錯則安裝成功。
1.2 獲得以及查看新浪微博登錄js文件
查看新浪通行證url (http//login.sina.com.cn/signup/signin.php)的源代碼,其中可以找到該js的地址 http//login.sina.com.cn/js/sso/ssologin.js,不過打開後裡面的內容是加密過的,可以在網上找個在線解密站點解密,查看最終用戶名和密碼的加密方式。
1.3 登錄
登錄第一步,添加自己的用戶名(username),請求prelogin_url鏈接地址:
prelogin_url = 'http//login.sina.com.cn/sso/prelogin.php?entry=sso&callback=sinaSSOController.preloginCallBack&su=%s&rsakt=mod&client=ssologin.js(v1.4.4)' % username
使用get方法得到以下類似內容:
sinaSSOController.preloginCallBack({"retcode":0,"servertime":1362041092,"pcid":"gz-","nonce":"IRYP4N","pubkey":"","rsakv":"1330428213","exectime":1})
進而從中提取到我們想要的servertime,nonce,pubkey和rsakv。當然,pubkey和rsakv的值我們可以寫死在代碼中,它們是固定值。
2、之前username 經過BASE64計算:
復制代碼 代碼如下:
username_ = urllib.quote(username)
username = base64.encodestring(username)[:-1]
password經過三次SHA1加密,且其中加入了 servertime 和 nonce 的值來干擾。即:兩次SHA1加密後,結果加上servertime和nonce的值,再SHA1算一次。
在最新的rsa加密方法中,username還是以前一樣的處理;
password加密方式和原來有所不同:
2.1 先創建一個rsa公鑰,公鑰的兩個參數新浪微博都給了固定值,不過給的都是16進制的字元串,第一個是登錄第一步中的pubkey,第二個是js加密文件中的『10001'。
這兩個值需要先從16進制轉換成10進制,不過也可以寫死在代碼里。這里就把10001直接寫死為65537。代碼如下:
復制代碼 代碼如下:
rsaPublickey = int(pubkey, 16)
key = rsa.PublicKey(rsaPublickey, 65537) #創建公鑰
message = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #拼接明文js加密文件中得到
passwd = rsa.encrypt(message, key) #加密
passwd = binascii.b2a_hex(passwd) #將加密信息轉換為16進制。
2.2 請求通行證url:login_url =『http//login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.4)'
需要發送的報頭信息
復制代碼 代碼如下:
postPara = {
'entry': 'weibo',
'gateway': '1',
'from': '',
'savestate': '7',
'userticket': '1',
'ssosimplelogin': '1',
'vsnf': '1',
'vsnval': '',
'su': encodedUserName,
'service': 'miniblog',
'servertime': serverTime,
'nonce': nonce,
'pwencode': 'rsa2',
'sp': encodedPassWord,
'encoding': 'UTF-8',
'prelt': '115',
'rsakv' : rsakv,
'url': 'http//weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
'returntype': 'META'
}
請求的內容中添加了rsakv,將pwencode的值修改為rsa2,其他跟以前一致。
將參數組織好,POST請求。檢驗是否登錄成功,可以參考POST後得到的內容中的一句 location.replace("http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&retcode=101&reason=%B5%C7%C2%BC%C3%FB%BB%F2%C3%DC%C2%EB%B4%ED%CE%F3");
如果retcode=101則表示登錄失敗。登錄成功後結果與之類似,不過retcode的值是0。
3、登錄成功後,在body中的replace信息中的url就是我們下一步要使用的url。然後對上面的url使用GET方法來向伺服器發請求,保存這次請求的Cookie信息,就是我們需要的登錄Cookie了。
4. 怎麼樣利用ASP或者JS隱藏頁面中的視頻文件地址
思路:
在html.asp中用<script src="js.asp"></script>方式來顯示內容,在html.asp代碼中,設置一個session,在js.asp進行判斷,如果是設置的值就顯示正常內容,如果不是,就隱藏或顯示其它內容,在js.asp的結尾把session值改變,在html.asp和js.asp中都加一段代碼,使得游覽器不緩存頁面只能做到簡單的隱藏,使用工具軟體可以看到源文件,示例代碼:
html.asp程序代碼:
<%
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>查看代碼 - www.51windows.Net</title>
<style>
<!--
td { font-family: Tahoma; font-size: 8pt; color: #000080; line-height: 150%;
border: 1 solid #666666; padding: 4 }
-->
</style>
</head>
<body>
<%
session("haiwa") = "hw"
%>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="480">
<tr>
<td id="tmp"><SCRIPT LANGUAGE="JavaScript" src="js.asp" id="js"></SCRIPT></td>
</tr>
</table>
</center>
</div>
</body>
</html>
js.asp程序代碼:
<%
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
if session("haiwa") <> "hw" then
response.write "//歡迎查看源文件"
response.end
end if
%>
//高,這你都能看得出來。我沒有招了。。哈哈
document.write ("先做後想,先想後做,邊想邊做;只想不做,只做不想,不想不做。------世界是幾乎都被這六種人涵蓋了,如果作為個人能清楚的分析並看出自己屬於哪一類人,至少證明你自己是個聰明人。")
<%
session("haiwa") = ""
%>
5. 怎麼用js來加密url的傳遞參數
Oh! A matchstick is useful for her.
6. 如何將url加密 js加密 c#解密
js(加密):
str=encodeURI(str)
C#(解密):
HttpUtility.UrlDecode(str)