[ChromeExtension] User-Agent Spoofing (webRequest, onBeforeSendHeader, webRequestBlocking)
Chrome Extension 2013. 12. 20. 16:29ChromeExtension으로 header 정보를 조작해서 user-agent를 spoofing 해보려는데 조각 정보들만 있고,
완전한 예제 코드 같은게 없어서 삽질 좀 한 다음,
미래의 나를 위해 이 기록을 남김.
우선 manifest.json 에 permission 설정을 아래처럼 추가해야 함.
...
"permissions": [
"<all_urls>", // 이건 모든 request마다 다 넣을라고
"webRequest", // webRequest를 사용하기 위해
"webRequestBlocking" // blocking 모드를 사용하기 위해
]
...
...
본격 가로채기.
background.js 에서 request 시 header를 보내기 전에 아래처럼 header를 조작함.
// request filter
var requestFilter = {
// URL 필터. header를 조작하고자 하는 URL 패턴을 넣음. <all_urls>는 모든 request에 다 조작
'urls': ['<all_urls>'],
// 타입에 따른 필터. 종류는 많음.
// "main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", or "other"
'types': ['main_frame'] // 메인프레임에만
};
// opt_extraInfoSpec
var optExtraInfoSpec = [
// 이게 있어야 callback이 blocking 모드로 동작한다.
// 그리고 이걸 할려면 manifest permissions에 webRequestBlocking 이 있어야 한다.
'blocking',
'requestHeaders'
];
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
var headers = details.requestHeaders;
headers.forEach(function(header, i){
// user-agent 조작
if (header.name.toLowerCase() === 'user-agent') {
header.value = '백충덕 브라우저';
}
});
return {requestHeaders: headers};
}, requestFilter, optExtraInfoSpec);
[참조]
1. 거의 완벽한 예제