树洞剪藏#剪藏#树洞剪藏

利用 Cloudflare Workers 为 Telegram 频道搭建镜像不想看思考过程的可以跳到 “部署” 或者直 - 掘金

2024 年 12 月 9 日1 分钟
分享Twitter / XTelegram微博

同步来源:树洞剪藏 源站剪藏 ID:286 原文地址:https://juejin.cn/post/7262904835828138040?searchId=202412090850499617D0D11E0CB7C50F31

打开原文 · 打开源站剪藏快照


利用 Cloudflare Workers 为 Telegram 频道搭建镜像不想看思考过程的可以跳到 “部署” 或者直 - 掘金

set 限制解除

首页

BOT

沸点

课程

直播

活动 AI刷题 NEW 商城 APP 插件

创作者中心

会员

登录

注册

利用 Cloudflare Workers 为 Telegram 频道搭建镜像

idealclover

2023-08-03

2,175

阅读8分钟

智能总结

复制 重新生成

文章主要讲述作者为解决 Telegram 频道被墙的问题,探索利用 Cloudflare Workers 搭建镜像的过程。包括初探索的挫折,再探索的新思路,如搬运工式的操作及遇到的问题和解决方法,还介绍了部署步骤,最后表达了对互联网联通的感慨。

关联问题: Cloudflare 收费吗

镜像站稳定吗

如何优化镜像效果

不想看思考过程的可以跳到 “部署” 或者直接去看我写完的项目 Telegram-Channel-Mirror ~

傻翠翠长篇输出的主要地方就是自己的博客啦。经过了一次又一次的功能迭代、代码优化以及 debug 之后,这个博客自己用起来也是越来越顺手了。

但是问题是,自己在摸鱼的过程中往往有些想要分享的文章、视频甚至段子之类的短文字、链接等等,总不能想到什么就都发博客吧——这让表达欲无处安放的翠翠犯了难。

其实对于国内,这个需求最好的去处是微博。但是因为实在对微博对一系列行为不很满意,而又怕自己的一些 暴论 一不小心触碰雷区,最终选择了 Telegram 频道 ( 镜像站 )作为主要的短文字输出地点。

随之而来的问题就是——Telegram 频道被墙了哇喂,怎么让不常挂梯子的小伙伴也能浏览到自己频道的信息呢?于是便心心念念地琢磨着,怎么能把 Telegram 频道 “引过来”。

初探索

对这件事情的最早探索是在疫情的时候,在疫情伊始自己便开始注意到 @ncov2019 的信息,既准确又及时,极大缓解了那段时间自己的吃瓜焦虑。

而随后,自己也发现了网友所建立的 镜像站 ,让自己意识到,把数据抓过来在墙内广播这件事是【有戏的】。

简单来说,这样的镜像更像一个爬虫,定期爬取 Telegram Channel 中的数据,并以前端的形式呈现出来,画成图的话,大概是这样。

随后自己便去研究了一下这个镜像站的 前端 和 后端 代码。但可惜的是很快自己便遇到了问题。

首先由于前后端语言不统一,前端用 Vue 后端用 Python,使得部署起来很麻烦。于是自己首先想到的思路是将两端直接捏合起来做一个 docker 镜像。

但另一个问题是:自己有 docker 的机子在国内,而国外机由于性能原因没有装 docker,这就使得 docker 还需要搭配代理食用 —— 想了想当初自己配 rsshub 和 ttrss 的时候,现在想想也是挺噩梦的一件事。

其次,前端的一些代码是写死的,很难做成配置项(例如,随频道改变标题等等),因此即使做出来也难以做到很强的泛用性。因此这个方案最后也就作罢了。

再探索

这件事本不了了之了,但随着看到木子的 这篇博客 ,其中提出了用 Cloudflare Workers 直接把 Telegram 频道预览网站镜像过来的可能性,从而让这件事有了新的希望。

而正巧前段时间刚刚因为自己的另一个项目 GitHub-Star-Counter 和 Spencer Woo 的 Substats ,简单用上了 Cloudflare Workers,脑补了一下觉得这事有戏,于是便更细致地研究了一下。

用 Cloudflare Workers 做镜像的思路则来自于 ChrAlpha 的 这篇文章 (啊,我的友链都是些什么怪物们 orz 傻翠给大家丢脸了 QAQ)。

