chrome.webRequest API로 request를 차단하기 위해 chrome.webRequest.onBeforeRequest 이벤트를 이용한다.
chrome.webRequest.onBeforeRequest는 request가 발생하려고 할 때 동작하는 것으로, TCP 연결이 이루어지기 전에 전송되며 request를 취소하거나 리다이렉션하는데 사용한다.
chrome.webRequest API의 자세한 정보는 개발자 도구에서 볼 수 있다.
chrome.webRequest.onBeforeRequest 이벤트의 코드 구조는 다음과 같다.
추가로 이벤트에서 request를 차단하기 위해서는 확장 프로그램 manifest.json 파일의 permission부분에 webRequest와 webRequestBlocking를 추가해줘야 한다.
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
//code ..
return {};
},
{urls: ["<all_urls>"]},
["blocking"]
);
urls의 <all_urls>는 모든 url에 이벤트가 적용된다는 의미로, 특정 url을 설정해줄 수도 있다.
다음은 chrome.webRequest.onBeforeRequest 이벤트를 이용해 request를 차단하고, 리다이렉션하는 예시이다.
1) request 차단
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
//code ..
console.log(details.url);
return {cancel:true}; //details.url 차단
return {cancel: details.url.indexOf("://www.evil.com/") != -1}; //details.url에 ://www.evil.com/이 포함되어있으면 차단
},
{urls: ["<all_urls>"]},
["blocking"]
);
2) request 리다이렉션
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
//code ..
console.log(details.url);
return {redirectUrl: naver.com}; //네이버로 리다이렉션
},
{urls: ["<all_urls>"]},
["blocking"]
);
'DEVELOPMENT > chrome extension' 카테고리의 다른 글
크롬 익스텐션 Safe Browsing 소개 (0) | 2020.12.29 |
---|---|
chrome extension 만들기 (hello, world 띄우기) (0) | 2020.12.28 |