>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Скрипты http://forum.mozilla-russia.org/viewforum.php?id=37 >Блокировка или замена свойства navigator http://forum.mozilla-russia.org/viewtopic.php?id=53493 |
Void Dragon > 28-01-2012 15:10:29 |
О навигаторе: По ссылке даже, если изменить useragent с помощью сриптов можно вытащить какой браузер. Пример того, как блокируется событие:
Как по аналогии блокировать navigator? Пробовал так:
Вроде не работает. |
Void Dragon > 28-01-2012 16:23:39 |
okkamas_knife |
Void Dragon > 28-01-2012 16:59:32 |
Понятно.
Как это можно обойти? |
Infocatcher > 04-02-2012 19:28:18 |
Тут минимум две проблемы – переписать свойства navigator'а до выполнения скриптов страницы и переписать их так, чтобы было не определить факт подмены, иначе можно будет отслеживать по факту блокировки (ведь блокирующих явно будет мало). По запуску до скриптов страницы нужны исследования. Если и правда не обойтись без binding'ов, то binding может быть только один, так что, видимо, сломается RightToClick. Или надо динамически создавать расширяющий binding. Удастся ли при этом работать более, чем двум таким расширениям – неизвестно. По незаметной подмене, возможно, может помочь https://developer.mozilla.org/en/JavaSc … ects/Proxy. А может и не помочь. 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 – ошибок нет. Ошибка: attempt to run compile-and-go script on a cleared scope При проверке со страницы в navigator.language по-прежнему исходное значение. Так что есть довольно большая вероятность, что без изменений изнутри ничего не получится. Плюс браузер можно определить по тому, что он поддерживает. А это и CSS, и HTML5, и куча всего прочего. |
Infocatcher > 04-02-2012 21:12:48 |
okkamas_knife пишет
Не, это уже исправили (если вообще когда-то можно было, не помню):
|