Cloudflare Workers 是 Cloudflare 所推出的 Serverless 服务,大概可以理解为跑在可以任何地方的小函数与中间件,借助 JS 可以实现各种奇妙的功能。

更神奇的是,免费用户 每天 只有区区 10 万次 的调用额度 —— 哇,太少了,根本花不完诶!不用你部署还用谁呢?不愧是 Cloudflare,有钱就是任性 orz

如果说初探索的思路更像是个爬虫,定时爬取频道信息并呈现,那么现在的思路更像是搬运工,直接将 Telegram 频道的预览地址 eg: t.me/s/idealclov… 整体搬了过来,需要什么?我帮你取!当我们去访问镜像站的时候,由 Cloudflare 直接做信息的搬运工。

但是这个过程中遇到的问题是,对于一个网站来说,我们往往需要请求其 html、css、js、json 及各种静态文件。当我们请求主文件过后,会根据其所附的文件,再请求其他文件 —— 虽然主文件被搬过来了,但如果上面其他文件的地址还是原封不动的,同样什么用也没有。

因此我们所需要做的不单单是【转发】,还有【修改】。

通过正则表达式的批量匹配与替换,我们便可以将原来指向其他域名的文件重新指回我们的 Cloudflare Worker 上,并通过映射让其指向正确的网址。

然而由于前人的代码或多或少有些问题。于是在进行了这样的思路整理与 “文献综述”(写论文写魔怔了 2333)后,也算是站在巨人的肩上迈出了自己的一小步。

巨人肩上的一小步

因此在前人的基础上,自己捋顺了整体思路,做了如下的总结与尝试。

首先对主 URL 进行映射,将 / 对应到 t.me/s/频道名称 上

其次将主 URL 中所引用的其他文件进行正则匹配与替换

将 telegram.org 域名下的引用更改为自己域名 /static 下的对应引用

将原有的 Download Telegram 链接内容直接替换为自己频道的原本链接

将出现最多的个人头像直接替换为墙内 CDN 的对应链接

将引用资源进行映射,将 /static 对应到 telegram.org ,完成对其他文件对解析

而对于图片、视频等资源,由于 CloudFlare Workers 的资源限制,自己试验过后发现即使进行代理,图片也往往加载不出来或加载速度堪忧,视频就更不用想了。

