//html 放入框架的解析器中
html = `
bobo1
bobo2
`
var endsign = ''
function test_documentElement() {
if (document.documentElement !== document.documentElement) {
console.log('document.documentElement 可以被检测')
endsign += 1
}
}
test_documentElement()
function test_window() {
if (self.window.top.self.top == top.window.self.window || self.window.top.self.top == top.window.self || self.window.top.self.top.parent == top.window.self) {
endsign += 1
} else {
console.log('self window top parent 可以被检测 ')
}
}
test_window()
function test_console() {
if (JSON.stringify(console) == '{"memory":{}}') {
if (
JSON.stringify([console, 1, 2, 3]) == '[{"memory":{}},1,2,3]') {
endsign += 1
} else {
console.log('JSON.stringify([console, 1, 2, 3]) 可以被检测 ')
}
} else {
console.log('JSON.stringify(console) 可以被检测 ')
}
}
test_console()
function test_document_activeElement() {
try {
Document.prototype.activeElement
console.log('Document.prototype.activeElement 可以被检测');
} catch (e) {
endsign += 1
try {
Window.prototype.PERSISTENT
endsign += 1
} catch {
console.log('Window.prototype.PERSISTENT 可以被检测');
}
}
}
test_document_activeElement()
function test_settime() {
//setimetime检测
var testTimeList = []
var testTimeList2 = []
var testTimeList3 = []
setTimeout(function () {
testTimeList.push(1)
}, 100)
//电池检测
try {
if (navigator.getBattery().__proto__ + '' == '[object Promise]') {
if (navigator.getBattery().then().__proto__ + '' == '[object Promise]') {
navigator.getBattery()
.then(function (res) {
endsign += 0
if (testTimeList.length > 0) {
endsign += 0
console.log(`setTimeout 可以被检测`);
}
if (res.level) {
}
else {
console.log(`navigator.getBattery() level可以被检测`);
}
})
} else {
console.log('navigator.getBattery() then可以被检测');
}
} else {
console.log('navigator.getBattery() 可以被检测');
}
} catch {
log(`navigator.getBattery 未实现`,)
}
setTimeout(function () {
if (testTimeList.length) {
endsign += '5_'
if (testTimeList2.length) {
console.log(`setTimeout0 可以被检测`);
}
} else {
console.log(`setTimeout1 可以被检测`);
}
}, 100)
setTimeout(function () {
testTimeList2.push(1)
if (testTimeList.length) {
endsign += '6_'
testTimeList2.push(1)
} else {
console.log(`setTimeout2 可以被检测`);
}
}, 200)
setTimeout(function () {
if (testTimeList2.length) {
endsign += '7_'
} else {
console.log(`setTimeout3 可以被检测`);
}
}, 200)
setTimeout(function () {
endsign += '9_'
testTimeList3.push(1)
}, 200)
setInterval(function () {
endsign += '9__'
testTimeList3.push(1)
}, 700)
clearTimeout(5)
clearTimeout(6)
setTimeout(function () {
endsign += 'A'
if (testTimeList3.length > 0) {
console.log(`clearTimeout 可以被检测`);
}
console.log(btoa(endsign))
}, 200)
}
test_settime()
function test_window_location() {
if (Object.getOwnPropertyDescriptor(window, 'location').configurable) {
console.log(`window location 被检测`);
} else {
endsign += 'location'
}
}
test_window_location()
function test_font_fp() {
let fonts = [];
let testFont = "DFPhelvetica;Tibetan Machine Uni;Cooljazz;Verdana;Helvetica Neue LT Pro 35 Thin;tahoma;LG Smart_H test Regular;DINPro-light;Helvetica LT 43 Light Extended;HelveM_India;SECRobotoLight Bold;OR Mohanty Unicode Regular;Droid Sans Thai;Kannada Sangam MN;DDC Uchen;clock2016_v1.1;SamsungKannadaRegular;MI LANTING Bold;SamsungSansNum3L Light;verdana;HelveticaNeueThin;SECFallback;SamsungEmoji;Telugu Sangam MN;Carrois Gothic SC;Flyme Light Roboto Light;SoMA-Digit Light;SoMC Sans Regular;HYXiYuanJ;sst;samsung-sans-num4T;gm_mengmeng;Lohit Kannada;times new roman;samsung-sans-num4L;serif-monospace;SamsungSansNum-3T Thin;ColorOSUI-XThin;Droid Naskh Shift Alt;SamsungTeluguRegular;Bengali OTS;MI LanTing_GB Outside YS;FZMiaoWu_GB18030;helve-neue-regular;SST Medium;Courier New;Khmer Mondulkiri Bold;Helvetica LT 23 Ultra Light Extended;Helvetica LT 25 Ultra Light;Roboto Medium;Droid Sans Bold;goudy;sans-serif-condensed-light;SFinder;noto-sans-cjk-medium;miui;MRocky PRC Bold;AndroidClock Regular;SamsungSansNum-4L Light;sans-serif-thin;AaPangYaer;casual;BN MohantyOT Bold;x-sst;NotoSansMyanmarZawgyi;Helvetica LT 33 Thin Extended;AshleyScriptMT Alt;Noto Sans Devanagari UI;Roboto Condensed Bold;Roboto Medium Italic;miuiex;Noto Sans Gurmukhi UI;SST Vietnamese Light;LG_Oriya;hycoffee;x-sst-ultralight;DFHeiAW7-A;FZZWXBTOT_Unicode;Devanagari Sangam MN Bold;sans-serif-monospace;Padauk Book Bold;LG-FZYingBiKaiShu-S15-V2.2;LG-FZYingBiKaiShu-S15-V2.3;HelveticaNeueLT Pro 35 Th;Microsoft Himalaya;SamsungSansFallback;SST Medium Italic;AndroidEmoji;SamsungSansNum-3R;ITC Stone Serif;sans-serif-smallcaps;x-sst-medium;LG_Sinhalese;Roboto Thin Italic;century-gothic;Clockopia;Luminous_Sans;Floridian Script Alt;Noto Sans Gurmukhi Bold;LTHYSZK Bold;GS_Thai;SamsungNeoNum_3T_2;Arabic;hans-sans-normal;Lohit Telugu;HYQiHei-50S Light;Lindsey for Samsung;AR Crystalhei DB;Samsung Sans Medium;samsung-sans-num45;hans-sans-bold;Luminous_Script;SST Condensed;SamsungDevanagariRegular;Anjal Malayalam MN;SamsungThai(test);FZLanTingHei-M-GB18030;Hebrew OTS;GS45_Arab(AndroidOS);Samsung Sans Light;Choco cooky;helve-neue-thin;PN MohantyOT Medium;LG-FZKaTong-M19-V2.4;Droid Serif;SamsungSinhalaRegular;helvetica;LG-FZKaTong-M19-V2.2;Noto Sans Devanagari UI Bold;SST Light;DFPEmoji;weatherfontnew Regular;RobotoNum3R;DINPro-medium;Samsung Sans Num55;SST Heavy Italic;LGlock4 Regular_0805;Georgia;noto-sans-cjk;Telugu Sangam MN Bold;MIUI EX Normal;HYQiHei-75S Bold;NotoSansMyanmarZawgyi Bold;yunospro-black;helve-neue-normal;Luminous_Serif;TM MohantyOT Normal;SamsungSansNum-3Lv Light;Samsung Sans Num45;SmartGothic Medium;georgia;casual-font-type;Samsung Sans Bold;small-capitals;MFinance PRC Bold;FZLanTingHei_GB18030;SamsungArmenian;Roboto Bold;century-gothic-bold;x-sst-heavy;SST Light Italic;TharLon;x-sst-light;Dinbol Regular;SamsungBengaliRegular;KN MohantyOTSmall Medium;hypure;SamsungTamilRegular;Malayalam Sangam MN;Noto Sans Kannada UI;helve-neue;Helvetica LT 55 Roman;Noto Sans Kannada Bold;Sanpya;SamsungPunjabiRegular;samsung-sans-num4Lv;LG_Kannada;Samsung Sans Regular;Zawgyi-One;Droid Serif Bold Italic;FZKATJW;courier new;SamsungEmojiRegular;MIUI EX Bold;Android Emoji;Noto Naskh Arabic UI;LCD Com;Futura Medium BT;Vivo-extract;Bangla Sangam MN Bold;hans-sans-regular;SNum-3R;SNum-3T;hans-sans;SST Ultra Light;Roboto Regular;Roboto Light;Hanuman;newlggothic;DFHeiAW5-A;hans-sans-light;Plate Gothic;SNum-3L;Helvetica LT 45 Light;Myanmar Sangam Zawgyi Bold;lg-sans-serif-light;MIUI EX Light;Roboto Thin;SoMA Bold;Padauk;Samsung Sans;Spacious_SmallCap;sans-serif;DV MohantyOT Medium;Stable_Slap;monaco;Flyme-Light;fzzys-dospy;ScreenSans;clock2016;Roboto Condensed Bold Italic;Arial;KN Mohanty Medium;MotoyaLMaru W3 mono;Handset Condensed;Roboto Italic;HTC Hand;SST Ultra Light Italic;SST Vietnamese Roman;Noto Naskh Arabic UI Bold;chnfzxh-medium;SNumCond-3T;century-gothic-regular;default_roboto-light;Noto Sans Myanmar;Myanmar Sangam MN;Apple Color Emoji;weatherfontReg;SamsungMalayalamRegular;arial;Droid Serif Bold;CPo3 PRC Bold;MI LANTING;SamsungKorean-Regular;test45 Regular;spirit_time;Devanagari Sangam MN;ScreenSerif;Roboto;cursive-font-type;STHeiti_vivo;chnfzxh;Samsung ClockFont 3A;Roboto Condensed Regular;samsung-neo-num3R;GJ MohantyOT Medium;Chulho Neue Lock;roboto-num3L;helve-neue-ultraLightextended;SamsungOriyaRegular;SamsungSansNum-4Lv Light;MYingHei_18030_C2-Bold;DFPShaoNvW5-GB;Roboto Black;helve-neue-ultralight;gm_xihei;LGlock4 Light_0805;Gujarati Sangam MN;Malayalam Sangam MN Bold;roboto-num3R;STXihei_vivo;FZZhunYuan_GB18030;noto-sans-cjk-light;coloros;Noto Sans Gurmukhi;Noto Sans Symbols;Roboto Light Italic;Lohit Tamil;cursive;default_roboto;BhashitaComplexSans Bold;LG_Number_Roboto Thin;monospaced-without-serifs;Helvetica LT 35 Thin;samsung-sans-num3LV;DINPro;Jomolhari;sans-serif-light;helve-neue-black;Lohit Bengali;Myanmar Sangam Zawgyi;Droid Serif Italic;Roboto Bold Italic;NanumGothic;Sony Mobile UD Gothic Regular;Georgia Bold Italic;samsung-sans-num3Lv;yunos-thin;samsung-neo-num3T-cond;Noto Sans Myanmar UI Bold;lgserif;FZYouHei-R-GB18030;Lohit Punjabi;baskerville;samsung-sans-num4Tv;samsung-sans-thin;LG Emoji;AnjaliNewLipi;SamsungSansNum-4T Thin;SamsungKorean-Bold;miuiex-light;Noto Sans Kannada;Roboto Normal Italic;Georgia Italic;sans-serif-medium;Smart Zawgyi;Roboto Condensed Italic;Noto Sans Kannada UI Bold;DFP Sc Sans Heue30_103;LG_Number_Roboto Bold;Padauk Book;x-sst-condensed;Sunshine-Uchen;Roboto Black Italic;Ringo Color Emoji;Devanagari OTS;Smart Zawgyi Pro;FZLanTingHei-M-GBK;AndroidClock-Large Regular;proportionally-spaced-without-serifs;Cutive Mono;times;LG Smart_H test Bold;DINPro-Light;sans-serif-black;Lohit Devanagari;proportionally-spaced-with-serifs;samsung-sans-num3L;MYoung PRC Medium;DFGothicPW5-BIG5HK-SONY;hans-sans-medium;SST Heavy;LG-FZZhunYuan-M02-V2.2;MyanmarUNew Regular;Noto Naskh Arabic Bold;SamsungGujarathiRegular;fantasy;helve-neue-light;Helvetica Neue OTS Bold;noto-sans-cjk-bold;samsung-sans-num3R;Lindsey Samsung;samsung-sans-num3T;ScreenSerifMono;ETrump Myanmar_ZW;helve-neue-thinextended;Noto Naskh Arabic;LG_Gujarati;Smart_Monospaced;Tamil Sangam MN;LG Emoji NonAME;Roboto Condensed Light Italic;gm_jingkai;FZLanTingKanHei_GB18030;lgtravel;palatino;Georgia Bold;Droid Sans;LG_Punjabi;SmartGothic Bold;Samsung Sans Thin;SST Condensed Bold;Comics_Narrow;courier;Oriya Sangam MN;helve-neue-lightextended;FZLanTingHei-R-GB18030;AR CrystalheiHKSCS DB;serif;RTWSYueRoudGoG0v1-Regular;MiaoWu_prev;FZY1K;LG_Number_Roboto Regular;AndroidClock;SoMA Regular;HYQiHei-40S Lightx;lg-sans-serif;Dancing Script Bold;default;sec-roboto-light;ColorOSUI-Regular;test Regular;Tamil Sangam MN Bold;FZYingBiXingShu-S16;RobotoNum3L Light;monospaced-with-serifs;samsung-sans-num35;Cool jazz;SamsungNeoNum-3L;STXingkai;ScreenSansMono;DFPWaWaW5-GB;SamsungSansNum-3L Light;Bangla Sangam MN;Gurmukhi Sangam MN;SECRobotoLight;hyfonxrain;MYingHeiGB18030C-Bold;samsung-sans-light;Helvetica LT 65 Medium;Droid Sans Fallback;Roboto Test1 Bold;Noto Sans Myanmar Bold;sans-serif-condensed-custom;SamsungNeoNum-3T;Samsung Sans Num35;monospace;TL Mohanty Medium;helve-neue-medium;LTHYSZK;Roboto Condensed custome Bold;Myanmar3;Droid Sans Devanagari;ShaoNv_prev;samsung-neo-num3L;FZLanTingHei-EL-GBK;yunos;samsung-neo-num3T;Times New Roman;helve-neue-bold;noto-sans-cjk-regular;Noto Sans Gurmukhi UI Bold;DINPro-black;FZLanTingHei-EL-GB18030;SST Vietnamese Medium;Roboto Condensed Light;SST Vietnamese Bold;AR DJ-KK;Droid Sans SEMC;Noto Sans Myanmar UI;Coming Soon;MYuppy PRC Medium;Rosemary;Lohit Gujarati;Roboto Condensed custom Bold;FZLanTingHeiS-R-GB;Helvetica Neue OTS;Kaiti_prev;Roboto-BigClock;FZYBKSJW;Handset Condensed Bold;SamsungGeorgian;Dancing Script;sans-serif-condensed;hans-sans-thin;SamsungSansNum-4Tv Thin;Lohit Odia;BhashitaComplexSans".split(';')
let divTag = document.createElement("div");
divTag.innerHTML = 'fontTest';
document.body.appendChild(divTag);
let span = divTag.children[0];
let w = span.offsetWidth;
let h = span.offsetHeight;
for (let i = 0; i < testFont.length; i++) {
span.style.fontFamily = testFont[i];
if (w !== span.offsetWidth || h !== span.offsetHeight) {
fonts.push(testFont[i]);
}
}
let result = btoa(fonts.toString());
// console.log(result);
if (result == 'VmVyZGFuYSxIZWx2ZXRpY2EgTmV1ZSBMVCBQcm8gMzUgVGhpbix0YWhvbWEsdmVyZGFuYSx0aW1lcyBuZXcgcm9tYW4sQ291cmllciBOZXcsTWljcm9zb2Z0IEhpbWFsYXlhLGhlbHZldGljYSxMRy1GWkthVG9uZy1NMTktVjIuMixHZW9yZ2lhLGdlb3JnaWEsY291cmllciBuZXcsQXJpYWwsYXJpYWwsY3Vyc2l2ZSx0aW1lcyxmYW50YXN5LGNvdXJpZXIsc2VyaWYsbW9ub3NwYWNlLFRpbWVzIE5ldyBSb21hbg==') {
endsign = endsign + result
} else {
console.log(`字体指纹被检测`);
}
}
test_font_fp()
function test_getElementsByTagName() {
let divHTMLCollection = document.getElementsByTagName('div')
let bobocollect = divHTMLCollection.length
if (divHTMLCollection.__proto__ + '') {
if (divHTMLCollection[0].parentNode.parentNode.parentNode.nodeName == '#document') {
if (
divHTMLCollection[0].parentNode.parentNode.parentNode.parentNode == null
) {
endsign += 'B'
} else {
console.log(`divHTMLCollection[0].parentNode.parentNode.parentNode.parentNode 可以被检测`);
}
} else {
console.log(`divHTMLCollection[0].parentNode.parentNode.parentNode.nodeName=='#document' 可以被检测`);
}
if (
divHTMLCollection[0].parentElement.parentElement.parentElement == null
) {
endsign += 'C'
} else {
console.log(`divHTMLCollection[0].parentElement.parentElement.parentElement 可以被检测`);
}
divHTMLCollection[0].parentNode.removeChild(divHTMLCollection[0])
divHTMLCollection[0].parentNode.removeChild(divHTMLCollection[0])
if (bobocollect > divHTMLCollection.length) {
endsign += 'D'
} else {
console.log(`divHTMLCollection[0].parentNode.removeChild 可以被检测`);
}
if (divHTMLCollection[0].innerHTML.indexOf('bobo2') > 0) {
endsign += 'D'
} else {
console.log(`divHTMLCollection[0].innerHTML 可以被检测`);
}
} else {
console.log(`document.getElementsByTagName 原型可以被检测`);
}
}
test_getElementsByTagName()
function test_obj_proto() {
try {
var bobo__ = {}
bobo__.__proto__ = location
bobo__.href
console.log(`bobo__={};bobo__.__proto__=location 可以被检测`);
} catch {
endsign += 'E'
}
try {
var bobo__2 = {}
bobo__2.__proto__ = Document.prototype
bobo__2.activeElement
console.log(`bobo__2={};bobo__2.__proto__=Document.prototype 可以被检测`);
} catch {
endsign += 'F'
}
}
function test_tostring() {
//tostring检测
if (console.log + '' == 'function log() { [native code] }' || console.log.toString().toString() == 'function log() { [native code] }') {
endsign += 'G'
} else {
console.log(`console.log tostring 可以被检测 `)
}
}
test_tostring()
function test_getOwnPropertyDescriptor() {
if (Object.getOwnPropertyDescriptor(window, 'document').set) {
console.log(`Object.getOwnPropertyDescriptor(window,'document') 可以被检测`);
} else {
endsign += 'h'
let get_name = Object.getOwnPropertyDescriptor(window, 'document').get + ''
if (get_name == 'function get document() { [native code] }') {
endsign += 'I'
} else {
console.log(`Object.getOwnPropertyDescriptor(window,'document').get 可以被检测`);
}
}
try {
Object.getOwnPropertyDescriptor(window, 'document').get()
console.log(`Object.getOwnPropertyDescriptor(window,'document').get() 可以被检测`);
} catch {
endsign += 'J'
}
}
test_getOwnPropertyDescriptor()
function test_node() {
// delete globalThis[Symbol.toStringTag];
try { if (global) { console.log(`global 被检测`); } } catch { try { if (GLOBAL) { console.log(`GLOBAL 被检测`); } } catch { try { if (Buffer) { console.log(`Buffer 被检测`); } } catch { try { if (process) { console.log(`process 被检测`); } } catch { try { if (root) { console.log(`root 被检测`); } } catch { try { if (WindowProperties) { console.log(`WindowProperties 被检测`); } } catch { try { if (global) { console.log(`global 被检测`); } } catch { try { if (global) { console.log(`global 被检测`); } } catch { try { if (global) { console.log(`global 被检测`); } } catch { try { if (VMError) { console.log(`VMError 被检测`); } } catch { try { } catch { try { } catch { } } } } } } } } } } } }
if (Object.getOwnPropertyDescriptor(window, 'Function').value + '' == 'function Function() { [native code] }') {
} else {
console.log(`Object.getOwnPropertyDescriptor(window,'Function').value +'' 可以被检测`);
}
}
test_node()
function test_createEvent() {
var MouseEvent__ = document.createEvent("MouseEvent");
if (MouseEvent__ && MouseEvent__.__proto__ + '' == '[object MouseEvent]') {
} else {
console.log(`document.createEvent("MouseEvent"); 可以被检测`);
}
if (Object.getOwnPropertySymbols(navigator.getBattery()).length > 0) {
console.log(`Object.getOwnPropertySymbols(navigator.getBattery()) 可以被检测`);
}
}
test_createEvent()
//plugin检测
function test_plugin() {
if (navigator.plugins[0][0] == '[object MimeType]') {
} else {
console.log(`navigator.plugins[0][0] 可以被检测`);
}
}
test_plugin(
)
function test_this(){
let test__=function (){}
Object.defineProperty(this,test__,{
configurable:true,
enumerable:true,
writable:true,
})
if(test__ +'' =='function (){}'){
}else{
console.log(`test_this 可以被检测`);
}
}
test_this()
function test_append(){
var bbb=document.createElement('div')
let aaa=document.body.append(bbb)
if (aaa){
console.log(`document.body.append 可以被检测`);
}
let cccc=document.body.appendChild(bbb)
if (cccc=undefined){
console.log(`document.body.append 可以被检测`);
}
}
test_append()
function test_unscopables(){
if (window.Element.prototype[Symbol.unscopables].after){
}else{
console.log(`window.Element.prototype[Symbol.unscopables].after 可以被检测`);
}
}
test_unscopables()
// r6检测
function _testform(){
from = document.createElement("form")
from.id = '__Zm9ybS5pZAo__'
from.action = 'https://ucenter.miit.gov.cn/login.jsp'
input1 = document.createElement("input")
input1.id = 'username'
input1.content = 'action'
input1.name = 'action'
from.appendChild(input1)
var ccc=from.action
console.log(ccc)
}
_testform()
function test_define(){
var aaa=Object.defineProperty(document.documentElement.children, 0,{value:10})
if (aaa[0] instanceof HTMLHeadElement){
}else{
console.log(`Object.defineProperty(document.documentElement.children, 0,{value:10}) 被检测`);
}
}
function test_this(){
function s(){}
var aaaa=Object.getOwnPropertyDescriptors(this).s.configurable
if (aaaa){
console.log(`Object.getOwnPropertyDescriptors(this).s.configurable 可以被检测`)
}else{
}
}
test_this()
function test_entries(){
let list_=Object.entries(Document)
if (list_.length >0){
console.log(`Object.entries(Document) 可以被检测`);
}
}
test_entries()
function window_require(){
let require=window.require
if (require){
console.log(`window.require 可以被检测`);
}
}
window_require()
function test_action(){
let form = document.createElement("form");
let input1 = document.createElement("input");
input1.id = "username";
input1.content = "action";
input1.name = "action";
form.appendChild(input1);
let input2 = document.createElement("input");
input2.name = "textContent";
input2.id = "password";
form.appendChild(input2);
let input3 = document.createElement("input");
input3.id = "innerText";
input3.type = "submit";
input3.name = "id";
form.appendChild(input3);
a = form.action;
b = form.textContent;
c = form.id;
d = form.innerText;
if (a.name=='action' && a.id=='username' && b.name=='textContent' && b.id=='password' && c.id==innerText && c.name=='id' && d.id=='innerText' && d.name=='id'){
}else{
console.log(`test_action 可以被检测`);
}
}
test_action()