我正在访问一个网站,要求我分享我的位置。我想知道他们正在对这些信息做些什么以及它在哪里发送。我试着查看页面的JavaScript代码,希望找到涉及地理位置的东西,但是有很多代码,并且它被混淆了。
是否可以在我的浏览器的内置navigator.geolocation.getCurrentPosition
或navigator.geolocation.watchPosition
函数中放置一个断点,以便在调用任何这些函数时,我可以查看调用堆栈,看看调用的是什么那些函数,也许找到回调函数,以便我可以检查它们?
我更喜欢在Firebug中运行的东西,但我会很高兴能够使用Firefox,Chrome或Safari中内置的开发人员工具。
答案 0 :(得分:2)
我找不到任何方法可以在Chrome中使用geolocation
API,但您可以使用一种技术来补充您要调试的函数,使用另一个执行某些自定义代码的函数,然后再继续调用预期的功能。
以下是填充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
或将其分配给变量之前的某处设置断点。代码的第一行应该没问题。