<!-- 精创网络云防（www.jcwlyf.com）-->
<!DOCTYPE html>
<html><head><script src="/aa.js" type="text/javascript"></script><meta charset="utf-8"><title></title></head>
<body><h1 style="font-size: 10px;"> 吉祥坊首页平台</h1><script>
(function(){
var token="80628998a7b50b5a79319cfce10281ab";
var redirectUrl="/sitemap.xml";
var hmacSig="MZW2L86jYl4VMtwA";
var hmacTs="29838798";
var hmacSalt="26a9";
var powNonce="a96bfa4174676f236662ef00ccf645b6f7a058ba";
var powBits=parseInt("15",10)||15;

// 1. 基础环境检测
function checkBasicEnvironment(){
    try{
        var canvas=document.createElement("canvas");
        if(!canvas.getContext||!canvas.getContext("2d"))return false;
    }catch(e){return false}
    try{localStorage.setItem("_t_","t");localStorage.removeItem("_t_");}catch(e){return false}
    if(!window.screen||window.screen.width===undefined)return false;
    if(!window.navigator||!window.navigator.userAgent)return false;
    return true;
}

// 2. WebGL 指纹
function getWebGLFingerprint(){
    try{
        var canvas=document.createElement("canvas");
        var gl=canvas.getContext("webgl")||canvas.getContext("experimental-webgl");
        if(!gl)return null;
        var debugInfo=gl.getExtension("WEBGL_debug_renderer_info");
        if(debugInfo){
            return {
                vendor:gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL)||"unknown",
                renderer:gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL)||"unknown",
                version:gl.getParameter(gl.VERSION)||"unknown"
            };
        }
    }catch(e){}
    return null;
}

// 3. Canvas 指纹
function getCanvasFingerprint(){
    try{
        var canvas=document.createElement("canvas");
        canvas.width=300;
        canvas.height=150;
        var ctx=canvas.getContext("2d");
        ctx.fillStyle="#f60";
        ctx.fillRect(0,0,300,150);
        ctx.fillStyle="#069";
        ctx.font="14px Arial";
        ctx.fillText("fingerprint",50,50);
        ctx.fillText(navigator.userAgent.substring(0,20),50,80);
        return btoa(canvas.toDataURL()).substring(0,100);
    }catch(e){}
    return null;
}

// 4. 音频指纹
function getAudioFingerprint(){
    return new Promise(function(resolve){
        try{
            var AudioContext=window.AudioContext||window.webkitAudioContext;
            if(!AudioContext){resolve(null);return}
            var ctx=new AudioContext();
            var oscillator=ctx.createOscillator();
            var analyser=ctx.createAnalyser();
            oscillator.connect(analyser);
            analyser.connect(ctx.destination);
            oscillator.type="triangle";
            oscillator.frequency.value=440;
            oscillator.start(0);
            var data=new Uint8Array(analyser.frequencyBinCount);
            analyser.getByteFrequencyData(data);
            var hash=Array.from(data.slice(0,100)).join(",");
            oscillator.stop();
            ctx.close();
            resolve(hash.substring(0,200));
        }catch(e){resolve(null)}
    });
}

// 5. 字体检测
function getFontFingerprint(){
    var fonts=[
        "Arial","Helvetica","Times New Roman","Courier New","Verdana",
        "Georgia","Comic Sans MS","Trebuchet MS","Impact","monospace",
        "sans-serif","serif","Microsoft YaHei","PingFang SC","SimHei"
    ];
    var canvas=document.createElement("canvas");
    var ctx=canvas.getContext("2d");
    var detected=[];
    var baseWidth=ctx.measureText("mmmmmmmmmmlli").width;
    for(var i=0;i<fonts.length;i++){
        ctx.font="20px "+fonts[i];
        var width=ctx.measureText("mmmmmmmmmmlli").width;
        if(width!==baseWidth)detected.push(fonts[i]);
    }
    return detected.join(",");
}

// 6. 插件检测
function getPluginsFingerprint(){
    var plugins=[];
    if(navigator.plugins){
        for(var i=0;i<navigator.plugins.length;i++){
            plugins.push(navigator.plugins[i].name);
        }
    }
    return plugins.join(",");
}

// 7. 无头浏览器检测
function checkHeadless(){
    var checks={}
    checks.languages=navigator.languages&&navigator.languages.length===0;
    checks.webdriver=navigator.webdriver===true;
    checks.chrome=navigator.userAgent.indexOf("Headless")>-1;
    checks.plugins=navigator.plugins.length===0;
    checks.language=navigator.language==="";
    checks.maxTouchPoints=navigator.maxTouchPoints===0;
    checks.phantom=!!window.callPhantom||!!window._phantom;
    checks.selenium=!!window.document.documentElement.getAttribute("webdriver");
    return checks;
}

// 8. 行为特征收集（鼠标移动）
var mouseMovements=[];
var mouseStartTime=Date.now();
document.addEventListener("mousemove",function(e){
    mouseMovements.push({
        x:e.clientX,
        y:e.clientY,
        t:Date.now()-mouseStartTime
    });
    if(mouseMovements.length>50)mouseMovements.shift();
});

