Help
RSS
API
Feed
Maltego
Contact
Domain > aihealthnote.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-08-21
3.167.183.8
(
ClassC
)
2025-11-25
3.163.24.115
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Tue, 25 Nov 2025 02:37:19 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://aihealthnote.com/X-Cache: Redirect from cloudfrontVia: 1.1 f36cc119cb86b2f70c315ca53fd1b4ee.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P2X-Amz-Cf-Id: 8t-dmyiaZdeFMFu1CE8czU0agHtTJy2nHyZOTX6IiJXNSnTUPloyxA html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 18684Connection: keep-aliveDate: Tue, 25 Nov 2025 02:37:21 GMTLast-Modified: Fri, 21 Nov 2025 07:19:33 GMTETag: a8194f517633f79e115e6b06581cf832Server: AmazonS3X-Cache: Miss from cloudfrontVia: 1.1 13367f2265e830e1595737bd8f2eab92.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P2X-Amz-Cf-Id: kMSfp7LHSpCKcC-ksR2WmEjTT_8q4jXIwMes91MNAReeqo0MzG7jHw !DOCTYPE html>html langkr> head> meta charsetUTF-8 /> meta nameviewport contentwidthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno /> script srchttps://developers.kakao.com/sdk/js/kakao.js>/script> script srchttps://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.0.js>/script> !-- 구글 태그 시작 --> script async srchttps://www.googletagmanager.com/gtag/js?idG-LFWCD1GEEQ>/script> script> window.dataLayer window.dataLayer || ; function gtag() { dataLayer.push(arguments); } gtag(js, new Date()); gtag(config, G-LFWCD1GEEQ); /script> !-- 구글 태그 끝 --> link relicon typeimage/svg+xml href/favicon.ico /> title>HealthNote/title> style> /* 로딩중 */ .pushBack{position:fixed; top:0; left:0; width:100%; height:100%; background-color:#fff; z-index:99999; display:none} .pushBack div{position:absolute; top:50%; left:0; transform:translateY(-50%); width:100%; text-align:center} .pushBackBtn{position:absolute; top:10px; left:10px} /* 스플래시 */ .splashIndex{position:fixed; top:0; left:0; width:100%; height:100%; background-color:#fff; z-index:99999; display:none} .splashIndex img:nth-child(1){display:block; position:absolute; left:50%; top:50%; transform:translate(-50%, -50%)} .splashIndex img:nth-child(2){display:block; position:absolute; left:50%; bottom:10%; transform:translateX(-50%)} .btmPop{position:fixed; bottom:10px; left:50%; transform:translateX(-50%); width:calc(100% - 20px); padding:10px; background:rgba(0, 0, 0, 0.75); border-radius:10px; z-index:9999; text-align:center; color:#fff; font-size:12px; display:none} /* alert */ .alertWrap{position:fixed; top:0; left:0; width:100%; height:100%; z-index:9999; display:none} .alertWrap *{word-break:keep-all} .alertBack{position:absolute; top:0; left:0; width:100%; height:100%; background-color:rgba(0,0,0,0.5)} .alertBox{position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); width:280px; padding:20px; background-color:#FFF; border-radius:20px; text-align:center} .alertTitle{font-size:18px; font-weight:600; margin-bottom:20px} .alertContent{margin-bottom:20px} .alertBtnBox{display:flex; gap:20px; justify-content:center} .alertBtnOne{width:50%; height:48px; background-color:#0cc25a; border-radius:10px; color:#FFF; font-weight:600} /style> script srchttps://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.7.6/lottie.min.js>/script> script> localStorage.setItem(forceSimpleAuth, 1); localStorage.removeItem(link_from); localStorage.removeItem(editMode); localStorage.removeItem(ocrModDate); localStorage.removeItem(nhisOrInput); /script> script languagejavascript> // ■■■■■■■■■■ 푸시 메세지 클릭 함수 시작 ■■■■■■■■■■ const pushFn async(type, data) > { let sleep (ms) > new Promise((resolve) > setTimeout(resolve, ms)) let pushInterval setInterval(async() > { console.log(푸시 메세지 interval 중입니다.) if(type FAMILYAccept){ // 더보기 -> 가족 관리 페이지로 이동 if(!document.querySelector(.btm_btn_5)) return document.querySelector(.pushBack).style.display block; // 로딩 화면 시작 clearInterval(pushInterval); console.log(interval 끝입니다.); document.querySelector(.btm_btn_5).click(); await sleep(500) if(!document.querySelector(.familyManageBtn)) return document.querySelector(.familyManageBtn).click(); document.querySelector(.pushBack).style.display none; // 로딩화면 끝 }else if(type FAMILYRequest){ // 더보기 -> 가족 관리 -> 신청 목록 페이지로 이동 if(!document.querySelector(.btm_btn_5)) return document.querySelector(.pushBack).style.display block; // 로딩 화면 시작 clearInterval(pushInterval); console.log(interval 끝입니다.); document.querySelector(.btm_btn_5).click(); await sleep(500) if(!document.querySelector(.familyManageBtn)) return document.querySelector(.familyManageBtn).click(); await sleep(500) if(!document.querySelector(.familyListBtn)) return document.querySelector(.familyListBtn).click(); document.querySelector(.pushBack).style.display none; // 로딩화면 끝 } else if (type ALARM) { // 복약 알림 시 if(!document.querySelector(.btm_btn_3)) return document.querySelector(.pushBack).style.display block; // 로딩 화면 시작 clearInterval(pushInterval); console.log(interval 끝입니다.); document.querySelector(.btm_btn_3).click(); await sleep(500) if(!document.querySelector(.md_click_area)) return document.querySelector(.md_click_area).click(); document.querySelector(.pushBack).style.display none; // 로딩화면 끝 } else if (type ocrDone) { // 내 진료 ocr 완료 시 if(!document.querySelector(.btmBtn01)) return document.querySelector(.pushBack).style.display block // 로딩 화면 시작 clearInterval(pushInterval) console.log(interval 끝입니다.) localStorage.setItem(ocrData, JSON.stringify(data)) document.querySelector(.btmBtn01).click() await sleep(500) if(document.querySelector(.registerBtn)) document.querySelector(.registerBtn).click() if(document.querySelector(.updateBtn01)) document.querySelector(.updateBtn01).click() await sleep(500) document.querySelector(.bringBtn02).click(); document.querySelector(.pushBack).style.display none; // 로딩화면 끝 } else { // parameter 값이 없으면 clearInterval(pushInterval); console.log(interval 끝입니다.); document.querySelector(.pushBack).style.display none; // 로딩화면 끝 } }, 500); // 10분 반응 없으면 await sleep(1000 * 60 * 10) clearInterval(pushInterval); console.log(interval 끝입니다.); document.querySelector(.pushBack).style.display none; // 로딩화면 끝 }; // ■■■■■■■■■■ 푸시 메세지 클릭 함수 끝 ■■■■■■■■■■ function updateFromNative(gv_on_device_info) { console.log( Javascript Data received from Android (Device): + gv_on_device_info ); // alert(`updateFrom Native : ${gv_on_device_info}`); const event new CustomEvent(retrievedPermissions, { detail: gv_on_device_info, }); setTimeout(() > { window.dispatchEvent(event); }, 300); // React 상태 업데이트 또는 UI 업데이트 등의 작업 수행 } async function SNSLoginResultFromNative(json_data) { console.log( Javascript Data received from Android (SNS): + json_data ); /* json_data 예시 kakao : channel: KAKAO, id:123411234, name:홍길동, email:asdf@asdf.com naver : channel: NAVER, id:123411234, name:홍길동, email:asdf@asdf.com, mobile:010-1234-1234 */ // alert(`SNSLogin ResultFromNative : ${json_data}`); const event new CustomEvent(retrievedSnsLoginResult, { detail: json_data, }); window.dispatchEvent(event); // React 상태 업데이트 또는 UI 업데이트 등의 작업 수행 } function failToRetrievePermission() { console.error( Javascript Failure to retrieve the permissions: ); // React 상태 업데이트 또는 UI 업데이트 등의 작업 수행 } // 앱 종료 let exitFn () > { const action nativeExitApp; const payload {}; window.ReactNativeWebView.postMessage( JSON.stringify({ action, payload }) ); }; // 딥링크 생성 let deepLinkFn (mmbrCode) > { const action nativeUriversalLink; const payload { type: FAMILYAccept, mmbrCode: mmbrCode }; window.ReactNativeWebView.postMessage( JSON.stringify({ action, payload }) ); }; // 뒤로 가기 기능 let backNum 0; let backFn () > { let doneBtn document.querySelectorAll(.doneBtn); // X 버튼 let backBtn document.querySelectorAll(.backBtn); // 버튼 let btmBtn3 document.querySelector(.btm_btn_3); // 홈 버튼 if (doneBtn.length ! 0) { for (let i 0; i doneBtn.length; i++) { doneBtni.click(); console.log(doneBtn 클릭); } } else if (backBtn.length ! 0) { for (let i 0; i backBtn.length; i++) { backBtni.click(); console.log(backBtn 클릭); } } else if (btmBtn3) { // 홈인지 if (btmBtn3.classList.contains(on)) { // 홈일 경우 뒤로 가기 연속 두 번 클릭 시 종료 backNum + 1; console.log(backNum); document.querySelector(.btmPop).style.display block; if (backNum 2) { console.log(종료); exitFn(); // 종료 } setTimeout(() > { backNum 0; console.log(backNum); document.querySelector(.btmPop).style.display none; }, 2000); } else { btmBtn3.click(); // 홈으로 console.log(홈으로); } } else { console.log(뒤로 가기 에러); } }; /* RN 웹뷰 인터페이스 처리 th.byun */ async function rnHandleMessage(data) { try { const parsedData JSON.parse(data); if (parsedData.sender RN) { const { sender, action, payload } parsedData; switch (action) { case nativeRetrievedPermissions: { const event new CustomEvent(retrievedPermissions, { detail: payload, }); window.dispatchEvent(event); break; } case nativeSnsLogin: { const event new CustomEvent(retrievedSnsLoginResult, { detail: payload, }); window.dispatchEvent(event); break; } case nativePushFn: { pushFn(payload.type, ); break; } case nativeBackGesture: { backFn(); break; } default: console.warn(RN핸들메시지 액션 없음:, action); break; } } } catch (error) { console.error(RN핸들메시지 에러:, error); } } console.log(리액트 네이티브 웹뷰 존재 여부:, window.ReactNativeWebView); console.log(유저에이전트:, navigator.userAgent); const isAndroid /Android/i.test(navigator.userAgent); const isIos /iPhone|iPad|iPod/i.test(navigator.userAgent); if (window.ReactNativeWebView) { if (isAndroid) { document.addEventListener(message, (event) > { rnHandleMessage(event.data); // Android RN 웹뷰 인터페이스 처리 }); } else if (isIos) { window.addEventListener(message, (event) > { rnHandleMessage(event.data); // iOS RN 웹뷰 인터페이스 처리 }); } else { console.warn(안드로이드 또는 iOS 아님); } } // const userAgent navigator.userAgent; // const isAndroidWebView // /wv/.test(userAgent) && /Android/.test(userAgent); // if (!isAndroidWebView) { // 폰 아니면 넘어가게 하는 코드 주석 // if (!isAndroid && !isIos) { // setTimeout(function () { // let params new URLSearchParams(document.location.search); // let name params.get(test-user); // if (!name) { // name asdf; // } // updateFromNative( // `{DEVICE_ID:TEST_DEVICE_${name},CONTACT_NO:010-1111-2222,token:TEST_TOKEN_${name},OS_TYPE:Android,OS_API_LEVEL:35,OS_VERSION:15,DEVICE_VENDER:Google,DEVICE_MODEL:sdk_gphone64_x86_64}` // ); // }, 2000); // } /script> script typemodule crossorigin src/assets/index-CLLKHbTT.js>/script> link relstylesheet crossorigin href/assets/index-D7A4onu0.css> /head> body> div idroot>/div> !-- div classimsiBackBtn onclickbackFn()>뒤로 가기/div> --> div classbtmPop>뒤로 가기 버튼 한 번 더 누르면 종료됩니다/div> !-- 스플래시 --> div classsplashIndex> img src/img/logo_splash.svg width120 /> img src/img/poweredby.svg width180 /> /div> !-- 로딩중 --> div classpushBack> img src/img/arrow_left_bk.svg classpushBackBtn /> div idlottie-container>/div> /div> !-- alert --> div classalertWrap> div classalertBack>/div> div classalertBox> div classalertTitle>title/div> div classalertContent>content/div> div classalertBtnBox> button classalertBtnOne alertBtnO>확인/button> button classalertBtnOne alertBtnX>취소/button> /div> /div> /div> script> lottie.loadAnimation({ container: document.getElementById(lottie-container), // 애니메이션이 표시될 div renderer: svg, loop: true, autoplay: true, path: /ani/loading_common.json, // JSON 파일 경로 (로컬 또는 URL) }); /script> !-- 전체 화면 --> !-- script> document.querySelector(body).addEventListener(click, () > { const elem document.documentElement; if (elem.requestFullscreen) { elem.requestFullscreen(); } else if (elem.webkitRequestFullscreen) { // Safari, Samsung Internet elem.webkitRequestFullscreen(); } else if (elem.mozRequestFullScreen) { // Firefox elem.mozRequestFullScreen(); } else if (elem.msRequestFullscreen) { // IE / Edge (old) elem.msRequestFullscreen(); } else { console.log(전체 화면 모드를 지원하지 않는 브라우저입니다.); } }); /script> --> !-- one ui 키보드 문제 --> script> let oneUiInputFn (element) > { const isIOS /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; if (isIOS) return; let input document.querySelectorAll(input); let box document.querySelectorAll(element); for (let i 0; i input.length; i++) { inputi.addEventListener(focus, () > { for (let k 0; k box.length; k++) { boxk.style.paddingBottom boxk.offsetHeight - 120 + px; // 상대 위치 계산 let inputRect inputi.getBoundingClientRect(); let boxRect boxk.getBoundingClientRect(); let relativeTop inputRect.top - boxRect.top + boxk.scrollTop; // 스크롤 이동 boxk.scrollTop relativeTop - 120; } }); inputi.addEventListener(blur, () > { console.log(blur); for (let k 0; k box.length; k++) { boxk.style.paddingBottom 100px; } }); } }; /script> !-- 로딩 중 뒤로가기 버튼 클릭 --> script> let pushBack document.querySelector(.pushBack); let pushBackBtn document.querySelector(.pushBackBtn); pushBackBtn.addEventListener(click, () > { pushBack.style.display none; }); /script> !-- alert --> script> let alertFn (type, title, content) > { let alertWrap document.querySelector(.alertWrap) let alertBack document.querySelector(.alertBack) let alertTitle document.querySelector(.alertTitle) let alertContent document.querySelector(.alertContent) let alertBtnO document.querySelector(.alertBtnO) let alertBtnX document.querySelector(.alertBtnX) alertWrap.style.display block alertTitle.innerHTML title alertContent.innerHTML content if(type alert){ alertBtnX.style.display none } alertBack.addEventListener(click, () > { alertWrap.style.display none }) alertBtnO.addEventListener(click, () > { alertWrap.style.display none return true }) alertBtnX.addEventListener(click, () > { alertWrap.style.display none return false }) } /script> !-- 하단 메뉴 들뜸 현상 --> script> if (window.visualViewport) { const onViewportChange () > { const btm_wrap document.querySelector(.btm_wrap) if(!btm_wrap) return; const offset window.visualViewport.height + window.visualViewport.offsetTop - window.innerHeight; if (offset 0) { // 키보드가 열렸을 때 btm_wrap.style.transform `translateY(${offset}px)`; } else { // 키보드 닫힘 btm_wrap.style.transform translateY(0); } }; window.visualViewport.addEventListener(resize, onViewportChange); window.visualViewport.addEventListener(scroll, onViewportChange); } /script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]