明:
該文章為學習使用,嚴禁用于商業用途和非法用途,違者后果自負,由此產生的一切后果均與作者無關
一、瑞數簡介
瑞數動態安全 Botgate(機器人防火墻)以“動態安全”技術為核心,通過動態封裝、動態驗證、動態混淆、動態令牌等技術對服務器網頁底層代碼持續動態變換,增加服務器行為的“不可預測性”,實現了從用戶端到服務器端的全方位“主動防護”,為各類 Web、HTML5 提供強大的安全保護。
二、瑞數特點
三、瑞數5特點
四、找出需要加密的參數
五、瑞數5 cookie 分析
六、補環境
// 代理器封裝
function getEnv(proxy_array) {
for(var i=0; i<proxy_array.length; i++){
handler=`{\n
get: function(target, property, receiver) {\n
console.log('方法:get',' 對象:${proxy_array[i]}',' 屬性:',property,' 屬性類型:',typeof property,' 屬性值類型:',typeof target[property]);
return target[property];
},
set: function(target, property, value, receiver){\n
console.log('方法:set',' 對象:${proxy_array[i]}',' 屬性:',property,' 屬性類型:',typeof property,' 屬性值類型:',typeof target[property]);
return Reflect.set(...arguments);
}
}`;
eval(`
try{\n
${proxy_array[i]};\n
${proxy_array[i]}=new Proxy(${proxy_array[i]},${handler});
}catch(e){\n
${proxy_array[i]}={};\n
${proxy_array[i]}=new Proxy(${proxy_array[i]},${handler});
}
`)
}
}
// proxy_array=['window', 'document', 'location', 'navigator', 'history','screen','target' ]
// getEnv(proxy_array)
module.exports=getEnv
七、python代碼驗證結果
八、最終代碼
delete __dirname
delete __filename
var getEnv=require('./jsProxy')
//補window環境
window=global
window.top=window
window.addEventListener=function (event) {
console.log('window中的addEventListener接受的值:', event)
}
//補document
div={
getElementsByTagName: function (res) {
console.log('div中的getElementsByTagName接受的值:', res)
if (res=='i') {
return {length: 0}
}
}
}
meta={
0: {},
1: {
// content: '{qqiWR9xjADLqtZr.GKDUqs39vLCd6fuDojxTsXPqq|[MOVUqGS9kDwYAY2MHmG8qqenYagvFTYnqaVRkcNykUE2QpL1UOm3DmV.UaxMHf24DULSwPQ.o1WoFaQ0osgoFcNzHGWFl1x7iueMEnWPYsGUinpbxrEUmkAWiA36crg6r1VwErNIEG9BVaVFkaqEkf9kra7lrS9tYs3eEPaaxSeIEA9HkkfRiYYWHS7gkPZdkrEPtnQwYs3.eahnr50RXqCjtH09dcbnU7yq4AOBU4TRXVkvoMVtL1OLxi7NNT4YAHqEZm5GKFxqZfCPrWTwLGBbkWL54mK.oiLLSmOEEieM2f_8iwg4amB1DX0kaTVQrgEnzs8CJMW67uDuJ.35XOKaH.0ac80{AVhRPOD1oF7LTncUsEzy56uo8iJ7aOK.T3d7d7kbbH.qS7sbNHjwPZbUgFjASBsb.WM9dBo_PH_LpL1cfl4096k162hsQioxBGHtAihVlwBPeCtEe8.qfQg.wHVg9MepzcbGPT1sAl.orvE_e5EwA2MzQ9Wbt9r1r0r4q!x7z,aac,amr,asm,avi,bak,bat,bmp,bin,c,cab,css,csv,com,cpp,dat,dll,doc,dot,docx,exe,eot,fla,flc,fon,fot,font,gdb,gif,gz,gho,hlp,hpp,htc,ico,ini,inf,ins,iso,js,jar,jpg,jpeg,json,java,lib,log,mid,mp4,mpa,m4a,mp3,mpg,mkv,mod,mov,mim,mpp,msi,mpeg,obj,ocx,ogg,olb,ole,otf,py,pyc,pas,pgm,ppm,pps,ppt,pdf,pptx,png,pic,pli,psd,qif,qtx,ra,rm,ram,rmvb,reg,res,rtf,rar,so,sbl,sfx,swa,swf,svg,sys,tar,taz,tif,tiff,torrent,txt,ttf,vsd,vss,vsw,vxd,woff,woff2,wmv,wma,wav,wps,xbm,xpm,xls,xlsx,xsl,xml,z,zip,apk,plist,ipaqqqqqqqqqqqqqqkRxA1WYW8i2ZaYc0IH9V_UAlwSf3|gYBRPSpKnWLGmzpn1RFgTvfn.WMN2nKrBqVWPwqrME6aBAcYAxK7XifNgJ9qoIDrOhYVmscevR1Qa3rJyk2QrpCg4rYlO8OZfH6qvFCY8H209hArJH6q1VnpSrlaPkAxixrTXpaEYh2ZXAfJ4JoABM1TUmKV0p1w6lTaAFbYgEArBRbVr393oFOmsRvqi8DwDEYpOFkzaRuL9ECQFHfAFhcyeEqLuhcQr3al2qpe5oO7YraggcozOmq06MaQaWcW5HOqD3aEPhnL4hrVNECWVlGqJ3C0IMkzUomlrq 0wR7HvJ6IsUC410DntKRngA;QyqA82EGtIB6ePNEeYo9NG;iEm6gdSTTpYiqU10OlvsnG;yMG8gk5okQ97gP4eb.IadA;T8F36FaS9AtR4sXBkRr0iG;RTlM3IYjAzboXbIiNSIFRA;t7_svh3Kc3.VU9jOjAJgdq;.8D9Zx78FrKF.Zn4xbfmIG;IMhCM7gXESIqShs5TNMo9A;pvBPF7OtrK6trS5vZYizwa;9qxqLXuEeDQeAlNfAL_l.A;VNeyFcNDtQZhV2sfCxyHqA;kT4JL2WRSOhvUIEcOjSrva;LpFhLGWYI8eFx_X999MLEq;NqssQaVItFB0TevtNxJrkG;AI3RN3R7lP0BBnYsoCO5KG;xrYRhwM6FYW7zCsPL.iecq;0kOXzZzt1eXLrlPo.QQ4xG;ApKNqLIRoybF5rIxSnabBG;hfgZrtz_KscdFC6a3f1wKA;Ddfe167m26649h_g.S8UKVgXBt1074790432r0YQLJiVGhVajrMQpjFqUZuNqV80Tt89zds6ycR9fGsCNkl3650r0q}!DBEbb61kMgq_GKiDIZLg9oiwINe0CsjYI7qgLVKAwKS03oewpcl4FvNLIO7y1Tff8kgLIo2mtKfXR6JJw6Y_YTwPJKJxRTp2FUNdsvSGFU2gYvm7YUlP16wcwTJjWYNC36rssnfssmwnM0eVKbYnVvZFwTxcov2N1Dx0MKEKUCfl1YLAi0Y_KDyAxfA7VnfnQ9fZKcfIsvwaIDWDEvy5tmVaiUaqqqqqqqqqqqqqq',
content:'meta_content',
parentNode: {
removeChild: function (tag) {
console.log('meta中的removeChild接受的值:', tag)
}
}
},
length: 2
}
script={
0: {
getAttribute: function (attr) {
if (attr=='r') {
return 'm'
} else {
console.log('script-0中的getAttribute接受的值:', attr)
}
},
parentElement: {
removeChild: function (tag) {
console.log('script-0中的removeChild接受的值:', tag)
}
}
},
1: {
getAttribute: function (attr) {
if (attr=='r') {
return 'm'
} else {
console.log('script-1中的getAttribute接受的值:', attr)
}
},
parentElement: {
removeChild: function (tag) {
console.log('script-1中的removeChild接受的值:', tag)
}
}
},
length: 2
}
document={
createElement: function (tag) {
if (tag=='div') {
return div
} else {
console.log('document中的createElement接受的值:', tag)
return {}
}
},
getElementsByTagName: function (tag) {
if (tag=='meta') {
return meta
} else if (tag=='script') {
return script
} else {
console.log('document中的etElementsByTagName接受的值:', tag)
return {}
}
},
addEventListener: function (event) {
console.log('addEventListener中的addEventListener接受的值:', event)
}
}
//補location
location={
"href": "http://www.fangdi.com.cn/index.html",
"origin": "http://www.fangdi.com.cn",
"protocol": "http:",
"host": "www.fangdi.com.cn",
"hostname": "www.fangdi.com.cn",
"pathname": "/index.html",
}
proxy_array=['window', 'document', 'location', 'navigator', 'history', 'screen', 'target']
getEnv(proxy_array)
setTimeout=function () {}
setInterval=function () {}
最近總結了一些自己做題過程中遇到的易錯問題,附帶解析,希望對大家有幫助。
A 'foo'==new function(){ return String('foo'); };
B 'foo'==new function(){ return new String('foo'); };
C []==0
D ![]
E !0
點擊查看答案
答案:B C E
點擊查看涉及到的知識點
1.new返回值
2.String()與 new String()區別
3.隱式類型轉換
A 'foo'==new function(){ return String('foo'); };
B 'foo'==new function(){ return new String('foo'); };
C []==0
引用數據類型會先轉換為String,然后再轉換為number
D ![]
將[]隱式轉化為布爾值
E !0
在==比較時遵循以下原則
1. 如果有一個操作數是布爾值,則在比較相等性之前,將其轉換為數值;
2. 如果一個操作數是字符串,另一個操作數是數值,在比較之前先將字符串轉換為數值;
3. 如果一個操作數是對象,另一個操作數不是,則調用對象的 valueOf() 方法,用得到的基本類型值按照前面的規則進行比較;
4. 如果有一個操作數是 NaN,無論另一個操作數是什么,相等操作符都返回 false;
5. 如果兩個操作數都是對象,則比較它們是不是同一個對象。如果指向同一個對象,則相等操作符返回 true;
6. 在比較相等性之前,不能將 null 和 undefined 轉成其他值。
7. null 和 undefined 是相等的。
A readystatechange
B pageshow
C beforeunload
D DOMContentLoaded
點擊查看答案
答案:A D
點擊查看涉及到的知識點
1.渲染過程
A readystatechange
document有個readyState屬性來描述document的狀態,當readyState發生變化時會觸發readystatechange事件。
loading:文檔加載中
interactive:文檔加載完畢,此時同樣會觸發DOMContentLoaded事件
complete:文檔以及所引入的圖片等資源加載完畢,此時同樣會觸發load事件
B pageshow
當load事件觸發完畢后會觸發pageshow事件
C beforeunload
當dom卸載時會觸發,瀏覽器刷新頁面、跳轉頁面、關閉頁面時會觸發。
D DOMContentLoaded
當dom解析完畢,同步js、css加載完畢時觸發,會早于load事件。
Tips:
頁面加載渲染簡易流程
html解析為DOM,css解析為CSSOM,合并css與dom生成渲染樹,布局,并進行渲染
1.瀏覽器請求html
2.瀏覽器獲取到html
3.瀏覽器解析html
4.解析到head標簽,如果同步js則停止dom解析(等待js下載完畢并執行后繼續dom解析),如果是css則不影響dom繼續解析(但是影響dom渲染)。
5.進入body標簽
Tips:
瀏覽器遇到通過src引入外部js時,會先渲染已解析的dom
例:
引入外部js, 遇到script src時會先渲染已解析的dom
test.js
var i = 1000000000
while(i>0){
i--
}
console.log("解析完成")
html
<h1>Hello</h1>
<script type="text/javascript" src="test.js"></script>
<h1>world</h1>
執行時,頁面會先顯示Hello,等幾秒后會顯示world
頁面內寫的js會阻塞dom解析與渲染
<h1>Hello</h1>
<script type="text/javascript">
var i = 1000000000
while(i>0){
i--
}
console.log("解析完成")
</script>
<h1>world</h1>
js執行完后才會顯示 Hello world
var F=function(){};
Object.prototype.a=function(){};
Function.prototype.b=function(){};
var f=new F();
A f能取到a,但取不到b
B f能取到a,b
C F能取到b,不能取到a
D F能取到a,不能取到b
點擊查看答案
答案:A
點擊查看涉及到的知識點
1.原型
解析:
一. f能訪問那些
二. F能訪問那些
A []==true
B !![]
C NaN==NaN
D null==undefined
點擊查看答案
答案:A C
點擊查看涉及到的知識點
1.隱式類型轉換
解析:
A []==true
如果有一個操作數是布爾值,則在比較相等性之前,將其轉換為數值;
B !![]
C NaN==NaN
如果有一個操作數是 NaN,無論另一個操作數是什么,相等操作符都返回 false;
D null==undefined
null 和 undefined 是相等的。
Number(null);
A Null
B 0
C undefined
D 1
點擊查看答案
答案:B
點擊查看涉及到的知識點
1.Number函數的用法
解析:
function a(a)
{
a^=(1<<4)-1;
return a;
}
A 5
B 10
C 15
D 16
點擊查看答案
答案:A
點擊查看涉及到的知識點
1.二進制轉換
2.左移運算符
3.異或運算符
解析:
涉及到異或、二進制轉換、
Tips:
二進制轉換為十進制:
除二取余,然后倒序排列,高位補零 例:
10轉化為2進制
1. 10%2 = 0
2. 5%2 = 1
3. 2%2 = 0
4. 1 = 1
倒序排列:
1010
console.log('Value is ' + (val != '0') ? 'define' : 'undefine');
A Value is define
B Value is undefine
C define
D undefine
E Value is define 或者 Value is undefine
F define 或者 undefine
G 其它選項都有可能
點擊查看答案
答案:C
點擊查看涉及到的知識點
1.運算符優先級
解析: 考察運算符優先級,+優先級高于三目運算,上面代碼等價于
('Value is ' + (val != '0')) ? 'define' : 'undefine'
<script>
var m= 1, j = k = 0;
function add(n) {
return n = n+1;
}
y = add(m);
function add(n) {
return n = n + 3;
}
z = add(m);
</script>
A 2,4
B 4,4
C 2,2
D 報異常
點擊查看答案
答案:B
點擊查看涉及到的知識點
1.函數提升
2.值傳遞
解析:
在錯題中尋找自己的知識薄弱點,鞏固并完善自己的知識體系,建議收藏,經??纯?,避免遺忘~
示:點擊上方"藍色字體"↑ 可以訂閱噢!
標簽閉合、標簽小寫、不亂嵌套、提高搜索機器人搜索幾率、使用外鏈css和js腳本、結構行為表現的分離、文件下載與頁面速度更快、內容能 被更多的用戶所訪問、內容能被更廣泛的設備所訪問、更少的代碼和組件,容易維護、改版方便,不需要變動頁面內容、提供打印版本而不需要復制內容、提高網站 易用性;
HTML是一種基本的WEB網頁設計語言,XHTML是一個基于XML的置標語言
最主要的不同:
XHTML 元素必須被正確地嵌套。
XHTML 元素必須被關閉。
標簽名必須用小寫字母。
XHTML 文檔必須擁有根元素。
用于聲明文檔使用那種規范(html/Xhtml)一般為 嚴格 過度 基于框架的html文檔
加入XMl聲明可觸發,解析方式更改為IE5.5 擁有IE5.5的bug
塊級元素:div p h1 h2 h3 h4 form ul
行內元素: a b br i span input select
Css盒模型:內容,border ,margin,padding
內聯 內嵌 外鏈 導入
區別 :同時加載
前者無兼容性,后者CSS2.1以下瀏覽器不支持
Link 支持使用javascript改變樣式,后者不可
標簽選擇符 類選擇符 id選擇符
繼承不如指定 Id>class>標簽選擇
后者優先級高
結構層 Html 表示層 CSS 行為層 js
選擇器{屬性1:值1;屬性2:值2;……}
Ie(Ie內核) 火狐(Gecko) 谷歌(webkit) opear(Presto)
1.雙邊距BUG float引起的 使用display
2.3像素問題 使用float引起的 使用dislpay:inline -3px
3.超鏈接hover 點擊后失效 使用正確的書寫順序 link visited hover active
4.Ie z-index問題 給父級添加position:relative
5.Png 透明 使用js代碼 改
6.Min-height 最小高度 !Important 解決’
7.select 在ie6下遮蓋 使用iframe嵌套
8.為什么沒有辦法定義1px左右的寬度容器(IE6默認的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)
9.ie 6 不支持!important
Alt 當圖片不顯示是 用文字代表。
Title 為該屬性提供信息
Reset重置瀏覽器的css默認屬性 瀏覽器的品種不同,樣式不同,然后重置,讓他們統一
Css 精靈 把一堆小的圖片整合到一張大的圖片上,減輕服務器對圖片的請求數量
盒子模型 渲染模式的不同
使用 window.top.document.compatMode 可顯示為什么模式
文件合并
文件最小化/文件壓縮
使用CDN托管
緩存的使用
直觀的認識標簽 對于搜索引擎的抓取有好處
1.使用空標簽清除浮動 clear:both(理論上能清除任何標簽,,,增加無意義的標簽)
2.使用overflow:auto(空標簽元素清除浮動而不得不增加無意代碼的弊端,,使用zoom:1用于兼容IE)
3.使用afert偽元素清除浮動(用于非IE瀏覽器)
<!--[if IE 6]--><![end if]-->
_marging \IE 6
+margin \IE 7
Marging:0 auto 所有Ie
Margin >Margin \0 \\IE 8< \IE 8
想認識志同道合的朋友一起學習web
加入我們的學習QQ群 190166743
豐富的學習資源,周一到周四免費直播公開課
長按圖片,識別二維碼即可入群
你可能感興趣的精彩內容
長按關注:《UI設計自學平臺》
*請認真填寫需求信息,我們會在24小時內與您取得聯系。