https://825440.com/

제출된 URL:
https://lun2.tv/리디렉션됨
보고서 완료:

링크 · 0개 결과

페이지에서 식별된 외부 링크

JavaScript 변수 · 19개 결과

페이지의 창 개체에 로드된 전역 JavaScript 변수는 함수 외부에서 선언된 변수로, 현재 범위 내에서 코드의 어느 부분에서나 액세스할 수 있습니다

이름유형
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
$function
jQueryfunction
QRCodefunction
CryptoJSobject
configobject
templateDataobject
WEB_OPTIONSobject

콘솔 로그 메시지 · 1개 결과

웹 콘솔에 기록된 메시지

유형카테고리로그
logjavascript
URL
https://825440.com/
텍스트
JSHandle@object

HTML

페이지의 원시 HTML 본문

<!DOCTYPE html><html lang="cn"><head>
    <meta charset="UTF-8">
    <script type="text/javascript" async="" src="https://s9.cnzz.com/z.js?id=1281390920"></script>
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0,viewport-fit=cover">
    <meta name="theme-color" content="#111618">
    <title></title>
    <meta property="og:description" name="description" id="description" content="">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    <script type="text/javascript" src="/js/jquery.min.js"></script>
    <script type="text/javascript" src="/js/qrcode.min.js"></script>
    <script type="text/javascript" src="/js/crypto-js.min.js"></script>
    <script type="text/javascript" src="/js/aes.min.js"></script>
    <script type="text/javascript" src="/js/enc-utf8.min.js"></script>
    <link id="favicon" rel="icon">
    <style>
        html {
            background: #050505;
            text-align: center;
        }

        body {
            margin: 0;
            color: #fff;
        }

        #body {
            max-width: 500px;
            height: 100vh;
            background: #333;
            margin: 0 auto;
            position: relative;
            font-size: 14px;
            overflow-y: auto;
        }

        #body * {
            box-sizing: border-box;
        }

        #body p {
            margin: 5px 0;
        }

        #body .top {
            padding: 30px 0 0 0;
            background: #000;
        }

        #body .foot {
            padding: 20px 20px 60px;
            font-size: 15px;
        }

        #body .foot b {
            color: #ffd07d;
        }

        #body .foot p {
            margin: 10px 0;
        }

        #body .color {
            color: #6dc1fe;
        }

        #body .text-color {
            background-size: 400% 400%;
            background-image: linear-gradient(
                    to left,
                    #6dc1fe,
                    #ff8000,
                    #fff200,
                    #51ff00,
                    #00d0ff,
                    #9000ff,
                    #ff008c
            );
            -webkit-background-clip: text;
            animation: text-color 5s ease infinite;
            color: transparent;
            margin: 0 5px;
        }

        #body .logo {
            width: 60px;
            height: 60px;
            margin: 10px auto;
        }

        #body .logo img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            border-radius: 6px;
        }

        #body .main {
            margin: 10px;
            background: #222;
            border-radius: 10px;
            padding: 10px;
            font-size: 14px;
        }

        #body .main .domain {
            margin: 10px;
            background: #000;
            padding: 9px 2px;
            border-radius: 20px;
        }

        #body .main .domain a {
            color: #6dc1fe;
            text-decoration: none;
        }

        #body .tips {
            padding: 10px;
            text-align: left;
        }

        #body .tips .li {
            padding: 5px 0;
        }

        #body .tips p {
            margin: 2px 0 0 1em;
        }

        #body .ar1 {
            font-size: 10px;
            opacity: 0.7;
            margin: 0 0 -3px 0;
        }

        #body .ar2 {
            font-size: 16px;
        }

        #body .qrcode {
            width: 150px;
            height: 150px;
            border: 2px solid #6dc1fe;
            margin: 20px auto;
            background: #fff;
            border-radius: 5px;
        }

        #body .qrcode img,
        #body .qrcode canvas {
            width: 100%;
            height: 100%;
        }
        #domainContent{
            text-align: center;
        }
        .navigation-buttons {
            display: flex;
            flex-direction: row;
            justify-content: space-around;
            margin-top: 30px;
        }
        .btn {
            flex: none;
            width: 150px;
            padding: 12px 15px;
            font-size: 14px;
            font-weight: bold;
            text-align: center;
            color: #fff;
            background: linear-gradient(45deg, #6dc1fe, #009cfa);
            border-radius: 20px;
            cursor: pointer;
            transition: all 0.3s ease;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            text-transform: uppercase;
        }
        .btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15);
            background: linear-gradient(45deg, #ff8000, #6dc1fe);
        }
        .btn:active {
            transform: translateY(1px);
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        }
        @keyframes text-color {
            0% { background-position: 0% 50%; }
            50% { background-position: 100% 50%; }
            100% { background-position: 0% 50%; }
        }
        @-moz-keyframes text-color {
            0% {
                background-position: 0% 50%;
            }
            50% {
                background-position: 100% 50%;
            }
        }

        @-webkit-keyframes text-color {
            0% {
                background-position: 0% 50%;
            }
            50% {
                background-position: 100% 50%;
            }
        }

        @-o-keyframes text-color {
            0% {
                background-position: 0% 50%;
            }
            50% {
                background-position: 100% 50%;
            }
        }

        @keyframes text-color {
            0% {
                background-position: 0% 50%;
            }
            50% {
                background-position: 100% 50%;
            }
        }

    </style>
