Вообще я бы подумал в сторону хранения вектора в виде набора инструкций для 2D Canvas в бинарном формате. Хотя, конечно, SVG удобнее заменять потом на реальную картинку.
Кстати, я правильно понимаю, что двойное отрицание в таких конструкциях всегда работает как подтверждение, а не отмена отрицания? Т.е. «мы не хотим никакого образования», а не «мы не хотим остаться без образования».
Вообще да, сеттер на onload/onerror для основного скрипта не поможет. Просто они там в случае ошибки сначала создают ещё один и вот на нём уже сработает. Правда если его адблок не заблокирует, то тут уже без разницы сработает onload на нём или нет, наверное. В JS Fixes я там и window.open переопределил, да.
Для начала там нет eval, который можно было бы заменить. Это, конечно, классный способ развернуть недоразумение вроде «eval(function(p,a,c,k,e,d){...}(...));» — некоторые «разработчики» до сих пор думают, что такое сжатие усложняет понимание их кода, но в данном случае код скрипта изначально исполним в браузере и не проходит предварительную обработку. Браузеру ведь без разницы будет ли у тебя умножение записано как let c = a * b; или как let z = {m1f:(x,y)=>x*y}; let c = z.m1f(a,b); Результат в обоих случаях тот же. Во втором случае просто больше лишних действий.
Там есть два блока кода в текстовой форме: скрипт в две команды закодированный в data:url и используемый для перехода на другую страницу при открытии оного в новом окне, и скрипт, спрятанный в стиле. Последний действительно можно выцепить при желании через код, но поди ж пойми что он там вообще есть не разобрав для начала этот вот.
> Написать расширение для браузера, которое будет инжектить в head страницы скрипт реализующий всё вышеперечисленное и выполняющийся до вызова скрипта с рекламой?
Да, именно так. Правда писать само расширение не нужно — достаточно скрипта для Tampermonkey/Violentmonkey с "@run-at document-start" в заголовке.
> Btw, jsnice не нужен, можно сделать pretty print прямо в Chrome DevTools.
Мне просто этого зверька прислали в виде текста. На сайте я эту дрянь потом очень долго отлавливал. Там на рандоме то ничего не выпадает, то другой скрипт вылезает с банальным eval(function(p,a,c,k,e,d), в котором интересным является лишь то, как они открывают попап в Хроме. А этот вот довольно редко.
Кстати, разве DevTools приводит числа в разных формах записи к десятичной системе?
К сожалению prepack там только хуже делает. Удаляет большую часть кода так-как считает её недостижимой, выносит все функции из словаря отдельными функциями (и оставляет словарь), не собирает даже те строки, которые не выкинул и оставляет часть тернарных операторов. Идея у них хорошая, но с таким вот кошмаром пока не работает.
Разве что для перехвата тех скриптов, который этот вот код распаковывает. А вот сам код оно, на сколько я помню, покажет как есть в том ужасном виде, что в начале.
Кстати, здравствуйте. Если что, то я автор JS Fixes. :)
А таймаут в 5 секунд без загрузки системы можно сделать через async await, например. Смотря где применить так-как промис async возвращает сразу, а вот код внутри уже можно тормозить через дичь вроде:
await new Promise((r,j)=>setTimeout(()=>r(), 5000));
Игры обычно покупают не столько из-за доступности плюшек вроде DLC — они обычно входят в пиратские паки. А из-за удобства. Обновления всегда вовремя и без проблем и поиска новых репаков и обновлений к ним, которые либо дико задерживаются, либо вообще никогда не выходят. Это особенно актуально с release-day патчами. Установка в 1-2 клика в клиенте вместо того же поиска, кривых сетапов и потенциальной вирусни. К тому же в пиратках часто недоступен сетевой функционал.
Если учесть, что последнее время Valve напоминает одну большую бухгалтерию при магазине и практически не занимается даже теми проектами, которые приносят баблище, то я бы не стал ждать HL3 в этом веке.
Главная проблема Оперы заключается в том, что они делали всё как для людей… вот только так и не смогли найти этих самых людей, для которых её делали.
ИМХО, но единственное, что действительно великолепно было сделано в Опере, это работа на медленных соединениях. Раньше пользовался, но потом сбежал с неё на Фокс так-как понял, что не вхожу в список тех людей, для которых её делали.
Для слежения за обновлениями в интересующих меня темах и использую подписки на почту. Следить за каждым форумом и комиксом персонально его посещая для этого это какое-то адово извращение.
Фокус в том, что они реально нужны подавляющему большинству пользователей для того, чтобы понять, что вообще происходит. Так, например, анимация добавления элемента в закладки или меню дополнительных функций сразу говорит где его потом искать. Это особенно критично для начинающих пользователей и тех, кто не часто пользуется браузером и компьютером вообще.
В то же время с новым интерфейсом не на XUL это всё будет жрать даже меньше процессорного времени, чем то, что есть сейчас.
Для начала там нет eval, который можно было бы заменить. Это, конечно, классный способ развернуть недоразумение вроде «eval(function(p,a,c,k,e,d){...}(...));» — некоторые «разработчики» до сих пор думают, что такое сжатие усложняет понимание их кода, но в данном случае код скрипта изначально исполним в браузере и не проходит предварительную обработку. Браузеру ведь без разницы будет ли у тебя умножение записано как let c = a * b; или как let z = {m1f:(x,y)=>x*y}; let c = z.m1f(a,b); Результат в обоих случаях тот же. Во втором случае просто больше лишних действий.
Там есть два блока кода в текстовой форме: скрипт в две команды закодированный в data:url и используемый для перехода на другую страницу при открытии оного в новом окне, и скрипт, спрятанный в стиле. Последний действительно можно выцепить при желании через код, но поди ж пойми что он там вообще есть не разобрав для начала этот вот.
Да, именно так. Правда писать само расширение не нужно — достаточно скрипта для Tampermonkey/Violentmonkey с "@run-at document-start" в заголовке.
Я вот такой кошмар поддерживаю, например: greasyfork.org/en/scripts/19993-ru-adlist-js-fixes
> Btw, jsnice не нужен, можно сделать pretty print прямо в Chrome DevTools.
Мне просто этого зверька прислали в виде текста. На сайте я эту дрянь потом очень долго отлавливал. Там на рандоме то ничего не выпадает, то другой скрипт вылезает с банальным eval(function(p,a,c,k,e,d), в котором интересным является лишь то, как они открывают попап в Хроме. А этот вот довольно редко.
Кстати, разве DevTools приводит числа в разных формах записи к десятичной системе?
А таймаут в 5 секунд без загрузки системы можно сделать через async await, например. Смотря где применить так-как промис async возвращает сразу, а вот код внутри уже можно тормозить через дичь вроде:
Игры обычно покупают не столько из-за доступности плюшек вроде DLC — они обычно входят в пиратские паки. А из-за удобства. Обновления всегда вовремя и без проблем и поиска новых репаков и обновлений к ним, которые либо дико задерживаются, либо вообще никогда не выходят. Это особенно актуально с release-day патчами. Установка в 1-2 клика в клиенте вместо того же поиска, кривых сетапов и потенциальной вирусни. К тому же в пиратках часто недоступен сетевой функционал.
Дело в том, что второе "<" производит сравнение true < 1.1, приводит true к 1. Естественно оно меньше 1.1.
Главная проблема Оперы заключается в том, что они делали всё как для людей… вот только так и не смогли найти этих самых людей, для которых её делали.
ИМХО, но единственное, что действительно великолепно было сделано в Опере, это работа на медленных соединениях. Раньше пользовался, но потом сбежал с неё на Фокс так-как понял, что не вхожу в список тех людей, для которых её делали.
Пожалуй пора было бы уже привыкнуть, что ждать стоит только спиннер на табе, да и тот не всегда.
Но, пожалуй, могу понять.
Ты что, это же работу работать нужно, а не натравить поиск по ключевым словам на уже существующую переписку.
Для слежения за обновлениями в интересующих меня темах и использую подписки на почту. Следить за каждым форумом и комиксом персонально его посещая для этого это какое-то адово извращение.
Фокус в том, что они реально нужны подавляющему большинству пользователей для того, чтобы понять, что вообще происходит. Так, например, анимация добавления элемента в закладки или меню дополнительных функций сразу говорит где его потом искать. Это особенно критично для начинающих пользователей и тех, кто не часто пользуется браузером и компьютером вообще.
В то же время с новым интерфейсом не на XUL это всё будет жрать даже меньше процессорного времени, чем то, что есть сейчас.