1

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

Можно ли поставить точку останова в моем браузере встроенного в navigator.geolocation.getCurrentPosition или navigator.geolocation.watchPosition функцию, так что, когда любой из этих функций называется, я могу смотреть на стек вызовов, увидеть, что вызов этих функций, и, возможно, найти функции обратного вызова, чтобы я мог их изучить?

Я бы предпочел что-то, что работает в Firebug, но я был бы доволен тем, что работает с инструментами разработчика, встроенными в Firefox, Chrome или Safari.

ответ

2

Я не мог найти способ переложить на API-интерфейс geolocation API в Chrome, но вы можете использовать технику shimming функции, которые вы хотите отлаживать, с помощью другой функции, которая выполняет какой-то пользовательский код, прежде чем продолжить вызов назначенной функции.

Ниже приведен пример управления функцией getCurrentPosition.

var getCurrentPosition = navigator.geolocation.getCurrentPosition; 
navigator.geolocation.getCurrentPosition = function(){ 
    debugger; 
    getCurrentPosition.apply(navigator.geolocation, arguments); 
} 

В этом примере, я копирую реальный API локальной переменной, вызовите debugger заявление (фактически установив точку останова), а затем вызвать реальную функцию, как это было задумано. Теперь, когда запутанный код вызывает navigator.geolocation.getCurrentPosition(...), отладчик Chrome откроется на линии debugger, и вы можете просмотреть стек вызовов.

В качестве альтернативы вы можете сделать console.trace или любое другое.

var getCurrentPosition = navigator.geolocation.getCurrentPosition; 
navigator.geolocation.getCurrentPosition = function(){ 
    console.trace(); 
    getCurrentPosition.apply(navigator.geolocation, arguments); 
} 

Обратите внимание, что вам нужно будет установить точку останова где-то до navigator.geolocation.getCurrentPosition называется или присваиваемое переменной. Первая строка кода должна быть в порядке.

+0

Эта идея интересна. Но как я могу это сделать на практике? Предположим, что на веб-странице я нахожусь на вызове 'navigator.geolocation.getCurrentPosition', как только он загружается. Есть ли способ запуска вашего прокладочного кода до вызова этой функции? –

+1

@ EliasZamaria Конечно, просто остановите первую строку обфускации JavaScript или даже первый JavaScript на странице. Затем запустите функцию переопределения в консоли, находясь в точке останова, затем продолжите. –

+0

Я попробовал вашу идею, и это сработало. Спасибо. –

Смежные вопросы