2020 年 05 月 11 日 星期一

  5k 字     16 分钟       --  

包括这一篇,今年上半年我只在我博客写了 2 篇文章。主要是因为大四了,要毕设了,虽然不是很忙,但是主要的心思都在毕设上,其它事情没有太多可写的,也不能写跟毕设相关的内容,避免查重时论文跟自己博客重复。但是现在论文写完了,只剩下论文盲审和答辩,事情少了很多,又不能回学校玩,有点无聊,所以搞点别的事情。

你现在看到这个博客,加载速度比几周前更慢了,而且也更不稳定了。因为我注销了这个网站的备案,并且把这个网站迁移到了境外(当然,为了加载速度慢得不会太过分,一些静态资源还是在境内的),你可以看到这个网站底部已经没有了 ICP 备案号。

我曾经写过一些和博客搭建和建站相关的文章,比如:

这些是我大学四年折腾我的博客时总结的一些经验,但是其实我一直没有谈论过一个特别基础的问题,即“政策合规”。一方面是因为这个话题有它的敏感性,按照我以前愤青一样的态度肯定不能好好把这个问题讲清楚,第二方面是它还相当复杂,很多流程和政策我自己搞起来都一头雾水,包括我现在也只是一知半解。今天趁着我刚刚宣布“该网站及服务退出中国大陆”,来聊聊我这几年在中国大陆建站与政策合规相关的经历、经验、理解,主要是给有需求的个人一些参考,减少刚入门搭建博客或者搭建个人网站时的困惑。


不知道这种文化是怎么形成的,很多刚刚进入计算机专业的同学都喜欢玩一玩个人博客,我的一些同学也问过我一些关于搭建个人博客的问题。我们按照网上的教程一通操作,十分钟一个博客就诞生了,绝大部分人不关注也不需要关注政策问题。但是当我们到腾讯云或者阿里云花上 10 元一个月买到一个学生优惠的云服务器希望更深入学习网站搭建的技巧时,当我们希望使用国内 CDN 加速一下我们的博客时,我们常常就会碰到政策的壁。你会发现你的域名不能正确解析到你在服务器上搭建的网站,你会发现你在 QQ 、微信发送的自己的网站链接打开时会提示有风险禁止访问,你会发现你很多云服务不能使用。这些问题总结起来就是因为你没有一个“工信部备案的域名”,也就是不符合在中国大陆开展网站服务的政策。很多人嫌备案太麻烦,条条框框乱七八糟搞不懂,就放弃了,或者去找替代方案。而部分希望认真备案的人会发现政策乱七八糟,难以理解,花费了很多的时间,最后也只得到一个很差强人意的结果。所以这篇文章就聊一聊这个网站备案。

是什么?为什么?

首先我们要知道网站备案是什么?为什么需要对网站备案?

在教科书里的因特网是一张联通全世界的没有边界的网,但是现实里面这不靠谱。因特网已经不是少数科研院校、少数计算机专家、少数大公司的专属工具,它现在是与全世界人民日常生活密切相关的基础设施,和水、电一样。我们每天都在网络上进行很多活动,既然是人在社会上的活动,那就应该受到法律的约束,所谓网络不是法外之地。而讲法律就要讲管辖权的问题,中国的法律不能管在外国的外国人之间发生的事情。所以虽然全世界共享因特网这一基础设施,这一基础设施有它统一的国际标准,但是各国家的人民在因特网上的行为要受到各国法律的管辖,这就使得因特网不可能没有边界。

比如在中国传播淫秽物品是犯罪,通过因特网传播也是犯罪,而在其它一些国家这可能合法。中国的法律不能管外国人在网络上传播淫秽物品,但是如果任由这些淫秽物品通过网络传播到中国那就侵害了中国人的法益,所以这里必须要有一个可以阻隔其它国家人民行为对中国人民影响的边界。就和国家要有对领土、领海、领空的主权一样,国家也应该有“领网”(这个词我编的)的主权。这个边界它不一定是封闭的,但是它应该是受到管控的。

