Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№128-01-2012 15:10:29

Void Dragon
Участник
 
Группа: Members
Зарегистрирован: 13-04-2011
Сообщений: 521
UA: IE 6.0

Блокировка или замена свойства navigator

О навигаторе:
http://spec.piramidin.com/clientref13/nav.htm

По ссылке даже, если изменить useragent [firefox] с помощью сриптов можно вытащить какой браузер.
http://whoer.net/extended

Пример того, как блокируется событие:

// ==UserScript==
// @name           BlockUnloadEvents
// @namespace      http://theaceoffire.8k.com/STOPTHEMADDNESS
// @description    This stops ANY AND ALL javascript that stops you from leaving a page. Inspired by this greasemonky script: http://userscripts.org/scripts/show/20781
// @include        *
// ==/UserScript==
(function() {
      unsafeWindow.onbeforeunload = null;

      unsafeWindow.onunload = null;

      //unsafeWindow.alert = null;

      //unsafeWindow.confirm = null;

      //unsafeWindow.prompt = null;

      //unsafeWindow.open = null; 
})();

Как по аналогии блокировать navigator? Пробовал так:

// ==UserScript==
// @name           Block
// @namespace      http://theaceoffire.8k.com/STOPTHEMADDNESS
// @description   
// @include        *
// ==/UserScript==
(function() {
      unsafeWindow.navigator = null;

      //unsafeWindow.alert = null;

      //unsafeWindow.confirm = null;

      //unsafeWindow.prompt = null;

      //unsafeWindow.open = null; 
})();

Вроде не работает.

Отсутствует

 

№228-01-2012 16:23:39

Void Dragon
Участник
 
Группа: Members
Зарегистрирован: 13-04-2011
Сообщений: 521
UA: Firefox 9.0

Re: Блокировка или замена свойства navigator

okkamas_knife
Меня интересует конкретно этот случай. Хотя бы из любопытства.

Отсутствует

 

№328-01-2012 16:59:32

Void Dragon
Участник
 
Группа: Members
Зарегистрирован: 13-04-2011
Сообщений: 521
UA: Firefox 9.0

Re: Блокировка или замена свойства navigator

Понятно.

Все свойства объекта navigator - только для чтения/read-only.

Как это можно обойти?

Отсутствует

 

№404-02-2012 19:28:18

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4247
UA: Firefox 10.0

Re: Блокировка или замена свойства navigator

Тут минимум две проблемы – переписать свойства navigator'а до выполнения скриптов страницы и переписать их так, чтобы было не определить факт подмены, иначе можно будет отслеживать по факту блокировки (ведь блокирующих явно будет мало).

По запуску до скриптов страницы нужны исследования. Если и правда не обойтись без binding'ов, то binding может быть только один, так что, видимо, сломается RightToClick. Или надо динамически создавать расширяющий binding. Удастся ли при этом работать более, чем двум таким расширениям – неизвестно.

По незаметной подмене, возможно, может помочь https://developer.mozilla.org/en/JavaSc … ects/Proxy. А может и не помочь. :)
Вроде бы, автор ABP уже пытался: http://adblockplus.org/blog/do-javascri … n-wrappers, только в результате блокировка всплывающих окон была сделана иначе:

adblock_plus-2.0.3-sm+tb+fn+fx.xpi\modules\ContentPolicy.jsm

Выделить код

Код:

    //
    // nsIObserver interface implementation
    //
    observe: function(subject, topic, data, additional)
    {
        switch (topic)
        {
            case "content-document-global-created":
            {
                if (!(subject instanceof Ci.nsIDOMWindow) || !subject.opener)
                    return;

                let uri = additional || Utils.makeURI(subject.location.href);
                if (!Policy.processNode(subject.opener, subject.opener.document, Policy.type.POPUP, uri, false))
                {
                    subject.stop();
                    Utils.runAsync(subject.close, subject);
                }


Далее про замену.
Из консоли ошибок:

Выделить код

Код:

Object.__defineGetter__.call(
    top.opener.content.navigator,
    "language",
    function() { return "foo"; }
);

Вроде, Ok – ошибок нет.

Выделить код

Код:

top.opener.content.navigator.language

Ошибка: attempt to run compile-and-go script on a cleared scope

При проверке со страницы в navigator.language по-прежнему исходное значение.


Так что есть довольно большая вероятность, что без изменений изнутри ничего не получится.
И потом все равно надо будет переопределить еще и toLocaleString():
new Date().toLocaleString(); // 4 Февраль 2012 г. 00:00:00
123456.789.toLocaleString(); // 123 456,789

Плюс браузер можно определить по тому, что он поддерживает. А это и CSS, и HTML5, и куча всего прочего.
Другое дело, что мало кому надо заниматься исследованиями по такому определению браузера. :)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№504-02-2012 21:12:48

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4247
UA: Firefox 10.0

Re: Блокировка или замена свойства navigator

okkamas_knife пишет:

достаточно на страничке указать какую нибудь из стандартных локальных картинок  и потом скриптом проверить загрузилась она или нет.

Не, это уже исправили (если вообще когда-то можно было, не помню):

Попытка нарушения системы безопасности: содержимое «http://forum.mozilla-russia.org/viewtopic.php?pid=544357#p544357» не имеет права загружать file:///C:/Users/Public/Pictures/Sample%20Pictures/Chrysanthemum.jpg или ссылаться на него.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]