检测属性长度,根据长度判断数据是否正确
location = {}
location.href = 'https://www.baidu.com'
function ps() {
if (location['href'].length > 3) { // 检测属性长度,根据长度判断数据是否正确
return 'hello world'
} else {
return '失败'
}
}
console.log(ps());
检测代码执行环境是否存在navigator
// 检测代码执行环境是否存在navigator
navigator = {}
navigator.userAgent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
function ps() {
if (navigator['userAgent']) {
return 'hello world'
} else {
return '失败'
}
}
console.log(ps());
异常捕获打印日志信息
location = {}
location.host = '8888'
navigator = {}
navigator.userAgent = 'asd'
function pn() {
try {
console.log(verify_local());
if (navigator['userAgent']) {
return 'hello world'
}
} catch (e) {
console.log(e) // 输出错误日志
return '错误的数据'
}
}
function verify_local() {
if (location.host.length > 2) {
return '浏览器环境...'
}
return '非浏览器环境...'
}
console.log(pn());
判断浏览器执行环境与node执行环境来验证是否为爬虫程序
// 浏览器和node差异
let browser_or_node = "undefined" != typeof exports ? exports : void 0
console.log(typeof browser_or_node);
// global检测
let glb = "undefined" == typeof window ? global : window
console.log(glb)
吐环境的脚本
function getEnv(proxy_array) {
for (let i = 0; i < proxy_array.length; i++) {
handler = `{
get: function(target, property, receiver) {
console.log('方法:get',' 对象:${proxy_array[i]}',' 属性:',property,' 属性类型:',typeof property,' 属性值类型:',typeof target[property]);
return target[property];
},
set: function(target, property, value, receiver){
console.log('方法:set',' 对象:${proxy_array[i]}',' 属性:',property,' 属性类型:',typeof property,' 属性值类型:',typeof target[property]);
return Reflect.set(...arguments);
}
}`;
eval(`
try {
${proxy_array[i]};
${proxy_array[i]} = new Proxy(${proxy_array[i]}, ${handler});
} catch (e) {
${proxy_array[i]} = {};
${proxy_array[i]} = new Proxy(${proxy_array[i]}, ${handler});
}
`);
}
}
proxy_array = ['window', 'document', 'location', 'navigator', 'history', 'screen','ctx.fillRect']
getEnv(proxy_array);
根据上面的脚本将环境补全小案例
window = global
window.addEventListener = function(){}
kw = {
getAttribute:function(){}
}
ctx = {
fillRect:function(){}
}
canvas = {
getContext:function(){
return ctx
}
}
document = {
getElementById:function(id){
if(id ==='kw'){
return kw
}
},
createElement:function(tagName){
if(tagName === 'canvas'){
return canvas
}
}
}
navigator = {
toString:function(){
return '[object Navigator]'
}
}
function get_sign() {
window.addEventListener("test")
let kw = document.getElementById("kw")
let _class = kw.getAttribute("class")
let canvas = document.createElement("canvas")
let ctx = canvas.getContext("2d");
ctx.fillRect(10, 10, 100, 100);
try {
if (navigator.toString() === '[object Navigator]') {
return btoa("admin") // 输出base64编码
} else {
return '假数据 - 1'
}
} catch (e) {
return '假数据 - 2'
}
}
console.log(get_sign())

996

被折叠的 条评论
为什么被折叠?



