{"id":76,"date":"2026-03-02T13:27:53","date_gmt":"2026-03-02T05:27:53","guid":{"rendered":"https:\/\/blog.ichenfu.cn\/?p=76"},"modified":"2026-03-09T18:07:40","modified_gmt":"2026-03-09T10:07:40","slug":"sjz","status":"publish","type":"post","link":"https:\/\/blog.ichenfu.cn\/index.php\/2026\/03\/02\/sjz\/","title":{"rendered":"\u4e09\u89d2\u6d32\u884c\u52a8\u6bcf\u65e5\u5bc6\u7801\u67e5\u8be2\u6e90\u7801"},"content":{"rendered":"\n<p><strong>\u6548\u679c\u5c55\u793a:<\/strong><\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u4e09\u89d2\u6d32\u884c\u52a8 - \u6bcf\u65e5\u5bc6\u7801\u67e5\u8be2 (\u4fee\u590d\u7248)<\/title>\n    <style>\n        h1 {\n            margin: 0;\n            font-size: 2.5rem;\n            color: #ffca28;\n            text-shadow: 2px 2px 4px rgba(0,0,0,0.5);\n        }\n\n        .subtitle {\n            margin-top: 5px;\n            font-size: 0.9rem;\n            color: #aaa;\n        }\n\n        \/* --- \u63a7\u5236\u90e8\u5206 --- *\/\n        .controls {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding: 10px 0;\n        }\n\n        .last-update {\n            font-size: 0.9rem;\n            color: #888;\n        }\n\n        button {\n            background-color: #007bff;\n            color: white;\n            border: none;\n            padding: 8px 15px;\n            border-radius: 5px;\n            cursor: pointer;\n            font-weight: bold;\n            transition: background-color 0.2s;\n        }\n\n        button:hover {\n            background-color: #0056b3;\n        }\n\n        button:disabled {\n            background-color: #555;\n            cursor: not-allowed;\n        }\n\n        \/* --- \u6570\u636e\u5c55\u793a\u533a\u57df --- *\/\n        #password-container {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n            gap: 15px;\n        }\n\n        \/* --- \u5bc6\u7801\u5361\u7247\u6837\u5f0f --- *\/\n        .password-card {\n            background-color: #2a2a2a;\n            border-left: 5px solid #555; \/* \u9ed8\u8ba4\u989c\u8272 *\/\n            border-radius: 8px;\n            padding: 15px;\n            box-shadow: 0 2px 5px rgba(0,0,0,0.3);\n            transition: transform 0.2s;\n        }\n\n        .password-card:hover {\n            transform: translateY(-3px);\n        }\n\n        \/* \u4e3a\u4e0d\u540c\u5730\u56fe\u540d\u79f0\u8bbe\u7f6e\u4e0d\u540c\u7684\u8fb9\u6846\u989c\u8272\u4ee5\u589e\u52a0\u533a\u5206\u5ea6 *\/\n        .card-zero  { border-left-color: #4CAF50; } \/* \u96f6\u53f7\u5927\u575d - \u7eff\u8272 *\/\n        .card-gorge { border-left-color: #2196F3; } \/* \u957f\u5f13\u6eaa\u8c37 - \u84dd\u8272 *\/\n        .card-bucks { border-left-color: #FF9800; } \/* \u5df4\u514b\u4ec0 - \u6a59\u8272 *\/\n        .card-hella { border-left-color: #E91E63; } \/* \u822a\u5929\u57fa\u5730 - \u7c89\u8272 *\/\n        .card-jail  { border-left-color: #9C27B0; } \/* \u6f6e\u6c50\u76d1\u72f1 - \u7d2b\u8272 *\/\n\n        .card-location {\n            font-size: 1.2rem;\n            font-weight: bold;\n            color: #e0e0e0;\n            margin-bottom: 5px;\n        }\n\n        .card-password {\n            font-size: 2.2rem;\n            font-weight: bold;\n            color: #ffca28;\n            margin: 10px 0;\n            font-family: 'Courier New', Courier, monospace;\n            letter-spacing: 2px;\n        }\n\n        .card-details {\n            font-size: 0.9rem;\n            color: #bbb;\n            line-height: 1.4;\n        }\n\n        .card-update-time {\n            margin-top: 10px;\n            font-size: 0.8rem;\n            color: #666;\n            text-align: right;\n        }\n\n        \/* --- \u72b6\u6001\u63d0\u793a\u4fe1\u606f --- *\/\n        .status-message {\n            text-align: center;\n            padding: 40px;\n            font-size: 1.1rem;\n            color: #aaa;\n            grid-column: 1 \/ -1; \/* \u5360\u6ee1\u6574\u884c *\/\n        }\n\n        .loading {\n            color: #007bff;\n        }\n\n        .error {\n            color: #ff5252;\n        }\n\n    <\/style>\n<\/head>\n<body>\n        <div class=\"controls\">\n            <div id=\"last-update\" class=\"last-update\">\u6570\u636e\u52a0\u8f7d\u4e2d...<\/div>\n            <button id=\"refresh-btn\" onclick=\"fetchPasswords()\">\u5237\u65b0\u5bc6\u7801<\/button>\n        <\/div>\n\n        <div id=\"password-container\">\n            <div class=\"status-message loading\">\u6b63\u5728\u8fde\u63a5 API \u83b7\u53d6\u6700\u65b0\u5bc6\u7801...<\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n        \/\/ API \u5730\u5740\n     const API_URL = \"https:\/\/tmini.net\/api\/sjzmm\";\n\n  \n\n        \/\/ \u9875\u9762\u52a0\u8f7d\u5b8c\u6210\u540e\u7acb\u5373\u83b7\u53d6\u4e00\u6b21\u6570\u636e\n        document.addEventListener('DOMContentLoaded', fetchPasswords);\n\n        \/**\n         * \u4ece API \u83b7\u53d6\u5bc6\u7801\u6570\u636e\n         *\/\n        async function fetchPasswords() {\n            const container = document.getElementById('password-container');\n            const lastUpdateEl = document.getElementById('last-update');\n            const refreshBtn = document.getElementById('refresh-btn');\n\n            \/\/ \u8bbe\u7f6e\u52a0\u8f7d\u72b6\u6001\n            container.innerHTML = '<div class=\"status-message loading\">\u6b63\u5728\u83b7\u53d6\u6700\u65b0\u6570\u636e...<\/div>';\n            lastUpdateEl.textContent = '\u6b63\u5728\u66f4\u65b0...';\n            refreshBtn.disabled = true;\n\n            try {\n                \/\/ \u53d1\u8d77 API \u8bf7\u6c42\n                const response = await fetch(API_URL);\n                if (!response.ok) {\n                    throw new Error(`HTTP \u9519\u8bef: ${response.status}`);\n                }\n                const rawText = await response.text();\n\n                \/\/ \u89e3\u6790\u8fd4\u56de\u7684\u6587\u672c\u6570\u636e\n                const data = parseData(rawText);\n\n                if (data.length > 0) {\n                    lastUpdateEl.textContent = `\u6700\u540e\u66f4\u65b0: ${data[0].lastUpdate}`;\n                    renderPasswords(data);\n                }\n\n                  } finally {\n                \/\/ \u6062\u590d\u6309\u94ae\u72b6\u6001\n                refreshBtn.disabled = false;\n            }\n        }\n\n        \/**\n         * \u89e3\u6790 API \u8fd4\u56de\u7684\u7eaf\u6587\u672c\u6570\u636e (\u589e\u5f3a\u7248)\n         * @param {string} text - API \u8fd4\u56de\u7684\u539f\u59cb\u6587\u672c\n         * @returns {Array<Object>} - \u89e3\u6790\u540e\u7684\u5bc6\u7801\u5bf9\u8c61\u6570\u7ec4\n         *\/\n        function parseData(text) {\n            if (!text) return [];\n            const lines = text.split('\\n');\n            const passwords = [];\n            let currentItem = null;\n\n            for (const line of lines) {\n                \/\/ \u4f7f\u7528\u66f4\u4e25\u683c\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u5339\u914d\n                let match\u5730\u56fe\u540d\u79f0 = line.match(\/\u5730\u56fe\u540d\u79f0:\\s*(.+)(.+)\/);\n                let match\u5bc6\u7801 = line.match(\/\u5bc6\u7801:\\s*(\\d{4})\/);\n                let match\u4f4d\u7f6e\u63cf\u8ff0 = line.match(\/\u4f4d\u7f6e\u63cf\u8ff0:\\s*(.+)\/);\n                let match\u66f4\u65b0\u65e5\u671f = line.match(\/\u66f4\u65b0\u65e5\u671f:\\s*(.+)\/);\n\n                if (match\u5730\u56fe\u540d\u79f0) {\n                    \/\/ \u627e\u5230\u4e00\u4e2a\u65b0\u6761\u76ee\uff0c\u5148\u628a\u65e7\u7684\u5b58\u8d77\u6765\n                    if (currentItem) {\n                        passwords.push(currentItem);\n                    }\n                    \/\/ \u521b\u5efa\u65b0\u6761\u76ee\n                    currentItem = {\n                        location: match\u5730\u56fe\u540d\u79f0[1].trim(),\n                        detail: match\u5730\u56fe\u540d\u79f0[2].trim(),\n                        password: '',\n                        point: '',\n                        lastUpdate: ''\n                    };\n                } else if (match\u5bc6\u7801 && currentItem) {\n                    currentItem.password = match\u5bc6\u7801[1].trim();\n                } else if (match\u4f4d\u7f6e\u63cf\u8ff0 && currentItem) {\n                    currentItem.point = match\u4f4d\u7f6e\u63cf\u8ff0[1].trim();\n                } else if (match\u66f4\u65b0\u65e5\u671f && currentItem) {\n                    currentItem.lastUpdate = match\u66f4\u65b0\u65e5\u671f[1].trim();\n                }\n            }\n            \/\/ \u5faa\u73af\u7ed3\u675f\u540e\uff0c\u628a\u6700\u540e\u4e00\u4e2a\u6761\u76ee\u4e5f\u52a0\u8fdb\u53bb\n            if (currentItem) {\n                passwords.push(currentItem);\n            }\n            \n            return passwords;\n        }\n\n        \/**\n         * \u5c06\u89e3\u6790\u540e\u7684\u6570\u636e\u6e32\u67d3\u5230\u9875\u9762\n         * @param {Array<Object>} data - \u5bc6\u7801\u5bf9\u8c61\u6570\u7ec4\n         *\/\n        function renderPasswords(data) {\n            const container = document.getElementById('password-container');\n            container.innerHTML = ''; \/\/ \u6e05\u7a7a\u73b0\u6709\u5185\u5bb9\n\n            data.forEach(item => {\n                const card = document.createElement('div');\n                let cardClass = 'password-card';\n                if (item.location.includes('\u96f6\u53f7\u5927\u575d')) cardClass += ' card-zero';\n                else if (item.location.includes('\u957f\u5f13\u6eaa\u8c37')) cardClass += ' card-gorge';\n                else if (item.location.includes('\u5df4\u514b\u4ec0')) cardClass += ' card-bucks';\n                else if (item.location.includes('\u822a\u5929\u57fa\u5730')) cardClass += ' card-hella';\n                else if (item.location.includes('\u6f6e\u6c50\u76d1\u72f1')) cardClass += ' card-jail';\n                \n                card.className = cardClass;\n\n                card.innerHTML = `\n                    <div class=\"card-location\">${item.location}${item.detail}<\/div>\n                    <div class=\"card-password\">${item.password || 'N\/A'}<\/div>\n                    <div class=\"card-details\">\ud83d\udccd ${item.point || '\u65e0\u4f4d\u7f6e\u63cf\u8ff0\u4fe1\u606f'}<\/div>\n                    <div class=\"card-update-time\">\u66f4\u65b0\u65e5\u671f: ${item.lastUpdate}<\/div>\n                `;\n\n                container.appendChild(card);\n            });\n        }\n\n    <\/script>\n\n<\/body>\n<\/html>\n\n\n\n<p><strong>\u4e0b\u8f7d\u94fe\u63a5:\u2193<\/strong><\/p>\n\n\n\n<script src=\"https:\/\/blog.ichenfu.cn\/wp-admin\/admin-ajax.php?action=show_content&content_key=bd4ce5947c8b12eb76e25ca56b1ecd1c\"><\/script>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"\u4e09\u89d2\u6d32\u884c\u52a8\u6bcf\u65e5\u5bc6\u7801\u67e5\u8be2\u6e90\u7801\u53d1\u5e03\uff01\u4e00\u952e\u83b7\u53d6\u6700\u65b0\u5bc6\u7801\uff0c\u5b9e\u65f6\u8fde\u63a5API\uff0c\u4fee\u590d\u7248\u7a33\u5b9a\u8fd0\u884c\u3002\u6570\u636e\u52a0\u8f7d\u4e2d\uff0c\u5373\u523b\u5237\u65b0\uff0c\u4e0b\u8f7d\u94fe\u63a5\u5df2\u5c31\u7eea\u3002","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[11],"tags":[],"class_list":["post-76","post","type-post","status-publish","format-standard","hentry","category-11"],"_links":{"self":[{"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/posts\/76","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":16,"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/posts\/76\/revisions"}],"predecessor-version":[{"id":97,"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/posts\/76\/revisions\/97"}],"wp:attachment":[{"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/media?parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/categories?post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ichenfu.cn\/index.php\/wp-json\/wp\/v2\/tags?post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}