所以以这个边界划分,这个世界上的网站可以分为中国大陆境内的网站和中国香港、中国澳门、中国台湾和中国境外的网站。

而中国大陆境内的网站就应该遵守中国大陆的法律,比如需要备案。备案就是在有关部门处登记一下网站信息,以便管理。以个人网站为例,备案至少包括工信部备案(也称 ICP 备案)和公安备案(也称网安备案),有些情况下可能还需要一些前置审批和经营性备案。

本文讨论的都是最简单的情况,即个人非经营性网站。

谁需要?

什么网站需要备案呢?

原则上来说,只要是在中国大陆开展互联网信息服务就需要备案。

那什么叫做“在中国大陆开展”呢?只要是服务器在中国大陆,那就属于在中国大陆开展互联网信息服务。其实这句话反过来也是对的,即只要在中国大陆开展互联网服务,那就需要将服务器设在中国大陆境内。

“互联网信息服务”一般指的是网站,在实质上一般指的是基于 HTTP 的服务。

所以如果你的网站是通过 GItHub Pages 或者境外 CDN 服务或者其它类似方法部署的,那你不需要备案;如果你的博客是通过你在中国大陆的服务器或者中国大陆的 CDN 服务或者 OSS 服务等方式部署的,就需要备案。

有一种特殊情况,即使用 IP 访问的服务目前不需要备案。只有使用域名访问的服务需要备案。

像 Steam 这种虽然有中文,有所谓的“国区”,但它服务器不在中国大陆境内,所以不属于在中国大陆开展互联网信息服务,这种不需要备案,不需要符合中国的法律,但是原则上也不被政府承认,有关部门想封就封。

需要注意的是,尽管如果网站在境外部署,就不需要备案也不需要符合中国大陆的政策要求,也不被承认是为中国大陆用户的服务,但是只要网站的所有者、管理者、运营维护人员等在中国大陆境内那么就要符合中国大陆的法律,甚至只要是在服务中国大陆境内的用户期间就要受到中国大陆法律的管辖,这是中国的属地管辖权。所以千万不要以为通过境外服务器搞诈骗、搞分裂国家、搞淫秽色情等犯罪活动也能逃脱法律制裁。

必要吗?

如果不备案,会怎样?

在中国大陆开展互联网信息服务如果不备案的,将不能被访问。具体操作一般是在服务器的网关对请求进行拦截、阻止建立 TCP 连接、重定向 HTTP 请求等,因为这需要云服务提供商的配合,所以具体行为取决于具体的服务商。因为拦截的是“互联网信息服务”,所以一般只拦截 HTTP 请求(包括 HTTPS ),一般不会影响未备案域名的正确解析,也不会影响直接通过 IP 访问服务,所以应该是根据 HTTP 的 Headers 的 Host 字段判断的。

怎么做?

好的,道理我都懂了,但是我该怎么做?

首先需要对网站进行 ICP 备案,也就是工信部备案。 ICP 备案需要通过备案服务商进行,比如腾讯云、阿里云等都是备案服务商,可以代为办理和管理备案。备案有多种,但是现在一般只能进行“域名备案”,即对一个一级域名(比如 keybrl.com )进行备案,备案后该域名及其所有子域名(比如 www.keybrl.comblog.keybrl.com )都可以被用于指向部署于中国大陆境内的网站。

备案的域名需要满足几个条件:

  • 域名的顶级域为“通过国家批复的顶级域名”,这些顶级域一般是国际上常用的和中国的国家顶级域比如 .com.cn ,其它国家的顶级域一般不行,比如 .cc ,具体这个“通过国家批复的顶级域名”的列表可以自行搜索了解;
  • 域名需要由“通过国家批复的域名注册服务机构”进行注册管理,比如腾讯云、阿里云等,境外的域名注册服务机构肯定是不行的,“通过国家批复的域名注册服务机构”的具体列表也可以自行搜索了解;
  • 域名已通过实名认证。这个域名如果你是在“通过国家批复的域名注册服务机构”注册的,那你注册时按照提示进行实名认证就可以了;
  • 备案主体信息需要和域名注册时的实名认证信息一致,也就是只能给自己的域名进行备案。

