假设我正在构建一个新的Web浏览器,但想要拦截对某些JS函数(如window.fetch((和XMLHttpRequest和postMessage(的调用,以防止域中的某个iframe获取信息。
如果我只是简单地覆盖这些对象,后续的 JS 代码不能简单地调用 delete window.fetch 来删除我的覆盖吗?有没有办法冻结对象或属性以防止在现代移动浏览器中出现这种情况,或者使用本机代码拦截调用?
在Android Chrome上,似乎有一种原生方法可以做到这一点:https://www.codevog.com/blog/2015-03-09-webview-interactions-with-javascript
如何在安卓和iOS中做到这一点?
PS:我知道我可以拦截请求,但是如何拦截像postMessage这样的函数调用?
我不打算建议这个,但你可以尝试一个猴子补丁:
XMLHttpRequest = (function(xhtp){
//do something with xhtp
//someAPI(xhtp)...
return null;//or whatever you want
})(XMLHttpRequest);
我只是临时写了这个。您需要确保该对象的所有入口点都像上面一样修补。在 iief 中,将其传递给您的 API。Twitter 为控制台执行此操作.log,它们可能会返回一个空函数