【发布时间】:2015-10-05 21:59:19
【问题描述】:
我在隔离环境中使用 chrome 扫描恶意网站以分析其数据以创建黑名单。这个过程完全由用户脚本和浏览器扩展自动完成。
问题是某些网站能够在beforeunload 或unload 上显示退出对话框(我将它们称为events)。
我已经覆盖了这些events,但是当站点再次覆盖我的覆盖时,整个过程就会停止。我的意思是他们可以使用 AJAX 调用、混淆脚本、eval 等重新定义 events。
有没有办法摆脱这些消息,或保护我的覆盖? 也许 unsafeWindow 会处理这个问题,但我会避免在这个讨厌的环境中使用它。
编辑 - 目前我在我的用户脚本中使用此代码:
location.href = "javascript:(" + function() {
window.onbeforeunload = null;
window.onunload = null;
} + ")()";
setInterval(function(){
location.href = "javascript:(" + function() {
window.onbeforeunload = null;
window.onunload = null;
} + ")()";
}, 3000);
【问题讨论】:
-
1.添加您现在使用的代码以阻止这些事件进入问题。 2.基本上我认为你需要使用每一个可以想象的技巧,例如覆盖
unsafeWindow中的事件,在定义jQuery时处理unsafeWindow.jQuery._data(unsafeWindow.window, "events")等 -
一段时间内的覆盖(true){} 几乎适用于任何情况,但我不想使用太多资源。
-
我认为 location hack 在现代浏览器中不起作用,或者在新版本结束测试后几个月内将停止工作。
标签: javascript jquery google-chrome userscripts tampermonkey