前言
最近在琢磨Telegram(下文简称TG)机器人,机器人都在本地调试好了,结果我部署在香港服务器后却报了错

谁他娘能想到我的香港服务器连不上TG官方的服务器...
但是,我总不能为了个机器人专门去买其他国家地区的服务器吧,完全没必要,我就尝试使用代理IP,但是免费的代理IP压根没法用,付费的又巨贵
那这时候就可以使用Cloudflare(下文简称CF)反代TG官方api,既能保证安全,还免费
准备材料
- cf账号
- 一个在CF的域名(最好在国外域名商注册,避免被按头)
反代TG
先进入CF控制台(https://dash.cloudflare.com/)并登录账号
首先得确保你的域名已经被添加至CF,不会添加到参考这篇文章:CloudFlare添加站点域名,配置CDN, HTTPS SSL证书 - 知乎
进入计算栏目下的Workers 和 Pages并点击创建应用程序

然后点击从 Hello World! 开始

直接点击部署

随后点击部署中的编辑代码

删掉原来的默认代码,填入下方代码:
export default {
async fetch(request) {
const url = new URL(request.url);
const target = new URL(`https://api.telegram.org${url.pathname}${url.search}`);
const res = await fetch(target, {
method: request.method,
headers: request.headers,
body: request.body
});
return res;
}
};

这个代码是我实测有用的(豆包万岁),因为我试过网上那些泛滥教程的代码,部署后出现的问题很多,代码看起来很长很专业,用起来全是问题,api返回的信息跟官方都不一样了或者压根不支持一些api
代码部署完后返回,在域里面添加域名,选择你的域名然后填入二级域名就行了

这边补充下,CF虽然会送你一个二级域名,但是这个域名在国内依然无法访问,所以只能添加你自己的域名
修改代码
代码中指定自定义 base_url,示例:
app = ApplicationBuilder()\
.token("你的TOKEN")\
.base_url("https://你的反代域名/bot")\
.connect_timeout(20)\
.read_timeout(30)\
.build()
2 条评论
话说telegram出了自己的bot severless平台,可以跑nodejs+sqlite架构的bot。
这个我确实还没听说过