Firefox — Отключить ключевые слова ‘debugger’

#javascript #debugging #firefox #firebug #firefox-developer-tools

#javascript #отладка #firefox #firebug #firefox-разработчик-инструменты

Вопрос:

Как мне сказать Firefox не останавливаться, если он видит debugger ключевое слово?

Мне нужно избегать непрерывного debugger цикла на случай, если веб-сайт использует защиту от отладки, генерируя debugger инструкции «на лету» с использованием таймеров.

Вот пример. В случае, если вы откроете консоль отладки, скрипт выдаст тонны инструкций отладчика, которые заблокируют вас от нормальной работы по отладке.

Примером веб-сайта является http://www.avito.ru — самый большой засекреченный сайт в России. Откройте его, а затем откройте консоль отладчика, и он будет немедленно остановлен на debugger ключевом слове в сгенерированном скрипте.

 (function(x/**/) {
    (function(f){
        (function a(){
            try {
                function b(i) {
                    if(
                        ('' (i/i)).length !== 1 ||
                        i % 20 === 0
                    ) {
                        (function(){}).constructor('debugger')();
                    } else {
                        debugger;
                    }

                    b(  i);
                }

                b(0);
            } catch(e) {
                f.setTimeout(a, x)
            }
        })()
    })(document.body.appendChild(document.createElement('frame')).contentWindow);
});  

Комментарии:

1. Поскольку вы не указали, какой инструмент вы используете, я добавил флаги ‘firebug’ и ‘firefox-developer-tools’.

2. Для справки, тот же вопрос был задан в дискуссионной группе Firebug , предоставляющей веб-сайт www.avito.ru в качестве примера.

3. Себастьян, я тоже искал помощи там 🙂

4. Я так и думал :-), хотя в вашем вопросе здесь вы не указали веб-сайт в качестве примера, поэтому я подумал, что упомяну его в комментарии. Вы все равно можете настроить свой вопрос, чтобы включить ссылку.

5. Любой, кто реализует подобные средства защиты отладчика, верит в «безопасность через неизвестность» и серьезно заслуживает проверки на наличие уязвимостей.

Ответ №1:

В текущей версии Firefox при написании этого ответа (версия 63.0.3) в инструментах разработчика, разделе Debugger, есть значок со всплывающей подсказкой «Пропустить все приостановки» или «Деактивировать точки останова». Когда он включен, кажется, что он отключает остановку при любой debugger инструкции.

Пропустить все приостановки FireFox 63.0.3
Отключить точки останова в FireFox 71.0b9

Комментарии:

1. Вот почему современные интерфейсы отстой. В старые времена это был бы пункт меню в меню верхнего уровня «Debug».

2. У меня это не сработало, отладчик все еще останавливается debugger .

3. значок другой, но в chromium Edge это сработало так же. спасибо 😉

Ответ №2:

Очевидно, что страница пытается избежать того, чтобы люди отлаживали свой код JavaScript с помощью этой конструкции.

Отладка в Firebug

Firebug позволяет устанавливать отключенные точки останова для debugger операторов. Поскольку страница генерирует переменную глубину стека вызовов, вам нужно будет установить эти отключенные точки останова, чтобы все они могли правильно отлаживать JavaScript. К сожалению, Firebug, похоже, глючит, когда дело доходит до установки этих точек останова.

Кроме того, Firebug не имеет возможности игнорировать все debugger инструкции.

Итак, если вам не нужно отлаживать JavaScript, а только HTML, CSS, Сетевые запросы и т. Д., Вы можете просто отключить панель сценариев, чтобы избежать этих раздражающих остановок отладчика. Для этого щелкните правой кнопкой мыши вкладку «Сценарий» и нажмите «Включить» в открывшемся меню.

Отключить панель Firebug's * Script *

Примечание: Поскольку разработка Firebug прекращена, бесполезно подавать запрос на ее улучшение.

Отладка в Firefox DevTools

К сожалению, инструменты разработки Firefox в настоящее время не позволяют избежать остановок при debugger выполнении инструкций. Поэтому вам нужно подождать, пока не будут исправлены ошибка 1300934 (в которой упоминается тот же веб-сайт в качестве примера), ошибка 925269 и / или проблема 828.

Кроме того, невозможно полностью отключить панель Debugger, которая зарегистрирована как ошибка 1247198.

Комментарии:

1. Firebug, конечно, с открытым исходным кодом (как и Firefox). Поэтому может быть возможно изменить его, чтобы добавить желаемую функцию и отправить запрос на извлечение.

2. Правильно, хотя, как уже отмечалось, Firebug прекращается и перестает работать после включения многопроцессорного Firefox . Кроме того, инструменты разработки Firefox имеют открытый исходный код, поэтому, возможно, было бы лучше предоставить для них исправление.

3. Извините, я имел в виду «изменить любой из них», а не конкретно Firebug.

4. Правильно. Поскольку основная работа над отладчиком, похоже, сейчас находится на GitHub, выпуск 828 кажется подходящим местом для этого.

5. > нет способа полностью отключить панель отладчика devtools.debugger.enabled=false , не помогло бы about:config ?

Ответ №3:

если вы используете Greasemonkey, вы можете переписать setTimeout/setInterval функцию, чтобы отключить скрипт

 unsafeWindow.setTimeout = function () {};
  

Комментарии:

1. Это, конечно, предотвратит работу всех таймеров тайм-аута в области окна страницы

Ответ №4:

Chrome

в Chrome вы можете отредактировать точку останова и поставить условие, которое всегда равно false, оно больше не попадет в отладчик

введите описание изображения здесь

другой вариант — использовать «никогда не останавливаться здесь»

введите описание изображения здесь

Firefox

для firefox вы можете поместить скрипт в черный ящик, чтобы он не попадал в точку останова. для меня это приводит к зависанию firefox. но когда вы перезапускаете браузер. тогда все в порядке, введите описание изображения здесь

Ответ №5:

Если вы хотите остановить отладку без потери точек останова, вам нужно отключить точки останова, а не только деактивировать. Щелкните справа над списком точек останова и выберите Отключить точки останова. Тогда, даже если вы обновите страницу, все точки останова останутся отключенными. Протестировано с Firefox 101.0.1 на Ubuntu.

введите описание изображения здесь