精准戒毒工具

r_64 posted @ 2020年9月29日 19:55 in 未分类 , 150 阅读

前作:强制戒毒工具。需要tampermonkey和对javascript的基本了解。u1s1,adblocks好用多了


由于对某乎依赖性越来越大,我有时需要暂停使用强制戒毒工具。然而在之后总是会沉迷某乎无法自拔。于是我搞了这个玩意。(搞了一下午,,

代码放在了github上,写得比较儒雅随和,大家看看就好。

思路大概是遍历网页里的所有元素(DOM的element),判断它是不是能够让人上瘾的元素(例如“为你推荐”、“其他人都在看”、“网络热搜”)。如果是的,那么把这个元素删掉,否则不删。

具体哪些东西会令人上瘾的判断方法因人而异。比如说我把某乎的各种推荐、某度的热搜和相关搜索、批特的热搜和推荐关注全都干掉了。所以叫做“精准戒毒工具”。以后还会根据自身上瘾情况修改该工具。

注意,如果网页动态改变了的话(比如说某乎每次往下翻的时候都会多给你一些feed),那么你要重新遍历所有element。实现方法是使用一个MutationObserver:

window.onload = fuck();

const config = { attributes: true, childList: true, subtree: true, characterData: true };
const observer = new MutationObserver(fuck);
observer.observe(document.documentElement, config);

于是,每次网页有了任何变化,MutationObserver就会调用函数来逐一分析新的网页中的元素,并删掉那些每一根毛孔都滴着血和肮脏的东西的元素。

这里要点名批评某度,因为某度把MutationObserver禁掉了。。。(就是把它重新赋值成了null。。。)解决方法如下:

一、用iframe重置MutationObserver的值。具体代码如下,抄的网上的。

function restoreGlobalAPI(name) { //处理百度封MutationObserver的问题
    if (window[name]) return;
    var iframe = document.createElement('iframe');
    iframe.width = iframe.height = 0;
    iframe.style.display = 'none';
    document.body.appendChild(iframe);
     window[name] = iframe.contentWindow[name];
    iframe.remove();
}
restoreGlobalAPI('MutationObserver');

二、@run-at一栏要写“document-start”。也就是说要抢在某度搞事之前运行tampermonkey代码。

实现效果。上面是戒毒前,下面是戒毒后。


 

 

另外,有一些罪大恶极的网站(比如某乎首页,不断地给你推送无营养内容),干脆直接禁了好了。

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter