У расширений для Chrome, есть фоновая страница background.js
Внутри этой фоновой страницы можно разместить код, который будет выполнен до загрузки сайтов и заменит заголовок referer. В этом вам поможет chrome.webRequest API, пример кода для фоновый страницы:
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
var newRef = "http://referer.domain/helloworld.example";
var gotRef = false;
for(var n in details.requestHeaders){
gotRef = details.requestHeaders[n].name.toLowerCase()=="referer";
if(gotRef){
details.requestHeaders[n].value = newRef;
break;
}
}
if(!gotRef){
details.requestHeaders.push({name:"Referer",value:newRef});
}
return {requestHeaders:details.requestHeaders};
},{
urls:["http://target.domain/*"]
},[
"requestHeaders",
"blocking"
]);
Между тем, чтобы этот код работал, а манфисте обязательно должны быть указаны разрешения webRequest и webRequestBlocking, кусочек одного из моих манифестов, как пример:
"permissions" : [ "webRequest", "webRequestBlocking", "https://*.avito.ru/*" ],
"background" : { "persistent": true, "scripts": [ "background.js" ] },
Забыл совсем, чтобы предобработчик работал во фрейме, надо заменить условие с:
{
urls:["http://target.domain/*"]
}
на:
{ urls: [ '<all_urls>' ], types: [ 'sub_frame' ] }
P. S. Если желайте вникнуть в тему, гуглите про webRequest API и про событие onBeforeSendHeaders, на русском конечно нормальных материалов нет, но на англ. полно толковых мануалов.