<해결 방법>
카카오톡/라인 인앱브라우저에서 외부브라우저 띄우기 (2023.09.21 최신 - inapp browser bypassing)
이전부터 카카오톡 등과 같은 메신저에서 인앱브라우저를 강제하는 불합리한 조치를 우회하기위해 다양한 방법을 이 블로그에 포스팅해왔었다. ftp프로토콜을 활용한 우회방법 : https://burndogfath
burndogfather.com
<카카오톡 자체 브라우저 사용 원인(추측)>
https://brunch.co.kr/@b30afb04c9f54dc/45
카카오톡은 왜 인앱 브라우저를 고수할까
인앱브라우저와 인앱결제에 대하여 | 카카오톡,인스타그램은 왜 인앱 브라우저를 고수하는걸까? 친구가 카카오톡으로 공유해준 인스타그램 게시글 링크를 선택하면, 인스타그램으로 바로 넘어
brunch.co.kr
// DOM이 완전히 로드된 후에 콜백을 실행하는 함수
var inappdeny_exec_vanillajs = (callback) => {
if (document.readyState !== 'loading') {
callback();
} else {
document.addEventListener('DOMContentLoaded', callback);
}
}
// DOM이 완전히 로드된 후에 실행할 주요 로직
inappdeny_exec_vanillajs(() => {
// 값을 클립보드로 복사하는 함수
function copytoclipboard(val){
var t = document.createElement("textarea");
document.body.appendChild(t);
t.value = val;
t.select();
document.execCommand('copy');
document.body.removeChild(t);
};
// 인앱 브라우저 리다이렉션을 처리하는 함수
function inappbrowserout(){
// 현재 URL을 클립보드에 복사
copytoclipboard(window.location.href);
// Safari 사용자를 위한 안내 메시지 및 리다이렉트
alert('URL주소가 복사되었습니다.\n\nSafari가 열리면 주소창을 길게 터치한 뒤, "붙여놓기 및 이동"를 누르면 정상적으로 이용하실 수 있습니다.');
location.href='x-web-search://?';
};
// 사용자 에이전트 및 현재 URL 가져오기
var useragt = navigator.userAgent.toLowerCase();
var target_url = location.href;
// 특정 사용자 에이전트를 확인하고 해당하는 동작 수행
if (useragt.match(/kakaotalk/i)) {
// KakaoTalk 사용자는 KakaoTalk URL 스키마를 사용하여 외부 브라우저로 리다이렉트
location.href = 'kakaotalk://web/openExternal?url=' + encodeURIComponent(target_url);
} else if (useragt.match(/line/i)) {
// Line 사용자는 Line URL 스키마를 사용하여 외부 브라우저로 리다이렉트
if (target_url.indexOf('?') !== -1) {
location.href = target_url + '&openExternalBrowser=1';
} else {
location.href = target_url + '?openExternalBrowser=1';
}
} else if (useragt.match(/inapp|naver|snapchat|wirtschaftswoche|thunderbird|instagram|everytimeapp|whatsApp|electron|wadiz|aliapp|zumapp|iphone(.*)whale|android(.*)whale|kakaostory|band|twitter|DaumApps|DaumDevice\/mobile|FB_IAB|FB4A|FBAN|FBIOS|FBSS|trill|SamsungBrowser\/[^1]/i)) {
// 다른 인앱 브라우저에 대한 처리
if (useragt.match(/iphone|ipad|ipod/i)) {
// iPhone의 경우 Safari에서 열도록 사용자에게 안내 메시지 표시 및 Safari로 열기 버튼 제공
// 모바일 호환성을 위해 viewport 및 글꼴 조정
// 이미지 표시
} else {
// Android의 경우 Chrome에서 강제로 열기 위해 intent 사용
location.href = 'intent://' + target_url.replace(/https?:\/\//i,'') + '#Intent;scheme=http;package=com.android.chrome;end';
}
}
});
'기타' 카테고리의 다른 글
[자격증] 정보처리기사 필기 압축 요약집 (2) | 2024.02.14 |
---|---|
한글 도메인 변환 방법 (1) | 2024.02.07 |
CMD를 통해 윈도우 정품 인증 받는 방법 (0) | 2024.01.21 |
[API] 카카오 API 사용 방법1 (환경 설정) (0) | 2023.12.08 |
[WEB] 깃허브 웹 호스팅(무료) 및 웹 주소 변경(유료) (3) | 2023.01.30 |