如何用 js 阻止网页中某网址的加载

2020-04-21 00:21:51 +08:00
 dyxang
自己博客插入一段开源项目的 js,每次访问页面的时候都会请求 hm.baidu.com ,估计是开发者统计数据,但是我又不想让它访问。如何做到阻止?
4539 次点击
所在节点    JavaScript
33 条回复
Jackwolf
2020-04-21 00:27:54 +08:00
先确认是否是自己浏览器的锅

换台电脑的试试看
dyxang
2020-04-21 00:29:25 +08:00
@Jackwolf 我是安装了 ublock 才看到 hm.baidu.com block by cilent
dyxang
2020-04-21 00:30:17 +08:00
@Jackwolf 控制台看到的,但我又不想让自己网页挂上了别人的统计…
dyxang
2020-04-21 00:31:20 +08:00
@Jackwolf 啊发快了,控制台看到发起程序链就是由这个开源项目的 js 发起的
Elissa
2020-04-21 00:39:05 +08:00
检查博客的插件、主题、模板是否含有统计链接
dyxang
2020-04-21 00:49:58 +08:00
@Elissa 静态的,貌似是这个项目的开发者在 js 藏了一段请求
foru17
2020-04-21 00:51:21 +08:00
adguard home 或者 pihole
serenader
2020-04-21 01:08:29 +08:00
配置 CSP 头,浏览器就能帮你拦截掉。
iNaru
2020-04-21 01:16:03 +08:00
如果这个统计请求是通过 document.createElement 的方式加载的话,
即:
ae01.alicdn.com/kf/U2a301ed880ae4b0c9deb1b8a7d85ea34z.jpg

可以用以下这样阻止加载(抄袭自 uBO github.com/gorhill/uBlock/blob/a94df7f3b27080ae2dcb3b914ace39c0c294d2f6/assets/resources/scriptlets.js#L35 )。
该代码必须在统计代码前运行。

paste.ubuntu.com/p/HQFkzzrq3Q/
dyxang
2020-04-21 01:20:45 +08:00
@foru17
我的意思是不要访问页面的人被统计代码给统计到,而不是不要我访问页面被统计到,页面(博客)是我的😂
@serenader
ysc3839
2020-04-21 01:45:45 +08:00
既然是开源项目,自己去掉这段统计就好了吧?
另外说说是什么项目?
eason1874
2020-04-21 02:43:00 +08:00
我想到的几个方法。

一是直接找到开源 JS 里的统计代码删掉,或者把 ID 改成你自己的 ID 。

二是跟 #8 说的一样,通过 Content-Security-Policy 限制资源域名,不让加载百度统计域名的资源,这样就统计不了了,但是这样你自己也用不了百度统计了,而且这个对浏览器版本有一定要求,老的不支持。

三是提前把百度统计使用的设置变量 _hmt 设置成你自己的参数,并且通过 Object.freeze 锁定,不让修改,这样统计就统计到你自己的账号了。我感觉可行,不过我没试过。
dyxang
2020-04-21 02:43:10 +08:00
@ysc3839 就是去不掉才没辙问 V2EX 啊
valine,评论系统,目前最新 1.4.4
autoxbc
2020-04-21 02:44:47 +08:00
CSP 可以做到,或者给全局对象 XMLHttpRequest 和 fetch 套一层判断函数
dyxang
2020-04-21 02:47:38 +08:00
@autoxbc 静态博客……
dyxang
2020-04-21 02:51:20 +08:00
@autoxbc 啊不好意思,犯了望文生义的错了,以为是动态博客和服务器才能做的
ysc3839
2020-04-21 05:04:12 +08:00
@dyxang 搜索 hm.baidu.com 能找到相关代码,删除即可。
ysc3839
2020-04-21 05:10:04 +08:00
zhw2590582
2020-04-21 08:59:21 +08:00
统计原理是发起有个 img 的 http 请求,语法是 var img = new Image; img.src='baidu.com';
那样的话,我可以在这个脚本加载前,重定义构造函数 Image,当实例的 src 等于 baidu.com 就直接返回就可以了。
kingcc
2020-04-21 09:11:58 +08:00
service worker

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/664470

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX