{"id":620,"date":"2025-10-14T15:03:46","date_gmt":"2025-10-14T06:03:46","guid":{"rendered":"https:\/\/aquaguide.cdnetworks.com\/?p=620"},"modified":"2025-10-15T10:39:19","modified_gmt":"2025-10-15T01:39:19","slug":"%ec%9b%90%ea%b2%a9%ec%a7%80%ec%9b%90-%ec%84%9c%eb%b9%84%ec%8a%a4","status":"publish","type":"post","link":"https:\/\/aquaguide.cdnetworks.com\/?p=620","title":{"rendered":"Check PC Info"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"620\" class=\"elementor elementor-620\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3053c07b e-flex e-con-boxed e-con e-parent\" data-id=\"3053c07b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d412da0 elementor-widget elementor-widget-text-editor\" data-id=\"5d412da0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t\n<p><style>\n        body {\n            font-family: Arial, sans-serif;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            height: 100vh;\n            margin: 0;\n            background-color: #f0f0f0;\n        }\n        .container {\n            background: white;\n            padding: 20px;\n            border-radius: 8px;\n            box-shadow: 0 0 10px rgba(0,0,0,0.1);\n            max-width: 600px;\n            width: 100%;\n        }\n        h1 {\n            text-align: center;\n            color: #333;\n        }\n        .info {\n            margin: 10px 0;\n            padding: 10px;\n            background: #f9f9f9;\n            border-radius: 4px;\n        }\n        .info label {\n            font-weight: bold;\n            color: #555;\n        }\n        .info-button {\n            text-align: center;\n        }\n        .info-button button {\n            background-color: skyblue;\n            color: white;\n            font-size: 18px;\n            padding: 10px 20px;\n            border: none;\n            border-radius: 4px;\n            cursor: pointer;\n        }\n        .info-network p {\n            margin: 0;\n        }\n    <\/style><\/p>\n<div class=\"container\">\n<h1>PC Information<\/h1>\n<div class=\"info info-button\"><button onclick=\"systemCheck()\">System Check<\/button><\/div> <!-- onclick \ucd94\uac00 -->\n<div class=\"info info-network\">\n<p>Networks Information: <label id=\"self_nic\"><\/label><\/p>\n<\/div>\n<div class=\"info\"><label>\uc6b4\uc601 \uccb4\uc81c:<\/label> <span id=\"os\"><\/span><\/div>\n<div class=\"info\"><label>\ube0c\ub77c\uc6b0\uc800:<\/label> <span id=\"browser\"><\/span><\/div>\n<div class=\"info\"><label>\ud654\uba74 \ud574\uc0c1\ub3c4:<\/label> <span id=\"screen\"><\/span><\/div>\n<div class=\"info\"><label>CPU \ucf54\uc5b4 \uc218:<\/label> <span id=\"cpu\"><\/span><\/div>\n<div class=\"info\"><label>\uba54\ubaa8\ub9ac:<\/label> <span id=\"memory\"><\/span><\/div>\n<div class=\"info\"><label>\uadf8\ub798\ud53d \uce74\ub4dc:<\/label> <span id=\"gpu\"><\/span><\/div>\n<div class=\"info\"><label>\uacf5\uc778 IP \uc8fc\uc18c:<\/label> <span id=\"ip\"><\/span><\/div>\n<div class=\"info\"><label>\uc811\uc18d \uad6d\uac00:<\/label> <span id=\"country\"><\/span><\/div>\n<\/div>\n<!-- iframe \uc81c\uac70: \ubd88\ud544\uc694\ud558\uace0 \ub85c\uceec\ud638\uc2a4\ud2b8 \ucc38\uc870\ub85c \uc791\ub3d9 \uc548 \ud560 \uc218 \uc788\uc74c -->\n<p><script>\n        const description = {\n            \"networks\": {\n                \"slow-2g\": \"\ucd5c\ub300 \ub2e4\uc6b4\ub85c\ub4dc \uc18d\ub3c4: 50 Kbps, \uc774 \ub124\ud2b8\uc6cc\ud06c\ub294 \ud14d\uc2a4\ud2b8 \uc804\uc6a9 \ud398\uc774\uc9c0\uc640 \uac19\uc740 \uc18c\uaddc\ubaa8 \uc804\uc1a1\uc5d0\ub9cc \uc801\ud569\ud569\ub2c8\ub2e4.\",\n                \"2g\": \"\ucd5c\ub300 \ub2e4\uc6b4\ub85c\ub4dc \uc18d\ub3c4: 70 Kbps, \uc774 \ub124\ud2b8\uc6cc\ud06c\ub294 \uc791\uc740 \uc774\ubbf8\uc9c0 \uc804\uc1a1\uc5d0 \uc801\ud569\ud569\ub2c8\ub2e4.\",\n                \"3g\": \"\ucd5c\ub300 \ub2e4\uc6b4\ub85c\ub4dc \uc18d\ub3c4: 700 Kbps, \ube44\ub514\uc624\ub97c \uc7ac\uc0dd\ud558\uae30\uc5d0 \ucda9\ubd84\ud55c \uc18d\ub3c4\ub97c \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.\",\n                \"4g\": \"\ub124\ud2b8\uc6cc\ud06c \uc18d\ub3c4\uac00 \ube60\ub985\ub2c8\ub2e4.\"\n            },\n        };\n\n        async function systemCheck() {\n            \/\/ \ub124\ud2b8\uc6cc\ud06c \uc815\ubcf4 (fallback \uac15\ud654)\n            let effectiveType = 'unknown';\n            if (navigator.connection) {\n                effectiveType = navigator.connection.effectiveType;\n            }\n            const networkInfoLabel = document.getElementById(\"self_nic\");\n            const networkDescription = description.networks[effectiveType];\n            if (networkDescription) {\n                networkInfoLabel.innerText = networkDescription;\n            } else {\n                networkInfoLabel.innerText = effectiveType === 'unknown' ? '\ub124\ud2b8\uc6cc\ud06c \uc815\ubcf4 \uc9c0\uc6d0 \uc548 \ub428 (\ube0c\ub77c\uc6b0\uc800 \uc81c\ud55c)' : '\uc54c \uc218 \uc5c6\ub294 \ub124\ud2b8\uc6cc\ud06c \uc720\ud615\uc785\ub2c8\ub2e4.';\n            }\n\n            \/\/ \ub2e4\ub978 \uc815\ubcf4 detect\n            await detectOS();\n            detectBrowser();\n            detectScreenSpecs();\n            detectGPU();\n            await detectIPCountry();\n        }\n\n        \/\/ fetch\uc5d0 \ud0c0\uc784\uc544\uc6c3 \uc801\uc6a9 (\ubcc0\uacbd \uc5c6\uc74c)\n        async function fetchWithTimeout(url, { timeout = 5000, ...options } = {}) {\n            const controller = new AbortController();\n            const id = setTimeout(() => controller.abort(), timeout);\n            try {\n                const res = await fetch(url, { ...options, signal: controller.signal });\n                return res;\n            } finally {\n                clearTimeout(id);\n            }\n        }\n\n        \/\/ \uc6b4\uc601\uccb4\uc81c \ud0d0\uc9c0 (\ubcc0\uacbd \uc5c6\uc74c)\n        async function detectOS() {\n            const ua = navigator.userAgent || '';\n            let os = '\uc54c \uc218 \uc5c6\uc74c';\n\n            try {\n                if (navigator.userAgentData?.getHighEntropyValues) {\n                    const { platform, platformVersion } = await navigator.userAgentData.getHighEntropyValues(['platform','platformVersion']);\n                    const p = (platform || '').toLowerCase();\n                    if (p.includes('android')) os = 'Android';\n                    else if (p.includes('ios')) os = 'iOS';\n                    else if (p.includes('windows')) {\n                        const major = parseInt((platformVersion || '').split('.')[0], 10);\n                        os = Number.isFinite(major) ? (major >= 13 ? 'Windows 11' : 'Windows 10') : 'Windows';\n                    }\n                    else if (p.includes('mac')) os = 'Mac OS';\n                    else if (p.includes('chrome os')) os = 'Chrome OS';\n                    else if (p.includes('linux')) os = 'Linux';\n                }\n            } catch (e) {\/* UA-CH \uc2e4\ud328 \uc2dc UA \ubd84\uc11d *\/}\n\n            if (os === '\uc54c \uc218 \uc5c6\uc74c') {\n                const isiOS = \/iPhone|iPad|iPod\/i.test(ua) || (\/\\bMacintosh\\b\/.test(ua) && navigator.maxTouchPoints > 1);\n                if (isiOS) os = 'iOS';\n                else if (\/Android\/i.test(ua)) os = 'Android';\n                else if (\/Windows NT 10\\.0\/.test(ua)) os = 'Windows 10\/11 (UA \uc81c\ud55c)';\n                else if (\/Windows NT 6\\.3\/.test(ua)) os = 'Windows 8.1';\n                else if (\/Windows NT 6\\.2\/.test(ua)) os = 'Windows 8';\n                else if (\/Windows NT 6\\.1\/.test(ua)) os = 'Windows 7';\n                else if (\/Windows NT 6\\.0\/.test(ua)) os = 'Windows Vista';\n                else if (\/Windows NT 5\\.1\/.test(ua)) os = 'Windows XP';\n                else if (\/Mac OS X|Macintosh\/i.test(ua)) os = 'Mac OS';\n                else if (\/Linux\/i.test(ua)) os = 'Linux';\n            }\n\n            document.getElementById('os').textContent = os;\n        }\n\n        \/\/ \ube0c\ub77c\uc6b0\uc800 \uc774\ub984\/\ubc84\uc804 (\ubcc0\uacbd \uc5c6\uc74c)\n        function detectBrowser() {\n            let browser = '\uc54c \uc218 \uc5c6\uc74c';\n            const ua = navigator.userAgent;\n            if (ua.includes('Edg\/')) {\n                browser = 'Microsoft Edge ' + ua.split('Edg\/')[1].split(' ')[0];\n            } else if (ua.includes('Chrome\/') && ua.includes('Safari\/')) {\n                browser = 'Google Chrome ' + ua.split('Chrome\/')[1].split(' ')[0];\n            } else if (ua.includes('Firefox\/')) {\n                browser = 'Mozilla Firefox ' + ua.split('Firefox\/')[1];\n            } else if (ua.includes('Safari\/') && !ua.includes('Chrome\/')) {\n                const ver = (ua.split('Version\/')[1] || '').split(' ')[0] || '';\n                browser = 'Apple Safari ' + ver;\n            } else if (ua.includes('Trident\/')) {\n                browser = 'Internet Explorer ' + (ua.split('rv:')[1] ? ua.split('rv:')[1].split(')')[0] : '\uc54c \uc218 \uc5c6\uc74c');\n            }\n            document.getElementById('browser').textContent = browser;\n        }\n\n        \/\/ \ud574\uc0c1\ub3c4, CPU \ucf54\uc5b4, \uba54\ubaa8\ub9ac (fallback \uba54\uc2dc\uc9c0 \uc57d\uac04 \uac1c\uc120)\n        function detectScreenSpecs() {\n            document.getElementById('screen').textContent = `${window.screen.width}x${window.screen.height}`;\n            document.getElementById('cpu').textContent = navigator.hardwareConcurrency || '\uc54c \uc218 \uc5c6\uc74c (\ube0c\ub77c\uc6b0\uc800 \uc81c\ud55c)';\n            const dm = navigator.deviceMemory;\n            let memoryText = '\uc54c \uc218 \uc5c6\uc74c (\ube0c\ub77c\uc6b0\uc800 \uc81c\ud55c)';\n            if (typeof dm === 'number' && Number.isFinite(dm)) {\n                memoryText = `${dm} GB (\ube0c\ub77c\uc6b0\uc800 \uac10\uc9c0)`;\n            }\n            document.getElementById('memory').textContent = memoryText;\n        }\n\n        \/\/ GPU \ucd94\ucd9c \ud568\uc218 (\ubcc0\uacbd \uc5c6\uc74c)\n        function extractMainGPUName(raw) {\n            if (!raw || typeof raw !== 'string') return '\uc54c \uc218 \uc5c6\uc74c';\n            let s = raw;\n\n            const angleMatch = s.match(\/ANGLE\\s*\\(\\s*[^,]+,\\s*([^\\(\\),]+)\/i);\n            if (angleMatch && angleMatch[1]) {\n                s = angleMatch[1].trim();\n            }\n\n            s = s.replace(\/\\s*\\(.*?\\)\/g, '');\n            s = s.replace(\/^(Google Inc\\.|ATI Technologies Inc\\.|Advanced Micro Devices, Inc\\.|NVIDIA Corporation|Intel Inc\\.|Intel|Microsoft Corporation|Apple Inc\\.)\\s*(\\([^)]+\\))?\\s*\/i, '');\n            s = s.replace(\/ANGLE|Direct3D\\d*|OpenGL|Metal|Vulkan|D3D|vs_\\d+|ps_\\d+|,|\\|\/gi, '');\n            s = s.replace(\/\\s{2,}\/g, ' ').trim();\n            s = s.replace(\/^[\\s,\\|\\-]+|[\\s,\\|\\-]+$\/g, '');\n            s = s.replace(\/^\\.+|\\.+$\/g, '');\n\n            if (!s) return '\uc54c \uc218 \uc5c6\uc74c';\n\n            return s;\n        }\n\n        \/\/ GPU \ud0d0\uc9c0 (\ubcc0\uacbd \uc5c6\uc74c)\n        function detectGPU() {\n            let gpu = '\uc54c \uc218 \uc5c6\uc74c';\n            try {\n                const canvas = document.createElement('canvas');\n                const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n                if (gl) {\n                    const dbg = gl.getExtension('WEBGL_debug_renderer_info');\n                    let rawGPU = '';\n                    if (dbg) {\n                        rawGPU = gl.getParameter(dbg.UNMASKED_RENDERER_WEBGL);\n                    } else {\n                        rawGPU = gl.getParameter(gl.RENDERER);\n                    }\n                    gpu = extractMainGPUName(rawGPU);\n                }\n            } catch (e) {\n                gpu = '\uc54c \uc218 \uc5c6\uc74c (\uc624\ub958 \ubc1c\uc0dd)';\n            }\n            document.getElementById('gpu').textContent = gpu;\n        }\n\n        \/\/ IP\/\uad6d\uac00 (\ucf58\uc194 \ub85c\uadf8 \ucd94\uac00\ub85c \ub514\ubc84\uae45 \uc6a9\uc774)\n        async function detectIPCountry() {\n            try {\n                const ipRes = await fetchWithTimeout('https:\/\/api.ipify.org?format=json', { timeout: 5000 });\n                const ipData = await ipRes.json();\n                const ipAddress = ipData.ip;\n                document.getElementById('ip').textContent = ipAddress;\n\n                try {\n                    const geoRes = await fetchWithTimeout(`https:\/\/ipapi.co\/${ipAddress}\/json\/`, { timeout: 5000 });\n                    const geoData = await geoRes.json();\n                    if (geoData && (geoData.country_name || geoData.country)) {\n                        const country = geoData.country_name || geoData.country || '\uc54c \uc218 \uc5c6\uc74c';\n                        const code = geoData.country_code ? `(${geoData.country_code})` : '';\n                        document.getElementById('country').textContent = `${country} ${code}`;\n                        return;\n                    }\n                    throw new Error('ipapi.co \uc751\ub2f5 \ubd88\uc644\uc804');\n                } catch (e1) {\n                    console.warn('ipapi.co \uc2e4\ud328:', e1); \/\/ \ub514\ubc84\uae45 \ub85c\uadf8 \ucd94\uac00\n                    const altRes = await fetchWithTimeout(`https:\/\/ipwho.is\/${ipAddress}`, { timeout: 5000 });\n                    const altData = await altRes.json();\n                    if (altData && altData.success) {\n                        const country = altData.country || '\uc54c \uc218 \uc5c6\uc74c';\n                        const code = altData.country_code ? `(${altData.country_code})` : '';\n                        document.getElementById('country').textContent = `${country} ${code}`;\n                    } else {\n                        document.getElementById('country').textContent = '\uc54c \uc218 \uc5c6\uc74c (\uc704\uce58 \uc870\ud68c \uc2e4\ud328)';\n                    }\n                }\n            } catch (err) {\n                console.error('IP \ud0d0\uc9c0 \uc624\ub958:', err); \/\/ \ub514\ubc84\uae45 \ub85c\uadf8 \ucd94\uac00\n                document.getElementById('ip').textContent = '\uc54c \uc218 \uc5c6\uc74c (\uc624\ub958: ' + (err && err.message ? err.message : err) + ')';\n                document.getElementById('country').textContent = '\uc54c \uc218 \uc5c6\uc74c';\n            }\n        }\n\n        \/\/ \ud398\uc774\uc9c0 \ub85c\ub4dc \uc2dc \ucd08\uae30\ud654 (\ud544\uc694 \uc2dc systemCheck() \ud638\ucd9c \uac00\ub2a5, \ud558\uc9c0\ub9cc \ubc84\ud2bc \uae30\ubc18\uc73c\ub85c \uc720\uc9c0)\n        \/\/ window.addEventListener('load', systemCheck); \/\/ \uc790\ub3d9 \uc2e4\ud589 \uc6d0\ud560 \uc2dc \uc8fc\uc11d \ud574\uc81c\n    <\/script><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PC Information System Check Networks Information: \uc6b4\uc601 \uccb4\uc81c: \ube0c\ub77c\uc6b0\uc800: \ud654\uba74 \ud574\uc0c1\ub3c4: CPU \ucf54\uc5b4 \uc218: \uba54\ubaa8\ub9ac: \uadf8\ub798\ud53d \uce74\ub4dc: \uacf5\uc778 IP \uc8fc\uc18c: [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[5],"tags":[],"class_list":["post-620","post","type-post","status-publish","format-standard","hentry","category-playnplay"],"_links":{"self":[{"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=\/wp\/v2\/posts\/620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=620"}],"version-history":[{"count":26,"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=\/wp\/v2\/posts\/620\/revisions"}],"predecessor-version":[{"id":828,"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=\/wp\/v2\/posts\/620\/revisions\/828"}],"wp:attachment":[{"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aquaguide.cdnetworks.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}