然后你需要有一个在中国大陆境内的服务器,比如你在腾讯云、阿里云租用的,这个服务器需要是你一直所控制的,如果服务器到期被收回需要修改备案信息绑定到另一台服务器,否则备案会被停止接入。即使你的网站不需要用到服务器(比如你现在看的这个博客就是通过腾讯云 COS 和 CDN 部署的)你也需要有这样一个服务器才能进行备案,所以这是一笔不小的固定开销,这一点还是比较扯的。

备案域名的注册和管理机构、服务器的服务商、备案服务商三者最好是同一的,比如你在腾讯云买服务器,那最好是在腾讯云注册域名或把域名转入腾讯云,然后在腾讯云备案,这样是最方便的。但是原则上没有限制,理论上你可以在腾讯云买服务器,域名在阿里云管理,然后跑到华为云进行备案。如果备案服务商和服务器服务商不是同一个,那么需要服务器服务商提供备案授权码,而域名的限制较少,所以如果不能做到三者统一,那最好也保证备案服务商和服务器服务商是同一个,一般国内的云服务商都能够进行备案。

最后你还需要有两个能联系到你的电话号码,审核时会分别打这两个号码确认信息。

准备好域名、服务器之后,具体的备案流程就参考备案服务商的文档吧,各家流程都不太同。一般来说是个人填写资料、服务商审核、工信部审核,然后通过。我用过的只有阿里云和腾讯云,如果不考虑服务器在哪租的话,我个人建议在腾讯云备案。我当时看的是腾讯云的备案流程和文档比较健全,我比较容易清楚我在做什么,而且腾讯云可以通过微信小程序进行备案,流程比较简化(比如可以免去幕布拍照的环节)。最重要的是,自从我在阿里云备案,阿里云的客服就经常性地打我的电话,大概每个月一次,推销它们的产品优惠,而我备案前基本上没有电话。腾讯云的话特别安静,我从来没有收到腾讯云的推销电话,所以我现在不仅备案,我所有云服务都迁到了腾讯云。还有一点是我之前使用阿里云备案系统有 Bug ,我一个域名到期不续费了,需要在备案信息里去掉这个域名,但是当我修改备案信息时,我不能保存修改,因为我没有填写第二个联系电话(因为我是比较早备案的,当时不要求两个号码)。但是我也不能添加第二个电话号码,因为联系方式等备案信息是不能修改的。阿里云可能会觉得我会打电话给客服解决这个问题,但是实际上我气得直接注销了备案,跑到腾讯云去了。

备案的目标虽然是一级域名,但是备案审核的目标是它 www 子域指向的网站。 ICP 备案通过之后,需要开通该网站,比如如果备案的是 keybrl.com ,那么备案通过之后需要开通 www.keybrl.com 。这个网站,这是需要检查的,不符合要求的话备案服务商会给你打电话的。这个网站的内容需要和备案描述的信息相符,网站底部按照要求显示备案号,网站中不能有违规内容,比如个人网站不能有商业推广信息(你说你最近买了个电脑超级棒这种都不行),不能有“博客”、“论坛”等字眼,不能有评论等社交功能。否则需要额外的一些前置审批,大多数是个人不能办理的,具体我就没有研究了。