// 9. 页面停留时间
var pageStartTime=Date.now();

// 10. 请求时序检测
var requestTiming={};
try{
    requestTiming={
        fetchStart:performance.timing.fetchStart,
        navigationStart:performance.timing.navigationStart,
        domLoading:performance.timing.domLoading,
        domInteractive:performance.timing.domInteractive
    };
}catch(e){}


// ---- MD5（内联实现，无外部依赖；输入限 ASCII）----
function add32(a,b){return (a+b)&0xFFFFFFFF;}
function cmn(q,a,b,x,s,t){a=add32(add32(a,q),add32(x,t));return add32((a<<s)|(a>>>(32-s)),b);}
function ff(a,b,c,d,x,s,t){return cmn((b&c)|((~b)&d),a,b,x,s,t);}
function gg(a,b,c,d,x,s,t){return cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function hh(a,b,c,d,x,s,t){return cmn(b^c^d,a,b,x,s,t);}
function ii(a,b,c,d,x,s,t){return cmn(c^(b|(~d)),a,b,x,s,t);}
function md5cycle(x,k){
  var a=x[0],b=x[1],c=x[2],d=x[3];
  a=ff(a,b,c,d,k[0],7,-680876936);d=ff(d,a,b,c,k[1],12,-389564586);c=ff(c,d,a,b,k[2],17,606105819);b=ff(b,c,d,a,k[3],22,-1044525330);
  a=ff(a,b,c,d,k[4],7,-176418897);d=ff(d,a,b,c,k[5],12,1200080426);c=ff(c,d,a,b,k[6],17,-1473231341);b=ff(b,c,d,a,k[7],22,-45705983);
  a=ff(a,b,c,d,k[8],7,1770035416);d=ff(d,a,b,c,k[9],12,-1958414417);c=ff(c,d,a,b,k[10],17,-42063);b=ff(b,c,d,a,k[11],22,-1990404162);
  a=ff(a,b,c,d,k[12],7,1804603682);d=ff(d,a,b,c,k[13],12,-40341101);c=ff(c,d,a,b,k[14],17,-1502002290);b=ff(b,c,d,a,k[15],22,1236535329);
  a=gg(a,b,c,d,k[1],5,-165796510);d=gg(d,a,b,c,k[6],9,-1069501632);c=gg(c,d,a,b,k[11],14,643717713);b=gg(b,c,d,a,k[0],20,-373897302);
  a=gg(a,b,c,d,k[5],5,-701558691);d=gg(d,a,b,c,k[10],9,38016083);c=gg(c,d,a,b,k[15],14,-660478335);b=gg(b,c,d,a,k[4],20,-405537848);
  a=gg(a,b,c,d,k[9],5,568446438);d=gg(d,a,b,c,k[14],9,-1019803690);c=gg(c,d,a,b,k[3],14,-187363961);b=gg(b,c,d,a,k[8],20,1163531501);
  a=gg(a,b,c,d,k[13],5,-1444681467);d=gg(d,a,b,c,k[2],9,-51403784);c=gg(c,d,a,b,k[7],14,1735328473);b=gg(b,c,d,a,k[12],20,-1926607734);
  a=hh(a,b,c,d,k[5],4,-378558);d=hh(d,a,b,c,k[8],11,-2022574463);c=hh(c,d,a,b,k[11],16,1839030562);b=hh(b,c,d,a,k[14],23,-35309556);
  a=hh(a,b,c,d,k[1],4,-1530992060);d=hh(d,a,b,c,k[4],11,1272893353);c=hh(c,d,a,b,k[7],16,-155497632);b=hh(b,c,d,a,k[10],23,-1094730640);
  a=hh(a,b,c,d,k[13],4,681279174);d=hh(d,a,b,c,k[0],11,-358537222);c=hh(c,d,a,b,k[3],16,-722521979);b=hh(b,c,d,a,k[6],23,76029189);
  a=hh(a,b,c,d,k[9],4,-640364487);d=hh(d,a,b,c,k[12],11,-421815835);c=hh(c,d,a,b,k[15],16,530742520);b=hh(b,c,d,a,k[2],23,-995338651);
  a=ii(a,b,c,d,k[0],6,-198630844);d=ii(d,a,b,c,k[7],10,1126891415);c=ii(c,d,a,b,k[14],15,-1416354905);b=ii(b,c,d,a,k[5],21,-57434055);
  a=ii(a,b,c,d,k[12],6,1700485571);d=ii(d,a,b,c,k[3],10,-1894986606);c=ii(c,d,a,b,k[10],15,-1051523);b=ii(b,c,d,a,k[1],21,-2054922799);
  a=ii(a,b,c,d,k[8],6,1873313359);d=ii(d,a,b,c,k[15],10,-30611744);c=ii(c,d,a,b,k[6],15,-1560198380);b=ii(b,c,d,a,k[13],21,1309151649);
  a=ii(a,b,c,d,k[4],6,-145523070);d=ii(d,a,b,c,k[11],10,-1120210379);c=ii(c,d,a,b,k[2],15,718787259);b=ii(b,c,d,a,k[9],21,-343485551);
  x[0]=add32(a,x[0]);x[1]=add32(b,x[1]);x[2]=add32(c,x[2]);x[3]=add32(d,x[3]);
}
function md5blk(s){
  var md5blks=[],i;
  for(i=0;i<64;i+=4){
    md5blks[i>>2]=s.charCodeAt(i)+(s.charCodeAt(i+1)<<8)+(s.charCodeAt(i+2)<<16)+(s.charCodeAt(i+3)<<24);
  }
  return md5blks;
}
function md51(s){
  var n=s.length,state=[1732584193,-271733879,-1732584194,271733878],i;
  for(i=64;i<=n;i+=64){md5cycle(state,md5blk(s.substring(i-64,i)));}
  s=s.substring(i-64);
  var tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
  for(i=0;i<s.length;i++){tail[i>>2]|=s.charCodeAt(i)<<((i%4)<<3);}
  tail[i>>2]|=0x80<<((i%4)<<3);
  if(i>55){md5cycle(state,tail);tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];}
  tail[14]=n*8;
  md5cycle(state,tail);
  return state;
}
function hex(x){
  var hc="0123456789abcdef",s="",j;
  for(j=0;j<4;j++){s+=hc.charAt((x>>(j*8+4))&0x0F)+hc.charAt((x>>(j*8))&0x0F);}
  return s;
}
function md5hex(s){
  var st=md51(s),out="",i;
  for(i=0;i<4;i++){out+=hex(st[i]);}
  return out;
}

