绕过中国互联网审查:我如何建立一个审查微博聚合器
已发表: 2022-03-11众所周知,中国政府对互联网实施严格的审查。 中国的审查制度,俗称中国的防火墙,由公安部运营,正式命名为金盾工程。 该系统自 2003 年开始运行。
通常包含政治敏感内容的国际新闻网站(例如纽约时报)或不遵守审查规则的社交媒体网站(例如 Facebook 和 Twitter)通常会被中国用户屏蔽且无法访问。 这是使用各种复杂的方法来完成的。
对于中国的新闻和社交媒体网站来说,几乎一切都在政府的监控之下。 为了被允许运营,中国的 ISP 和互联网内容提供商通常有自己的内容过滤机制,用于阻止或删除其用户发布的内容,如果政府认为这些内容是非法的,甚至直接删除用户的帐户政策。 这些公司在他们的服务器上都有自己的审查软件,以及专门的团队或部门来手动处理自动审查软件无法管理的审查任务。 这些团队与公安部的地方部门合作,接受新的命令和政策,并且通常相互合作。
对于我们国内的网络开发者来说,中国互联网的审查不仅过滤了我们的言论自由,还过滤了来自世界各地的宝贵专业资源。 在我的日常工作中,我必须绕过互联网审查,通过 VPN 连接才能使用 Gmail、Dropbox 和许多其他重要网站。 我还记得 2010 年的尴尬,当时谷歌拒绝继续遵守审查规则,谷歌的服务在中国变得不稳定或无法访问。 这对于其他国家的开发者来说是难以置信的。
新浪微博审查
新浪微博是中国最大的微博社交网站。 由于 Twitter 不符合中国的规定,微博不必与它竞争用户。 新闻在微博上的传播速度比中国任何其他媒体都快、直接。 年轻一代的成员,比如我自己,喜欢用它来分享新闻和讨论公共事件。 但是当然,在中国的网络审查制度下,许多热门或有趣的帖子在发布后立即被删除。 政治和公共事件帖子最有可能被删除,而娱乐新闻最不可能被删除。 计算机科学家 Jed Crandall 和 Dan Wallach 2013 年的一项研究发现,每天约有 12% 的中国微博被删除。
在 6 月 4 日这样的政治敏感日,预计会看到更多被审查的微博帖子被删除。 如今,用户在尝试写微博时,通常甚至无法输入某些敏感词。
帖子被审查时会是什么样子? 当你在网站上刷新一个新的微博时,你会经常看到这样的东西:
这相当于转发,原始消息通常显示在灰色框中。 盒子现在写着“对不起。 微博已被删除。 请看……”原帖是一位母亲为她 11 岁的女儿在 2013 年被绑架、强奸和强迫卖淫而请求正义。
2013年是通过微博平台曝光大量政治丑闻的一年。 新浪微博的热度在此期间飙升。 作为回应,政府感到紧张,并开始加强对社交媒体平台的审查。
在微博出现之前,像我这样对政治感兴趣的年轻人通常不得不使用代理服务器或隧道服务从国际网站上搜索敏感消息。 突然间,我们有了一个相对开放的中文社交网络平台。 但政府迅速介入,结果只是昙花一现。 这真的激怒了我。 我和朋友交谈,我们都对平台上加强审查感到愤怒。 我的朋友会问,“为什么我们对此无能为力?” 我决定试试。 所以我建立了一个网站,开始绕过互联网审查,看看新浪微博上到底有哪些内容被屏蔽或删除。
技术讨论
基本上,我需要设置一个服务器,不断扫描被屏蔽或删除的中文微博,并将它们显示在一个新网站上。 本来打算用阿里云这样的国内云服务,结果发现平台有很多限制,比如域名重定向,价格也不比其他云服务便宜。 当然,我另外担心的是,如果我在国内部署它,服务器本身会受到监视。 所以我最终在 Linode 上购买了一台服务器,并将服务器定位在日本。 我还买了域名freeweibo.me ,开始绕过新浪微博的审查。
下图显示了系统的整体架构:MongoDB、Web 服务器和爬虫。 我选择 Node.js 作为开发环境,因为它对于网络应用程序来说更高效和可扩展,而且我个人对它有更多的经验。 Web 服务器是使用 Express.js 框架开发的,并使用微博 API 来捕获数据。 最初,爬虫被设计为一个单独的进程,但后来我发现将它作为一个模块捆绑在 web 服务器进程中,对于早期阶段来说已经足够了。
微博的内容有两个主要的兴趣部分。 一是文本数据及其相关属性。 另一个是与帖子相关的图像。 为了保存帖子,我们还想下载图像并将它们作为文件保存在磁盘上。 对于被屏蔽或删除的博客,这些图片非常重要。 在中国,使用图片发布文本内容非常普遍和流行,因为在互联网公司的服务器上通过基于文本的自动过滤和审查很难捕捉到这些内容。

