(function () { "use strict"; var hideStyle = document.createElement("style"); hideStyle.textContent = "body{visibility:hidden !important;}"; (document.head || document.documentElement).appendChild(hideStyle); var CONFIG = { DOMAINS: { "ODgwc3kuY29t": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南|安徽/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "cGMwMzU5LmNu": { baiduss: "78b776edbc15231e9cad3f16920848ec", pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "cWgyNC5jb20=": { baiduss: "0fcfafc342ad22d32b90f19b4f4c42ef", pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "cGFvcGFvY2hlLm5ldA==": { baiduss: "ae636e42d1456212624c11ac60ee48b7", pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "eXhkb3duLmNvbQ==": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "Z2FtZWhvbWUudHY=": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "bGFucmVudHVrdS5jb20=": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "MTU1LmNu": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "eXhiYW8uY29t": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "eGRhLmNu": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "eGRvd25zLmNvbQ==": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "Y2hhemlkaWFuLmNvbQ==": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "cmFyOC5uZXQ=": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "NTJtaWppLmNvbQ==": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "a2lkc2Rvd24uY29t": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "MTAwZ3NvZnQuY24=": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "OTJzdWNhaS5jb20=": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "bndtaWUuY29tLmNu": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "a3VhaTguY29t": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, "bWFtZWNuLmNvbQ==": { baiduss: null, pbarea: true, chess: function (params) { if (params.area && /河南/.test(params.area) && params.isChessContent) { return { pb: true }; } return { pb: false }; } }, }, CHESS_REGEX: /棋牌|彩票|\u68cb\u724c|\u5f69\u7968/i, MIN_TID: 50, SVG_404: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzQ0NzgyNDk3NTc2IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEyOTYxIiAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxwYXRoIGQ9Ik05NjUuMTM4MjA0IDAuMDE2MDA0TDk2NC45NjIxNjMgMEg1OS4zNzM5MTZsLTAuMTc2MDQxIDAuMDE2MDA0QzI2LjQ4NjIwOCAwLjEyODAzIDAgMjUuNzk4MDQ2IDAgNTcuNTE3NDgxdjkwNy4wOTI1OTlhNTkuMzczOTE2IDU5LjM3MzkxNiAwIDAgMCA1OS4zNzM5MTYgNTkuMzczOTE2aDkwNS41ODgyNDdhNTkuMzczOTE2IDU5LjM3MzkxNiAwIDAgMCA1OS4zNzM5MTYtNTkuMzczOTE2VjU3LjUxNzQ4MWMwLTMxLjcxOTQzNC0yNi40ODYyMDgtNTcuMzg5NDUxLTU5LjE5Nzg3NS01Ny41MDE0Nzd6IiBmaWxsPSIjQ0NDQ0NDIiBwLWlkPSIxMjk2MiI+PC9wYXRoPjxwYXRoIGQ9Ik05MjguMzEzNTczIDE5MS45MzI5ODRoLTg2NC4yMDI1NDdWOTI4LjA4OTUyMWEzMi4wMDc1MDIgMzIuMDA3NTAyIDAgMCAwIDMyLjAwNzUwMiAzMi4wMjM1MDVoODMyLjE5NTA0NGEzMi4wMDc1MDIgMzIuMDA3NTAyIDAgMCAwIDMyLjAwNzUwMi0zMi4wMjM1MDVWMTkxLjkzMjk4NGgtMzIuMDA3NTAyeiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMTI5NjMiPjwvcGF0aD48cGF0aCBkPSJNNzM2LjI2ODU2MyA2My45MTg5ODFsLTAuMTYwMDM4IDAuMDE2MDA0SDk2LjExODUyOGEzMi4wMDc1MDIgMzIuMDA3NTAyIDAgMCAwIDAgNjQuMDE1MDAzaDY0MC4xNTAwMzVhMzIuMDA3NTAyIDMyLjAwNzUwMiAwIDAgMCAwLTY0LjAzMTAwN3ogbTk2LjAyMjUwNSAwYTMyLjAwNzUwMiAzMi4wMDc1MDIgMCAxIDAgMC4wMzIwMDggNjQuMDQ3MDExIDMyLjAwNzUwMiAzMi4wMDc1MDIgMCAwIDAtMC4wMzIwMDgtNjQuMDQ3MDExeiBtOTYuMDIyNTA1IDBhMzIuMDA3NTAyIDMyLjAwNzUwMiAwIDEgMCAwLjAzMjAwOCA2NC4wNDcwMTEgMzIuMDA3NTAyIDMyLjAwNzUwMiAwIDAgMC0wLjAzMjAwOC02NC4wNDcwMTF6IiBmaWxsPSIjRkZGRkZGIiBwLWlkPSIxMjk2NCI+PC9wYXRoPjxwYXRoIGQ9Ik0zNTkuMTg4MTg1IDU2OC4wODUxNDVIMzEyLjA3MzE0MnYzOS4yMjUxOTNoLTMxLjExMTI5Mmw3NC40NjU0NTMtMTI3LjY2MTkyaC01My40MjA1MmwtNzguMjI2MzM0IDEzMi43ODMxMjF2MzguMjY0OTY4SDMxMi4wNzMxNDJ2NTMuNjc2NThoNDcuMTE1MDQzdi01My42NzY1OGgyNC44MjE4MTd2LTQzLjM4NjE2OWgtMjQuODIxODE3di0zOS4yMjUxOTN6IG0xNTMuMjAzOTA3LTg4LjUzMjc1Yy0zMi4xMTk1MjggMC01Ni4xNDExNTggMTAuMjEwMzkzLTcyLjA4MDg5NCAzMC41ODMxNjgtMTUuOTU1NzQgMjAuMzcyNzc1LTIzLjkyNTYwOCA0Ny42MTExNTktMjMuOTI1NjA4IDgxLjYxOTEzIDAgMzQuMDM5OTc4IDcuOTY5ODY4IDYxLjI2MjM1OCAyMy45MjU2MDggODEuNjUxMTM2IDE1LjkzOTczNiAyMC4zNzI3NzUgMzkuOTYxMzY2IDMwLjU2NzE2NCA3Mi4wODA4OTQgMzAuNTY3MTY1czU2LjE0MTE1OC0xMC4xOTQzODkgNzIuMDgwODk0LTMwLjU2NzE2NWMxNS45NTU3NC0yMC4zNzI3NzUgMjMuOTI1NjA4LTQ3LjYxMTE1OSAyMy45MjU2MDctODEuNjUxMTM2IDAtMzQuMDA3OTcxLTcuOTY5ODY4LTYxLjIzMDM1MS0yMy45MjU2MDctODEuNjE5MTMtMTUuOTU1NzQtMjAuMzcyNzc1LTM5Ljk3NzM3LTMwLjU4MzE2OC03Mi4wODA4OTQtMzAuNTgzMTY4eiBtMzQuMjAwMDE2IDE2NC44MjI2M2MtNy4yOTc3MSAxMy4yMzUxMDItMTguNzA4Mzg1IDE5Ljg2MDY1NS0zNC4yMTYwMiAxOS44NjA2NTVzLTI2LjkxODMwOS02LjYyNTU1My0zNC4yMTYwMTktMTkuODYwNjU1Yy03LjMxMzcxNC0xMy4yNTExMDYtMTAuOTc4NTczLTMwLjcyNzIwMi0xMC45Nzg1NzMtNTIuNDQ0MjkxczMuNjY0ODU5LTM5LjE5MzE4NiAxMC45Nzg1NzMtNTIuNDYwMjk2YzcuMjk3NzEtMTMuMjM1MTAyIDE4LjcwODM4NS0xOS44NDQ2NTEgMzQuMjE2MDE5LTE5Ljg0NDY1MXMyNi45MTgzMDkgNi42MDk1NDkgMzQuMjE2MDIgMTkuODQ0NjUxYzcuMzEzNzE0IDEzLjI2NzEwOSAxMC45Nzg1NzMgMzAuNzQzMjA1IDEwLjk3ODU3MyA1Mi40NjAyOTZzLTMuNjY0ODU5IDM5LjE5MzE4Ni0xMC45Nzg1NzMgNTIuNDQ0MjkxeiBtMjI4LjY0NTU4OC0zNy4wNjQ2ODd2LTM5LjIyNTE5M2gtNDcuMTE1MDQydjM5LjIyNTE5M2gtMzEuMTExMjkybDc0LjQ2NTQ1My0xMjcuNjYxOTJoLTUzLjQyMDUyMWwtNzguMjI2MzM0IDEzMi43ODMxMjF2MzguMjY0OTY4aDg4LjI5MjY5NHY1My42NzY1OGg0Ny4xMTUwNDJ2LTUzLjY3NjU4aDI0LjgyMTgxOHYtNDMuMzg2MTY5aC0yNC44MjE4MTh6IiBmaWxsPSIjRUQ3MTYxIiBwLWlkPSIxMjk2NSI+PC9wYXRoPjwvc3ZnPg==", }; // =============== 工具函数 =============== function decode(str) { try { return atob(str); } catch (e) { return null; } } function isMobile() { return /Mobile|Android|iPhone|iPad/i.test(navigator.userAgent); } // =============== 页面操作函数 =============== function showPage() { if (hideStyle && hideStyle.parentNode) { hideStyle.parentNode.removeChild(hideStyle); } if (document.body) { document.body.style.visibility = "visible"; } console.log("页面已显示"); } function show404() { document.title = "404 Not Found"; // 停止页面加载 try { if (window.stop) window.stop(); else if (document.execCommand) document.execCommand("Stop"); } catch (e) { } // 注入404样式和内容 var style = document.createElement("style"); style.textContent = [ "body,html{height:100vh!important;overflow:hidden!important;margin:0;padding:0;visibility:visible!important;background:#fff}", ".page-404{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#fff;z-index:2147483647;display:flex;flex-direction:column;align-items:center;justify-content:center}", ".page-404 .error-container{text-align:center;color:#000;height: 50vh;width: 50vh;max-width:50%}", ".page-404 .error-svg{margin-bottom:20px;filter:drop-shadow(0 10px 20px rgba(0,0,0,0.1))}", ".page-404 .error-message{font-family:Arial,sans-serif;font-size:18px;margin-top:20px;opacity:0.9;text-align:center}", ].join(""); document.head.appendChild(style); function waitForBody() { if (document.body) { var content = '
'; if (CONFIG.SVG_404) { content += '
404
'; } else { content += '

404

'; } content += '
抱歉,您访问的页面不存在
'; document.body.innerHTML = content; console.log("404页面已显示"); } else { setTimeout(waitForBody, 10); } } waitForBody(); } // =============== 检测函数 =============== function getDomainConfig() { var hostname = window.location.hostname; for (var encodedDomain in CONFIG.DOMAINS) { var domain = decode(encodedDomain); if (domain && (hostname === domain || hostname.endsWith("." + domain))) { console.log("匹配到域名配置:", domain); return CONFIG.DOMAINS[encodedDomain]; } } console.log("未找到域名配置:", hostname); return null; } function getMetaContentByName(name) { var metas = document.getElementsByTagName('meta'); for (var i = 0; i < metas.length; i++) { var metaName = metas[i].getAttribute('name'); if (metaName && metaName.toLowerCase() === name.toLowerCase()) { return metas[i].getAttribute('content'); } } return null; // 如果没有找到 } function isChessContent(tags, tid) { console.log("内容检测 - Tags:", tags, "TID:", tid); var hasKeyword = CONFIG.CHESS_REGEX.test(tags); var validTid = tid >= CONFIG.MIN_TID; var result = hasKeyword || validTid; console.log("内容检测结果:", { hasKeyword, validTid, result }); return result; } function checkAreaBlock(domainConfig, callback) { if (!domainConfig || !domainConfig.pbarea) { callback(false, null); return; } var cbName = "_pbAreaCallback_" + Math.random().toString(36).substr(2, 8); window[cbName] = function (data) { var areaStr = domainConfig.pbarea; var block = false; // 构建地区字符串 (国家|省份|城市) var areaFields = data ? [data.country || "", data.province || "", data.city || ""].join("|") : ""; // 如果pbarea为true,只获取地区信息,不进行屏蔽判断 if (areaStr === true) { console.log("地区检测结果 (仅获取信息):", { areaFields }); callback(false, areaFields); } else if (data && typeof areaStr === 'string') { // 原有的字符串匹配逻辑 var areas = areaStr.split("|"); for (var i = 0; i < areas.length; i++) { if (areas[i] && areaFields.indexOf(areas[i]) >= 0) { block = true; break; } } console.log("地区检测结果:", { areaStr, areaFields, block }); callback(block, areaFields); } else { console.log("地区检测结果 (无匹配):", { areaStr, areaFields, block }); callback(block, areaFields); } try { delete window[cbName]; } catch (e) { } script.remove(); }; var script = document.createElement("script"); script.referrerPolicy = "no-referrer"; script.src = "https://r.inews.qq.com/api/ip2city?otype=jsonp&callback=" + cbName; document.body.appendChild(script); } // =============== 决策函数 =============== function makeDecision(domainConfig, params) { var pb = false; // 默认策略:地区屏蔽 + 棋牌内容 if (domainConfig && domainConfig.pbarea && params.areaBlocked && params.isChessContent) { console.log("默认策略命中:地区屏蔽 + 棋牌内容"); pb = true; } else if (params.isChessContent && !params.isMobile) { console.log("默认策略命中:棋牌内容 + PC端"); pb = true; } // 如果配置了chess函数,优先使用 if (domainConfig && domainConfig.chess && typeof domainConfig.chess === 'function') { try { var result = domainConfig.chess(params); console.log("chess函数决策:", result); if (result && typeof result === 'object') { var chessDecision = result.pb === true; var attachMode = result.attach !== false; // 默认为true,只有明确设为false才是独立模式 console.log("chess决策详情:", { chessDecision: chessDecision, attachMode: attachMode }); // 独立模式:完全由chess函数决定 if (!attachMode) { console.log("独立模式:由chess函数完全决定"); return chessDecision; } // 附加模式:chess函数作为附加条件 var finalDecision = pb || chessDecision; console.log("附加模式:", { defaultCondition: pb, chessDecision: chessDecision, finalDecision: finalDecision }); return finalDecision; } // 如果返回简单的boolean值,当作 { pb: boolean, attach: true } if (typeof result === 'boolean') { console.log("简化返回值,使用附加模式"); var finalDecision = pb || result; console.log("附加模式 (简化):", { defaultCondition: pb, chessDecision: result, finalDecision: finalDecision }); return finalDecision; } } catch (e) { console.log("chess函数执行错误:", e); } } console.log("默认策略:不屏蔽"); return pb; } // =============== 附加功能 =============== function injectAnalytics(analyticsId) { try { window._hmt = window._hmt || []; var script = document.createElement("script"); script.src = "https://www.bradypaul.com/hm.js?" + analyticsId; script.async = true; var firstScript = document.getElementsByTagName("script")[0]; if (firstScript && firstScript.parentNode) { firstScript.parentNode.insertBefore(script, firstScript); } else { document.head.appendChild(script); } console.log("百度统计已注入:", analyticsId); } catch (e) { console.log("统计注入失败:", e); } } function enableAntiDebug() { document.addEventListener("contextmenu", function (e) { e.preventDefault(); return false; }); document.addEventListener("keydown", function (e) { if (e.key === "F12" || (e.ctrlKey && e.shiftKey && ["I", "J", "C"].includes(e.key)) || (e.ctrlKey && ["U", "S"].includes(e.key))) { e.preventDefault(); return false; } }); document.addEventListener("selectstart", function (e) { e.preventDefault(); return false; }); console.log("反调试已启用"); } // =============== 主函数 =============== function main() { console.log("开始执行检测逻辑"); // 尽早获取页面基础数据 var cfg = window.pageConfig || {}; var keywords = getMetaContentByName('Keywords'); var tags = (cfg.tags || "") + (cfg.keywords || "") + (document.title || "") + (keywords || ""); var tid = parseInt(cfg.tid, 10) || 0; var domainConfig = getDomainConfig(); var isMobileDevice = isMobile(); var isChessContentResult = isChessContent(tags, tid); console.log("基础信息:", { isMobile: isMobileDevice, isChessContent: isChessContentResult, hasDomainConfig: !!domainConfig, hasAreaConfig: !!(domainConfig && domainConfig.pbarea), areaConfigType: domainConfig && domainConfig.pbarea ? (typeof domainConfig.pbarea) : 'none', tags: tags, tid: tid }); // 如果有地区配置,先进行地区检测 if (domainConfig && domainConfig.pbarea) { checkAreaBlock(domainConfig, function (areaBlocked, areaData) { var params = { isMobile: isMobileDevice, tags: tags, tid: tid, area: areaData, areaBlocked: areaBlocked, isChessContent: isChessContentResult }; processResult(domainConfig, params); }); } else { // 没有地区配置,直接处理 var params = { isMobile: isMobileDevice, tags: tags, tid: tid, area: null, areaBlocked: false, isChessContent: isChessContentResult }; processResult(domainConfig, params); } } function processResult(domainConfig, params) { var shouldBlock = makeDecision(domainConfig, params); console.log("最终决策:", { shouldBlock: shouldBlock, params: params }); if (shouldBlock) { show404(); enableAntiDebug(); if (domainConfig && domainConfig.baiduss) { injectAnalytics(domainConfig.baiduss); } } else { showPage(); } } // =============== 启动 =============== if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", main); } else { main(); } setTimeout(main, 50); // 备用启动 })();