跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何用 js 阻止网页中某网址的加载
未分類
11 5 月 2020

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

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

資深大佬 : dyxang 18

自己博客插入一段开源项目的 js,每次访问页面的时候都会请求 hm.baidu.com ,估计是开发者统计数据,但是我又不想让它访问。如何做到阻止?
大佬有話說 (33)

  • 資深大佬 : Jackwolf

    先确认是否是自己浏览器的锅

    换台电脑的试试看

  • 主 資深大佬 : dyxang

    @Jackwolf 我是安装了 ublock 才看到 hm.baidu.com block by cilent

  • 主 資深大佬 : dyxang

    @Jackwolf 控制台看到的,但我又不想让自己网页挂上了别人的统计…

  • 主 資深大佬 : dyxang

    @Jackwolf 啊发快了,控制台看到发起程序链就是由这个开源项目的 js 发起的

  • 資深大佬 : Elissa

    检查博客的插件、主题、模板是否含有统计链接

  • 主 資深大佬 : dyxang

    @Elissa 静态的,貌似是这个项目的开发者在 js 藏了一段请求

  • 資深大佬 : foru17

    adguard home 或者 pihole

  • 資深大佬 : serenader

    配置 CSP 头,浏览器就能帮你拦截掉。

  • 資深大佬 : iNaru

    如果这个统计请求是通过 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

    @foru17
    我的意思是不要访问页面的人被统计代码给统计到,而不是不要我访问页面被统计到,页面(博客)是我的

  • 資深大佬 : ysc3839

    既然是开源项目,自己去掉这段统计就好了吧?
    另外说说是什么项目?

  • 資深大佬 : eason1874

    我想到的几个方法。

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

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

    三是提前把百度统计使用的设置变量 _hmt 设置成你自己的参数,并且通过 Object.freeze 锁定,不让修改,这样统计就统计到你自己的账号了。我感觉可行,不过我没试过。

  • 主 資深大佬 : dyxang

    @ysc3839 就是去不掉才没辙问 V2EX 啊
    valine,评论系统,目前最新 1.4.4

  • 資深大佬 : autoxbc

    CSP 可以做到,或者给全局对象 XMLHttpRequest 和 fetch 套一层判断函数

  • 主 資深大佬 : dyxang

    @autoxbc 静态博客……

  • 主 資深大佬 : dyxang

    @autoxbc 啊不好意思,犯了望文生义的错了,以为是动态博客和服务器才能做的

  • 資深大佬 : ysc3839

    @dyxang 搜索 hm.baidu.com 能找到相关代码,删除即可。

  • 資深大佬 : ysc3839

    是在 https://github.com/xCss/Valine/commit/f9a0659fe8a0edfb724a1a2bc161fe358d188103 这个 commit 中加入的。

  • 資深大佬 : zhw2590582

    统计原理是发起有个 img 的 http 请求,语法是 var img = new Image; img.src=’baidu.com’;
    那样的话,我可以在这个脚本加载前,重定义构造函数 Image,当实例的 src 等于 baidu.com 就直接返回就可以了。

  • 資深大佬 : kingcc

    service worker

  • 資深大佬 : foxt8

    同用 Vline,没有遇到这个问题?

  • 資深大佬 : Latin

    hosts
    0.0.0.0 hm.baidu.com

  • 資深大佬 : openmynet

    代码在这:
    var descriptor = Object.getOwnPropertyDescriptor(
    HTMLScriptElement.prototype,
    “src”
    );
    Object.defineProperty(HTMLScriptElement.prototype, “source”, descriptor);

    Object.defineProperty(HTMLScriptElement.prototype, “src”, {
    get: function() {
    return this.source;
    },
    set: function(v) {
    if (/baidu.com/.test(v)) {
    throw(“block”)
    }
    this.source = v;
    }
    });

    #可以拓展为反网页劫持

  • 資深大佬 : openmynet

    HTMLScriptElement 可以换为 HTMLIFrameElement,HTMLImageElement 以拦截 iframe 与 image 方式的统计功能

  • 資深大佬 : serenader

    CSP 就是用来帮你拦截不想要的请求的,不管是你自己还是你博客的访客。

    就算是纯静态博客也能配置 CSP,CSP 除了可以通过配置响应头来实现之外,也能使用 meta 标签来声明。

    上说的其他方法太 tricky 了,我不觉得是个好办法。

  • 主 資深大佬 : dyxang

    @ysc3839 #17
    这个是外部引用,自己改不了
    @Latin #22
    都说了是自己博客上面,不想让自己博客被别人统计……不是电脑屏蔽……
    @openmynet #23
    这段放在代码前还是代码后

  • 資深大佬 : ysc3839

    @dyxang 改了重新传到自己网站不就好了?

  • 主 資深大佬 : dyxang

    @ysc3839
    最新的你用过吗?
    我以前试过,不能。

  • 資深大佬 : ysc3839

    @dyxang 我没有相关环境,无法测试。
    你说的不能是怎么个不能?

  • 主 資深大佬 : dyxang

    @ysc3839 改了保存到自定义网址引用后无法使用

  • 資深大佬 : ysc3839

    @dyxang 怎么个无法使用呢?遇到了什么错误吗?就不能一次性把问题说清楚吗?

  • 主 資深大佬 : dyxang

    @ysc3839 我现在也没有电脑,无法操作具现,很久之前试过的,貌似有验证,改了地址或者去掉了评论框的官网链接就无法使用。

  • 資深大佬 : openmynet

    @dyxang 放在前面

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具