检测被阻止或删除的帖子的基本思想是不断地从已知的用户列表中扫描新帖子,然后在以后重新检查帖子的可用性。 一条微博可能会在几分钟或几天内被删除或屏蔽。 因此,爬虫由两个主要任务组成:获取任务,获取新发布的内容,以及检查任务,检查以前发布的内容是否已被审查。
一开始,我配置爬虫来爬取微博前100名知名用户的微博。 但事实证明,每天几乎没有检测到被删除的博客。 原因是大多数顶级用户对政治或公共敏感话题不感兴趣——他们从不发布或转发这类微博。 例如,这位博主是一名拥有超过 1000 万粉丝的女演员,是最受欢迎的用户之一,但她从不发布敏感博客。
经过一些实验和思考,我想出了一种技术,可以自适应地找到持续受到审查的用户。 社交媒体网络是主题互联的,用户倾向于按兴趣分组。 如果用户对公共或政治话题感兴趣,那么他更有可能发布或转发其他类似用户的博客。 这些转发的帖子提供了一种识别要扫描的新用户的好方法。
例如,假设用户 A 已经在数据库中,爬虫检测到用户 A 转发的一篇博客被删除。 如果博客的原作者用户B不在数据库中,则爬虫会保存用户B。下次爬虫重新扫描新博客时,也会扫描用户B的新博客。这样,可扫描用户将通过利用这种社会兴趣联系自动增长。
在调整爬虫算法以利用这种方法之后,我只需要播种几个对发布敏感博客有浓厚兴趣的关键用户,爬虫就会自动发现新用户进行扫描。 每日检测到的审查博客总数逐日稳步上升。 以下是我邮箱中已归档已删除博客的快照。
- 毛泽东斥责地方官员不拆成都古城墙的历史性对话。
- 关于活跃维权律师许志勇的帖子。 他帮助了许多弱势群体,并在中国发起了新公民运动。 他于 2014 年 1 月被判入狱。
- 批评政府报纸《人民日报》
- 评论中国亿万富翁、新公民运动领袖王功权被捕和受审。
- 指逮捕参与社会运动的活动人士。
结果
经过两周的编码和调试我的中文微博绕过系统,我将网站部署到了freeweibo.me 。 但是,运行几周后,服务器检测不到更多新博客。 通过一些调查,我发现了两个问题。 一是微博平台改变了原有的API接口。 另一个是由于数据库中博客和用户的增加,爬虫的API请求超过了速率限制(每分钟1000个)。 所以我调整了我的代码以采用新接口并减少每分钟的 API 请求数。 从那时起,爬虫就稳定了。
我面临着是否让很多人知道该网站的两难选择。 我知道,访问该网站的人越多,它就会越早被政府嗅出并被封锁。 所以我只和我的一些朋友分享了这个网站。 最初,每天只有大约 10 到 20 次访问。 但一个月后,有几天访问量达到了 80 次或更多,我有数十个电子邮件订阅者。
然后,正如我所料,第二天早上我发现我的网站在中国被封锁了。 它持续了大约三个月。 之后为了访问该站点,用户必须使用 VPN 隧道服务访问该站点。 这对大多数中国互联网用户来说是不切实际的。
然而,就在同一天,我松了一口气,很高兴地发现另一个网站 freeweibo.com 提供的服务完全相同,而且比我建立的更复杂。 freeweibo.com 项目非常有资源。 它在社交媒体上很活跃,并为国内用户提供不同的访问方式,如 RSS 订阅、电子邮件订阅和镜像站点。 它甚至有一个移动应用程序! 我不知道是谁建造了这个网站,但我很高兴我们拥有相同的愿景。
结论
根据当时的情况,我的网站显然不再有用了,几个月后我就关闭了它。
尽管有结果,但我不觉得这个项目是徒劳的。 相反,这是一次奇妙的经历,尽管它只存活了几个月。 它帮助我深刻体会到我国的现实。
在中国,要经营互联网业务,你必须对审查非常谨慎,否则你迟早会遇到麻烦。 如果社交媒体网站不遵守严格的审查制度并损害用户隐私,那么它们几乎没有任何成功的途径。
更新
freeweibo.me源代码现已在 GitHub 上提供。 如上所述,此源代码与类似网站freeweibo.com 无关。