</head>
<body>
<div id="body">
    <div class="top">
        <div class="logo"><img id="logo"></div>
        <div class="main">
            <p id="title"></p>
            <div class="qrcode" id="qrcode"></div>
            <div class="domain" style="text-align: left;">
                <span id="domainContent" class="color"></span>
            </div>
        </div>
        <div class="tips" style="text-align: left;">
            <span id="wordContent"></span>
        </div>
        <div class="arrow">
            <div class="ar1 color">▼</div>
            <div class="ar2 color">▼</div>
        </div>
    </div>
    <div class="foot">
        <p><span>完成</span><b>屏幕截图</b></p>
        <p>
          <span class="text-color">页面跳转倒计时<span id="countDown"></span>秒</span>
        </p>
        <div class="navigation-buttons">
            <div class="btn first">进入本站</div>
            <div class="btn second">进入极速纯净版</div>
        </div>
    </div>
</div>
<script src="config.js"></script>
<script>
    var interval;

    /**
     * 业务公共解密方法
     * @param {any} data - 传入的包含加密数据的对象
     * @param {string} secretKey - 用于解密的密钥(Base64格式)
     * @returns {any} - 解密后的JSON对象或原始数据
     */
    // 解密
    function aesDe(ciphertext) {
        // 检查输入参数
        if (!ciphertext) {
            console.warn('解密失败:输入的密文不能为空')
            return ciphertext
        }
        try {
            const keyBytes = CryptoJS.enc.Utf8.parse("zH3JDuCRXVGa3na7xbOqpx1bw6DAkbTP")
            const decrypted = CryptoJS.AES.decrypt(ciphertext, keyBytes, {
                iv: keyBytes,
                mode: CryptoJS.mode.CBC,
                padding: CryptoJS.pad.Pkcs7
            })
            return CryptoJS.enc.Utf8.stringify(decrypted)
        } catch (error) {
            console.error(`解密失败:${error}`)
            return ''
        }
    }

    // 加密
    // function aesEn(obj) {
    //     let encrypt = CryptoJS.AES.encrypt(
    //         CryptoJS.enc.Utf8.parse(obj),
    //         CryptoJS.enc.Utf8.parse('6E31ECDEF3EEC0E6'),
    //         {
    //             mode: CryptoJS.mode.ECB,
    //             padding: CryptoJS.pad.Pkcs7
    //         }
    //     );
    //     return encrypt.toString();
    // }


    // 随机选择并调用 jsonApiList 中的一个域名
    function getRandomJsonApi(jsonApiList) {
        if (!Array.isArray(jsonApiList) || jsonApiList.length === 0) {
            console.warn("jsonApiList 为空或不是一个有效的数组");
            return null;
        }

        const randomIndex = Math.floor(Math.random() * jsonApiList.length);
        return jsonApiList[randomIndex];
    }

    function getJsonData() {
        const domainUrl = window.location.origin;
        let domainName = window.location.hostname;
        const tenantId = window.config?.tenantId || '1';
        const webSiteId = window.config?.webSiteId || '1';
        const templateId = window.config?.templateId || '1';
        let url = ''

        // 如果是测试环境或者开发环境
        if (domainUrl.includes("localhost") || domainUrl.includes("test")) {
            if (domainUrl.includes("localhost")) {
                domainName = 'test.mediadiversion.dfre45.com'
            }
            url = `http://mediajson.dfre45.com/pages/nav/${tenantId}/${webSiteId}/${templateId}/result.json`
            // http://mediajson.dfre45.com/pages/nav/1/1/1/result.json
        } else {
            const jsonApiList = window.config?.jsonApiList;
            const randomApi = getRandomJsonApi(jsonApiList);
            url = `${randomApi}/pages/nav/${tenantId}/${webSiteId}/${templateId}/result.json`;
        }

        // 获取接口数据
        fetch(url)
            .then(response => response.text())
            .then(res => {
                if (!res) return;
                let jsonData = null
                try {
                    jsonData = JSON.parse(res)
                    if (jsonData?.json_data) {
                        const info = aesDe(jsonData.json_data)
                        console.log(JSON.parse(info));
                        initPage(JSON.parse(info))
                    }
                } catch (error) {
                    console.error('解析json数据失败', error)
                }
            })
    }

    function initPage(resData) {

        const adDomains = resData?.adDomains;
        const adDomain = adDomains[Math.floor(Math.random() * adDomains.length)];
        const logoUrl = adDomain + resData?.logo; // logo
        document.getElementById("logo").setAttribute("src", logoUrl); //logo
        document.getElementById("title").innerHTML = resData?.title; // 提醒文字

        var qrcode = new QRCode(document.getElementById("qrcode"), {
            width: 150,
            height: 150,
            useSVG: true,
        });
        qrcode.makeCode(resData?.qrDomain); // 二维码

        document.getElementById("domainContent").innerHTML = decodeURIComponent(resData?.domainContent); //域名文字

        document.getElementById("wordContent").innerHTML = decodeURIComponent(resData?.wordContent); //文字描述

        document.getElementById("countDown").innerHTML = resData?.countDown; //倒计时

        if (resData?.jumpDomain){
            document.querySelector(".navigation-buttons .btn.first").addEventListener("click", function () {
                clearInterval(interval);
                window.location.href = resData.jumpDomain;
            });
        }

        if (resData?.jumpDomain2){
            document.querySelector(".navigation-buttons .btn.second").addEventListener("click", function () {
                clearInterval(interval);
                window.location.href = resData.jumpDomain2;
            });
        }else{
            document.querySelector(".navigation-buttons .btn.second").style.display = 'none';
        }

        interval = setInterval(() => {
            var countDown = document.getElementById("countDown");
            if (countDown.innerHTML <= 0) {
                clearInterval(interval);
                window.location.href = resData.jumpDomain;
            } else {
                countDown.innerHTML -= 1;
            }
        }, 1000);
    }
    getJsonData()
</script>


</body></html>