惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
S
Securelist
C
Cisco Blogs
D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Vulnerabilities – Threatpost
Latest news
Latest news
T
The Exploit Database - CXSecurity.com
小众软件
小众软件
S
SegmentFault 最新的问题
罗磊的独立博客
I
Intezer
雷峰网
雷峰网
T
Threatpost
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
A
About on SuperTechFans
AWS News Blog
AWS News Blog
A
Arctic Wolf
P
Privacy International News Feed
The Register - Security
The Register - Security
Vercel News
Vercel News
L
LangChain Blog
S
Schneier on Security
D
Docker
J
Java Code Geeks
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
M
MIT News - Artificial intelligence
Spread Privacy
Spread Privacy
MyScale Blog
MyScale Blog
量子位
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
K
Kaspersky official blog
C
CERT Recently Published Vulnerability Notes
Know Your Adversary
Know Your Adversary
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Recorded Future
Recorded Future
C
Cyber Attacks, Cyber Crime and Cyber Security
Scott Helme
Scott Helme
Security Latest
Security Latest
人人都是产品经理
人人都是产品经理
T
Threat Research - Cisco Blogs
Cyberwarzone
Cyberwarzone
F
Full Disclosure
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
NISL@THU
NISL@THU
P
Proofpoint News Feed
T
The Blog of Author Tim Ferriss

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 greetd和regreet使用教程 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Snipe it资产管理系统安装使用 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法 Caddy日志配置轮转和格式化
简单检测用户是否开启广告屏蔽
2024-03-05 · via mephisto.cc

大部分小站要维持运转,离不开广告收益,域名、主机等费用虽然不高,但很少人愿意长期入不敷出。

可持续的良性生态是:服务方创造内容,服务了用户,同时获得收益。

有一天我访问 阮一峰 的网站的时候,提示:

您使用了广告拦截器,导致本站内容无法显示。

请将 www.ruanyifeng.com 加入白名单,解除广告屏蔽后,刷新页面。谢谢。

原因是我开启了 AdBlocker Ultimate 广告拦截插件,加入白名单刷新后,页面展示正常。一般有较认真写内容的网站,我都会选择允许展示广告,这份坚守并不容易。比如我的这个站点,每写一个文章差不多要消耗 2 个小时,目前已连续亏损三年,没倒闭是已因为还有一份愿意分享的心,目前亏得起。

做网站的时代已经过去,Vivo、华为等手机默认浏览器即开启广告屏蔽,不信去手机专卖店试试,因为我试过了 😅。从这个角度说,微信公众号还是有优势的,公众号的浏览器是微信在掌控!里面各种广告拉满,当然广告多了,会适得其反。

题外话不多说,自己动手来实现一个类似功能。

1. 核心代码

 1function detectAdblock() {
 2  try {
 3    fetch(
 4      new Request(
 5        "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js",
 6        {
 7          method: "HEAD",
 8          mode: "no-cors",
 9        }
10      )
11    ).catch((error) => {
12      showNotification();
13    });
14  } catch (e) {
15    // Request failed, likely due to ad blocker
16    showNotification();
17  }
18}
19
20function showNotification() {
21  var sponsor = document.querySelector("#my-content");
22  var prompt = document.createElement("div");
23  prompt.className = "content";
24  prompt.style =
25    "hborder: 1px solid #c6c6c6;border-radius: 4px;background-color: #f5f2f0;padding: 15px; font-size: 14px;";
26  prompt.innerHTML =
27    "<h1>您使用了广告拦截器,导致本站内容无法显示</h1><h2> You are using an ad blocker, which prevents the content of this site from being displayed</h2> <p>创作不易,小站依赖广告维持运转,还请将 <font color='green'><strong>mephisto.cc</strong></font> 加入白名单,解除广告屏蔽后,刷新页面。谢谢🙏</p> <p>Please add <font color='green'><strong>mephisto.cc</strong></font> to the whitelist, unblock the advertising, and refresh the page. Thank you 🙏</p> <img src='/images/unblock-ads.webp'/> <img src='/images/whitelist.webp'/>";
28  sponsor.parentNode.replaceChild(prompt, sponsor);
29}
30
31setTimeout(detectAdblock, 1000);

原理是检测广告链接 HEAD 方法访问是否正常,不正常就把 id 为my-content的内容替换为指定提示信息,提示用户解除广告屏蔽。

有读者会问,这样怎么排除网络异常呢?排除不了,被错杀了,无情又暴力...

这对我来说简单好用可接受,因为读者访问不了广告链接(能访问也不一定展示广告,广告联盟决定的),也就是说能搞钱的概率为零,且绝大部分用户都是可以访问这个链接的,国内还没屏蔽。看不了的用户,会去访问别的站点,没毛病。用户能修复自己的网络问题,自然能访问。万一这个链接本身挂了呢?概率微乎其微,毕竟人家市值万亿美元,超有本事跨国公司,不用操心。它都挂了,损失点有什么关系,这样想,即可心安理得。 退一步讲,这个检测条件可以不断改动,优化成自己想要的模样。

其实每个广告屏蔽插件的逻辑不一,加入了白名单,还是访问不了,这种状况也是未考虑的,有待反馈优化。

2. 提示信息优化

我的第一版提示信息只有中文文字信息,后面加了英文翻译。毕竟我每个文章都有英文版本,繁体用户就凑合看简体文字信息了。

光有文字还是不够的,昨天有个读者给我发了个问号 ❓,估计不会加白名单(或者说那个屏蔽软件类似功能不太好查找、效果不同),看不到内容有点不高兴 😭!

不怪用户,只怪自己,于是添加了图片操作指引。

ublock ads
whitelist

别的插件怎么操作呢?这也是个问题,等赚钱了 500 万再说 😊。

我甚至还用 obs 录屏,准备提供视频或者 gif,等用户反馈多了再说。