2

Будучи немного в сознании, у Моих браузеров есть белый список для javascript, который они могут запустить. Но содержимое тега <noscript> может отдать мое предпочтение, потому что браузер затем пытается загрузить эти надоедливые аналитические изображения 1x1.

Есть ли способ заставить браузер игнорировать [1] этот контент, даже если javascript отключен?

Я не говорю, какой браузер, потому что я могу поменять браузеры с открытым исходным кодом, если это необходимо. Chromium, Firefox, Opera и т.д. Итак, ответы, которые относятся к одному браузеру, хороши.


[1] Под "игнорированием" я подразумеваю не делать запросы на приманку, которая выдаст статус отключенного JavaScript . Я могу выставить usercript, который удаляет <noscript> из DOM, но к тому времени это может быть слишком поздно.

3 ответа3

1

Вы имеете в виду любопытный код вроде:

<noscript>
    <img height="1" width="1" alt="" style="display:none"
     src="https://www.facebook.com/tr?id=redacted&ev=PageView&noscript=1">
</noscript>

??

Я не знаю, как отключить оценку <noscript> , но в приведенном выше примере вы могли бы написать короткое расширение для браузера, чтобы отменить любой запрос с помощью URL, содержащего подстроку facebook.com/tr? ,

См. Chrome.webRequest для описания API браузера Chrome для просмотра, изменения или блокировки запросов в полете.

Вот рабочий пример:

manifest.json:

{
"name": "Website Blocker",
"description": "Keeps the browser from fetching tracking URLs",
"version": "1.0",
"manifest_version": 2,
"permissions": [
    "webRequest",
    "webRequestBlocking",
    "*://*.facebook.com/tr?*"
],
"background": {
    "scripts": [
        "script.js"
    ],
    "persistent": true
},
"icons": {
    "256": "world-blocker.png"
},
"converted_from_user_script": true
}

script.js:

"use strict"

console.log("Website Blocker is running!");
var re = new RegExp('https?://.*?\.?facebook.com/tr\?', 'i');

function checkUrl(details) {
    var cancel = !!details.url.match(re);
    if (!cancel)
        console.log(`Passing ${details.url}`);
    return {cancel: cancel};
}

chrome.webRequest.onBeforeRequest.addListener(
    checkUrl,
    {urls: ['*://*.facebook.com/tr?*']},
    ['blocking']
);

Используйте все, что вы хотите для значка. Или удалите его, и пусть браузер предоставит фиктивный. Его единственная роль заключается в выделении записи расширения на странице chrome://extensions .

Расширение отлично работало на рассматриваемой странице. Журнал консоли страницы содержит сообщение об ошибке net::ERR_BLOCKED_BY_CLIENT для выборки изображения. Аналогично, красная линия сбоя на вкладке Сеть.

Кроме того, предварительная фильтрация URL работает хорошо. JavaScript вызывается только для определенного URL-адреса отслеживания. Проверяя консоль расширения, я не вижу сообщений "Passing ...", даже когда захожу на Facebook.

0

Если вы используете uBlock Origin, фильтр

##noscript

должно работать, хотя я не проверял это. Исходные фильтры uBlock запускаются до того, как страница будет оценена, поэтому это должно предотвратить выбор этих элементов.

0

Я не уверен, где вы на самом деле обеспокоены информацией о том, включен ли в вашем браузере JavaScript или нет. Вы правы в том, что некоторые браузеры делают больше, чем хотелось бы некоторым. Статья, на которую вы ссылались в одном из ваших комментариев, на мой взгляд, имеет другую тему, чем ваш вопрос.

Что касается заявленного сценария в вашем вопросе, это обычная работа браузера для запроса ресурсов, которые являются частью страницы. Браузер не знает о фактических данных, которые загружаются с URL-адреса, просто просматривая его, и поэтому не сможет обнаружить один за другим пиксель отслеживания перед его фактической загрузкой. Это также ничего не делает ваш браузер "за вашей спиной", и вы, вероятно, больше беспокоитесь о третьей стороне, которая поставила эту графику, чем ваш браузер.

Решения, которые я вижу в этом вопросе (прямо сейчас), следующие:

  • Заблокировать все запросы от чужих доменов. Вы, кажется, уже знаете о наборе инструментов, который может это сделать. Вы можете, например, использовать RequestPolicy и установить область соответственно. Это не защитит вас от отслеживания пикселей, которые доставляются с того же домена, который вы посещаете.
  • Используйте что-то вроде скрипта GreaseMonkey или аналогичного, чтобы изменить DOM и удалить часть noscript . В зависимости от того, когда этот скрипт загружен, может быть слишком поздно, и ваш браузер также может попытаться предварительно его кэшировать. В этом может помочь следующий вопрос: как запустить скрипт greasemonkey перед отображением содержимого страницы?
  • Используйте текстовый браузер.
  • Разветвите свой любимый браузер и измените его, чтобы не оценивать часть noscript. Это, вероятно, самый безопасный вариант, но также и самый сложный.

На некоторых сайтах тег noscript может содержать ценную информацию для вас. Поскольку вы не сможете разглядеть природу этого контента, не просмотрев его, потенциально загружая дополнительные ресурсы, похоже, что здесь нет хорошего способа определить "плохой" контент. За исключением некоторых действительно субъективных правил.

Более того, если вы беспокоитесь об отслеживании, а не о том, когда у вас включен JavaScript или нет, есть гораздо больше технологий, которые могут вас раскрыть. Как элемент `canvas ', Flash и куки. Таким образом, вопрос заключается в том, какова ваша настоящая цель, игнорируя этот раздел страницы, когда многие другие компоненты могут быть столь же опасными.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .