Задать вопрос
@drwhite87

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

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

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

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

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
Wanted. Москва
от 250 000 до 400 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
22 янв. 2025, в 18:42
1000 руб./за проект
22 янв. 2025, в 18:00
15000 руб./за проект
22 янв. 2025, в 17:57
2000 руб./в час