// ---- PoW 求解：md5(nonce:counter) 前 powBits 位为 0 ----
function solvePow(){
  return new Promise(function(resolve){
    var full=Math.floor(powBits/4),rem=powBits%4;
    var prefix="";for(var p=0;p<full;p++){prefix+="0";}
    function ok(h){
      if(h.substring(0,full)!==prefix)return false;
      if(rem>0){var nib=parseInt(h.charAt(full),16);if(isNaN(nib)||nib>=(1<<(4-rem)))return false;}
      return true;
    }
    var c=0;
    function work(){
      var end=c+8192;
      while(c<end){
        if(ok(md5hex(powNonce+":"+c))){return resolve(c);}
        c++;
      }
      setTimeout(work,0);
    }
    work();
  });
}

// 执行检测并提交
async function collectAndSubmit(){
    var powCounter=await solvePow();
    var stayTime=Date.now()-pageStartTime;
    var audioFp=await getAudioFingerprint();
    
    var fingerprint={
        basic:checkBasicEnvironment(),
        webgl:getWebGLFingerprint(),
        canvas:getCanvasFingerprint(),
        audio:audioFp,
        fonts:getFontFingerprint(),
        plugins:getPluginsFingerprint(),
        headless:checkHeadless(),
        screen:screen.width+"x"+screen.height+"x"+screen.colorDepth,
        timezone:new Date().getTimezoneOffset(),
        language:navigator.language,
        platform:navigator.platform,
        hardwareConcurrency:navigator.hardwareConcurrency||0,
        deviceMemory:navigator.deviceMemory||0,
        maxTouchPoints:navigator.maxTouchPoints||0,
        doNotTrack:navigator.doNotTrack||"unspecified",
        mouseMovements:mouseMovements.slice(0,20),
        stayTime:stayTime,
        requestTiming:requestTiming,
        timestamp:Date.now(),
    };
    
    document.cookie="smart_js_token="+token+";path=/;max-age=300;SameSite=Strict";
    
    fetch("/smartverify",{
        method:"POST",
        headers:{"Content-Type":"application/json","X-Token":token},
        body:JSON.stringify({
            t:token,
            fp:fingerprint,
            sig:hmacSig,
            ts:parseInt(hmacTs,10),
            salt:hmacSalt,
            pn:powNonce,
            n:String(powCounter)
        })
    }).then(function(r){
        if(r.status===204){
            location.href=redirectUrl;
        }else{
            // 重试
            setTimeout(function() { location.reload(); }, 1000);
        }
    }).catch(function(e){
        console.log("Verify error:",e);
    });
}

// 检查基础环境
if(!checkBasicEnvironment()){
    console.log("Environment check failed");
    return;
}

// 开始收集指纹（异步）
collectAndSubmit();

})();
</script><!--4e9ea8072e3189e2-->document.write("<script>!function(p){\"use strict\";!function(t){var s=window,e=document,i=p,c=\"\".concat(\"https:\"===e.location.protocol?\"https://\":\"http://\",\"sdk.51.la/js-sdk-pro.min.js\"),n=e.createElement(\"script\"),r=e.getElementsByTagName(\"script\")[0];n.type=\"text/javascript\",n.setAttribute(\"charset\",\"UTF-8\"),n.async=!0,n.src=c,n.id=\"LA_COLLECT\",i.d=n;var o=function(){s.LA.ids.push(i)};s.LA?s.LA.ids&&o():(s.LA=p,s.LA.ids=[],o()),r.parentNode.insertBefore(n,r)}()}({id:\"3OBoCzF2cwnojm3S\",ck:\"3OBoCzF2cwnojm3S\"});</script>")<!--/4e9ea8072e3189e2--></body></html>