不显示就不显示吧,谁让你不挂梯子呢(

而最终,自己也将这个思路所形成的代码浓缩进了 Telegram-Channel-Mirror 项目中,更准确地说是 这个文件 中,与大家共享,希望能帮到需要的人。

部署

这里我懒,很多图和文字就直接用木子的 这篇博客 的啦 XD

首先是要去 CloudFlare 上注册一个账号... 这步就不教了嗷

登录到面板,点击左上角的 Menu —-> Workers 进入到 Workers 页面。新注册的用户会提示设置一个 workers.dev 顶级域名下的二级子域名,这个子域名设置好之后是 ** 不可更改的 **

之后你新创建的 Worker 就会使以这个域名而二级子域名开始的,类似于 WorkerName.yousetdomain.workers.dev 。 yousetdomain 就是你要设置的二级子域名, WorkerName 可以自定义,默认是随机生成的。

当然,也可以给自己的域名添加一条 CNAME 到 WorkerName.yousetdomain.workers.dev ,这样使用自己的域名就可以访问到 Worker 了。

设置好二级子域名之后选择 free 套餐计划,然后进入到 Worker 管理界面,创建一个新的 Worker。

之后我们复制我项目中的 index.js 中的代码到 Script 输入框,并更改头几行的配置:

channel_name: 频道名称

host_name: Worker 的域名,供替换使用

icon_url: 由于不反代图片,故需另附头像链接

修改好代码之后点击左下角的 Save and Deploy 然后 Preview 看看页面是否显示正常,如果显示正常就完全 OK 啦~

写在最后

唉,也许过段时间,cloudflare workers 也会被拒之于门外吧 —— 毕竟在国内也不是没有替代品。serverless 服务现在也是各大云所赤手可热的焦点项目。还有阿里云、腾讯云等等云在等着我们。

但是,有时候真的要佩服互联网元老们所怀揣对那份自由、共享的精神,以及他们的技术能力与高瞻远瞩的视野所带来的互联网底层规则。

虽然时至今日,不论任何国家、地区还是组织 都 愈发开始自我封闭,甚至交流的社区也开始充斥着各种小团体小圈子,但只要互联网还存在着,还联通着,只要我们想彼此沟通,就必然有办法能绕过彼此间的封锁,与大洋彼岸互相沟通。这一点,无论如何都不会回去了。

也许,虽然艰难且步步妥协,但互联网终究还是些许改变了世界呢。

拓展链接

idealclover/Telegram-Channel-Mirror: 利用 CloudFlare Worker 搭建 telegram 频道镜像站,使得国内可以访问

thegreatjavascript/2019-nCoV-News: 2019-nCoV 疫情实时播报|墙内传播版(请广泛传播)

QuantumGhost/ncov-channel-crawler

使用 CloudFlare Workers 搭建 telegram 频道镜像站 | 木子

Cloudflare Worder 免费搭建镜像站 | ChrAlpha 的幻想乡

Substats:快速统计你在各个平台的关注者! - Spencer's Blog

theme: channing-cyan

标签: 产品

评论 0

0 / 1000

标点符号、链接等不计算在有效字数内

Ctrl + Enter

发送

登录 / 注册 即可发布评论!

暂无评论数据

idealclover

字节跳动商业产品经理

榜上有名

20

文章

10k

阅读

10

粉丝

关注

已关注

私信

精选内容

如何设计一个高实时性团队协作的文档

MAODO

· 41阅读 · 1点赞 程序员很喜欢的几款神器

程序员小榆

· 58k阅读 · 504点赞 我终于从不想上班又不能裸辞的矛盾中挣扎出来了

程序员Winn

· 6.2k阅读 · 73点赞 降本增笑,领导要求程序员半年做出一个金蝶

萤火架构

· 99k阅读 · 484点赞 独立开发沉思录周刊:vol22.AI 正在加剧知识幻觉

两万焦

· 65阅读 · 1点赞

为你推荐

白嫖Cloudflare Workers 搭建 Docker Hub镜像加速服务|

网工格物

6月前

178

点赞

评论

Linux

利用Cloudflare轻松搭建免费个人网站

cortxu

10月前

2.0k

1

评论

前端

使用 TypeScript 开发你的第一个 Telegram 机器人(2)- 将 Telegram 做为 OSS 对象存储服务

悖论BeilunYang

1月前

94

2

评论

TypeScript

机器人

Serverless

新作品,一个通用的 Cloudflare Workers HTTP 反向代理

jonssonyan

4月前

716

2

评论

程序员

第九期【零基础】CF免费KV文件存储优选IP文件-2024最新纯小白零成本搭建永久免费cloudflare

AM科技

4天前

18

1

评论

数据库

Spring Cloud

稳了,搭建Docker国内源图文教程

jonssonyan

2月前

51

2

评论

Docker

三分钟!快速解决Dockerhub镜像站无法访问问题!

一诺滚雪球

5月前

5.1k

15

3

前端

CloudFlare R2 个人免费图床搭建教程

MatrixWave

1年前

1.2k

1

评论

笔记

使用免费的 Cloudflare Workers 搭建 Serverless 站点计数服务

Willin老王带你躺平养老

2年前

692

2

评论

架构

解决docker镜像加速站无法访问问题(半永久解决)

塔哥哥要学习

3月前

394

点赞

1

Docker

容器

处理docker国内无法使用问题

king_star_mlt

2月前

96

1

评论

后端

从 Docker Hub 拉取镜像受阻?这些解决方案帮你轻松应对

Rainbond开源

5月前

1.5k

点赞

1

Docker

云原生

Github国内镜像资源

风早

2年前

1.3k

点赞

评论

GitHub

利用Cloudflare Workers AI实现高级机器学习嵌入:初学者指南

用户850429986511

2天前

3

点赞

评论

前端

我把网站迁移到 cf,省了几万块

艾逗笔

3月前

4.5k

77

12

全栈

关注

登录掘金领取礼包

更多登录后权益等你解锁 登录 / 注册

AI 结果可能不准确,请谨慎使用

沉浸阅读

相关文章