6

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

Мне нужно избегать непрерывной петли 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); 
 
});

+0

Как вы не упомянули, какой инструмент вы используете, я добавил «поджигатель» и «firefox- флаги разработчиков-инструментов. –

+0

Для справки, тот же вопрос был [задан в группе обсуждения Firebug] (https://groups.google.com/forum/#!topic/firebug/uuBYroqt4gA), в качестве примера можно привести веб-сайт www.avito.ru. –

+0

Себастьян, это я тоже искал помощи :) – user201202

ответ

3

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

Debugging в Firebug

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

Кроме того, Firebug не имеет возможности игнорировать все операторы debugger.

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

Disable Firebug's *Script* panel

Примечание: Поскольку Firebug development is discontinued, это бесполезно подавать запрос улучшающего для него.

Debugging в Firefox Devtools

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

Кроме того, нет возможности отключить отладчик , который подан как bug 1247198.

+1

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

+1

Правильно, хотя, как отмечено, Firebug прекращен и перестает работать один раз [multi-process Firefox] (https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox). Также Firefox DevTools - с открытым исходным кодом, поэтому лучше было бы предоставить патч для них. –

+1

Извините, я имел в виду «изменить любой из них», а не специально Firebug. –

3

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

unsafeWindow.setTimeout = function() {};