【发布时间】:2018-08-18 21:12:33
【问题描述】:
我编写了以下 Greasemonkey 脚本来防止自己访问一些网络应用程序(网站),通常这些我觉得有点上瘾。这是我阻止我的浏览器显示这些网站的最接近的方法:
// ==UserScript==
// @name blocko
// @include *
// ==/UserScript==
window.addEventListener('load', function() {
let sites = ['example-1.com', 'example-2.com', 'example-3.com'];
let dotTLD_andAllAfterIt = /\..+/;
let href = window.location.href;
for (let i = 0; i < sites.length; i++) {
if (href.includes(sites[i])) {
let domain = sites[i].replace(dotTLD_andAllAfterIt, '');
document.body.innerHTML =`
<div style="direction: ltr; position: fixed; top: 0; z-index: 999999; display: block; width: 100%; height: 100%; background: red">
<p style="position: relative; top: 40%; display: block; font-size: 66px; font-weight: bold; color: #fff; margin: 0 auto; text-align: center">
Enough with this ${domain} bullshit!
</p>
</div>
`;
}
}
}, true);
我对我在这里的成就不满意,因为这个脚本让我进入网站,在极少数情况下我需要等待 1/2/3/4 甚至 5 秒或更长时间,直到该站点将消失,而我打印到屏幕上的带有红色背景的消息将改为出现。因此,我不情愿地接触到我想避免的网站内容。
我希望阻止浏览器甚至通过 JavaScript 导航到网站。有一个名为“BlockSite”的 Chrome 插件可以帮助解决这个问题,我试图检查它的(巨大的)源代码,但无法理解它如何阻止用户被移动到网站,这与我的脚本不同上面将用户移动到网站,但在几秒钟后(在触发load 事件之后),网站消失并显示一条消息。
请分享一种完全阻止自己进入网站的方法,例如“BlockSite”。
【问题讨论】:
-
您是要制作浏览器插件/扩展还是要在网站内部实现脚本?
-
您好!我不打算创建浏览器扩展。该功能应在特定域的范围内工作。
-
编辑
hosts文件以包含127.0.0.1 example-1.com之类的内容。一个简单的 Google 搜索(“编辑主机文件以防止访问网站”)可能会有所帮助。
标签: javascript browser google-chrome-extension greasemonkey tampermonkey