@drwhite87

Как скрыть referer для двух iframe на странице?

Доброго времени суток.
Задача:
1. В окне браузера открыть два сторонних сайта, разделив экран на 2 половины (думаю сделать это через 2 iframe, если есть другие способы, подскажите);
2. Немного их уменьшить, чтобы было видно больше контента на экране (zoom: 0.8);
3. И самое основное, скрыть referer для этих сторонних сайтов.
Думаю, это возможно сделать с помощью расширения chrome.

Можно ли такое сделать? Если да то направьте в нужную сторону.

Спасибо.
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
У расширений для 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, на русском конечно нормальных материалов нет, но на англ. полно толковых мануалов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы