1. 从“关注可见”说起:一个被误读的交互设计
“关注才能看全文”这个设计,最早出现在一些内容社区和独立博客里,后来被大量个人站点效仿。很多读者第一反应是“被套路了”,但从站点运营者的角度看,这其实是一个内容分发与读者关系管理的折中方案。它的核心逻辑并不复杂:把完整内容的访问权限,与一个轻量的社交动作绑定,从而把“路人流量”转化为“可触达的订阅者”。
我最早接触这个机制是在一个技术分享博客上,当时想查一段配置代码,结果页面只显示了前两段,后面被一层半透明遮罩挡住,中间弹出一个“关注公众号查看全文”的按钮。说实话,第一反应是关掉页面。但后来自己开始写东西、做内容沉淀的时候,才慢慢理解了这个设计背后的取舍——它不是为了刁难读者,而是为了解决一个很现实的问题:内容创作者需要一种可量化的反馈机制,来证明自己的输出有人看、有人在乎。
这个机制的技术实现方式有很多种,从最简单的纯前端遮罩,到基于服务端渲染的内容截断,再到依赖第三方平台接口的鉴权跳转,复杂度差异很大。而“破解”这个词,在这里其实有两层含义:一层是技术层面的绕过,另一层是理解这个机制的设计意图后,找到更合理的替代方案。我写这篇东西,不是教人去恶意破坏别人的站点,而是想从前端实现原理、常见绕过思路、以及站点方如何设计更友好的方案这三个角度,把这件事讲透。
适合读这篇的人有三类:一是自己搭博客、想加类似功能但不知道怎么做才不招人烦的站长;二是做前端开发、想搞清楚这类遮罩和鉴权逻辑的技术人;三是单纯好奇“为什么有些页面看一半就没了”的普通读者。不管你是哪一类,下面的内容都会从实际代码和真实场景出发,把每个环节拆开讲。
2. 关注可见的三种技术实现路径与各自的软肋
2.1 纯CSS遮罩:最省事,也最容易被看穿
最常见的实现方式,是在文章正文容器上盖一层绝对定位的遮罩层,配合一个渐变背景,让下半部分内容“看起来”被隐藏了。核心代码大概长这样:
.article-content { position: relative; max-height: 400px; overflow: hidden; } .article-content::after { content: ""; position: absolute; bottom: 0; left: 0; width: 100%; height: 200px; background: linear-gradient(transparent, #fff); }这种做法的优点是实现成本极低,不需要后端配合,复制粘贴就能用。但它的软肋也非常明显:内容其实完整地存在于HTML里,只是视觉上被遮住了。任何人打开开发者工具,把max-height改成none,或者直接删掉那个伪元素,全文就出来了。
我实测过十几个采用这种方案的站点,无一例外,全部可以在十秒内绕过。更夸张的是,有些站点连overflow: hidden都没加,只是用了一个z-index很高的遮罩层,结果用键盘的Tab键就能把下面的链接一个个聚焦出来。这种方案适合对防绕过完全没有要求、只是想要一个“心理提示”的场景,比如内部文档或者草稿预览。
2.2 服务端截断:内容真的不在前端
稍微认真一点的站点,会在服务端就把内容截断。比如后端只返回前500个字,剩下的内容需要额外请求一个接口才能拿到。这个接口会校验当前用户的登录态或者关注状态,校验通过才返回完整内容。
这种方案的安全性比纯CSS遮罩高了一个量级,因为前端根本没有完整内容,你再怎么改CSS也没用。但它的代价是:每次阅读都要多一次网络请求,而且对搜索引擎爬虫不友好——如果爬虫拿不到全文,收录的摘要就会很短,影响搜索流量。
我见过一个比较聪明的折中方案:服务端返回完整内容,但把后半部分用Base64编码后放在一个>