因为审核的内容仅仅是 www 子域指向的网站,所以一些备案教程会建议在这个地方放一个很简单的页面应付检查,然后在其它子域下放自己真正想放的网站,比如 blog.keybrl.com 。这种做法不一定是合规的,很可能只是钻了空子,日后监管完善了可能就不行了,不过目前的确是可以这样做的。对此我只想补充一点,就是 www 子域在搜索引擎中默认是有较高权重的,如果你搜索 keybrl ,很有可能第一条就是 www.keybrl.com 而点击量更多的 blog.keybrl.com 反而在后面。如果你不希望这样,你需要做一些小小的优化,让搜索引擎不要收录你 www 子域下的网站,比如在页面中加一个指示搜索引擎 nofollownoindex<meta> 标签,具体操作方法可以自行搜索了解。

网站开通可以访问后,还需要在开通之日起 30 天内进行公安备案,或者也称网安备案。大致操作流程是登录 全国公安机关互联网站安全管理服务平台 对网站信息进行登记,具体流程各备案服务商的备案文档都有说明,可以自行了解。公安备案完成之后还需要按照要求在网站底部展示公安备案号,也就是说此时网站底部需要有两个备案号( ICP 备案号和公安备案号)。

在具体操作中,只要进行了 ICP 备案,网站就能够正常访问,目前没有了解到有关部门会对公安备案进行检查,比如我就是备案了大半年才知道还需要公安备案,一直都没什么事。但是不建议故意逃避,毕竟操作也不算过分复杂,逃避被发现的话可能还有处罚,得不偿失。

完成了两个备案之后,你的网站就能够合法在中国大陆开展互联网信息服务了。

代价和收益?

代价,首先需要有一个部署在中国大陆境内的服务器,每个月固定花销至少也是 30 - 40 元(如果不考虑学生优惠这回事),即使网站不需要用到自己部署的服务器。然后如果需要完全合规,网站内容有很多限制。如果通过避开 www 子域的方法逃避监管,那至少也浪费了一个特别关键的子域。

那收益呢?对个人来说收益主要是能够使用中国大陆境内的基础设施部署网站,比如大陆的 CDN 、服务器等,这样可以在中国大陆得到足够的服务质量。以及能够使网站在中国大陆的体验更加稳定,不容易被封禁,特别是特殊时期。

为什么我放弃了?

我过去为了提高我博客的访问体验,我进行了备案,这样我可以使用腾讯云的境内 CDN 。但是其实我的网站内容不能说完全合规,我的博客里有所谓的商业推广信息,有评论功能,有“博客”等字样,很多内容其实也是日常生活的分享还有个人价值观的输出,不完全是我当初备案的“个人技术分享”。只不过我没有把这些内容放在 www 子域下。所以严格来说我的网站并不符合工信部对于个人网站的要求,我不应该能够获批在中国大陆开展互联网信息服务。虽然我可以规避审查,但是既然我不认可规定,规定也不包容我,为什么我还要跟它凑合呢,这主要是心理上的不舒服。

注销备案对于我来说主要的损失就是我博客的加载速度变慢了,因为我目前使用腾讯云的境外 CDN 部署网站。

所以尽管这个网站的主要语言是简体中文,但原则上它是一个“境外网站”了。“你”,也就是正在看文章的“你”,如果你在中国大陆,那你已经不是这个网站的预期用户了,尽管这些文章看起来“像是”为你准备的,但它不是,它其实没有观众!

如果有一天你需要通过特殊手段才能访问了,那也是很正常的事情。

对于我来说这其实是一种解脱,少了很多压力,虽然工信部也从来没有给我打过一个电话。



 目录

你终于看完了!

如果你对这篇文章有任何想法或者对Keyboard本人有什么看法,随便什么东西,甚至是“hhh”,都可以在下面留言。随便吐槽,反正我不会看的...

这是完全匿名的,当然你也可以留个名,甚至留个邮箱(邮箱只有我可见),因为如果你有什么有趣的留言我可能会好奇想认识一下你

而且我关掉了邮件提醒功能,所以不管你留不留邮箱,你都不会收到关于你评论的回复的提醒(我也不会收到提醒)

(老实说,我偶尔会看的...)