@drwhite87

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы