使用 Cloudflare Worker 代理 Telegram Bot Api

Cloudflare Worker 搭建 Telegram 反向代理


一、创建 Cloudflare Worker

  1. 登录 Cloudflare
    访问 Cloudflare Dashboard 并进入 Workers & Pages

  2. 创建新 Worker

    • 点击 Create ApplicationCreate Worker
    • 进入编辑器后,删除默认代码,替换为以下代码,使用 Cloudflare Worker 反向代理 api.telegram.org
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export default {
async fetch(request) {
let url = new URL(request.url);
url.hostname = "api.telegram.org"; // Telegram 官方 API 地址

let modifiedRequest = new Request(url, {
method: request.method,
headers: request.headers,
body: request.body,
redirect: "follow"
});

return fetch(modifiedRequest);
}
};
  1. 说明
    • 这个 Worker 代码 直接转发 请求到 api.telegram.org,实现无感代理。
    • 你可以通过 https://你的worker子域.workers.dev/botTOKEN/sendMessage 访问 Telegram API。

二、绑定自定义域名

如果你想用 tgbotapi.test.com 作为反向代理域名:

  1. 进入 Cloudflare 控制面板 → 选择你的域名 (test.com)。
  2. 添加 DNS 记录
    • 记录类型:CNAME
    • 名称:tgbotapi
    • 目标:你的worker子域.workers.dev
    • Proxy 状态:开启 Proxied
  3. 配置 Worker 路由
    • 打开 Workers & Pages → 选择你的 Worker。
    • 进入 TriggersAdd Route
    • 规则填写 https://tgbotapi.test.com/*,绑定到你的 Worker。

三、修改 Bot 代码,使用反代 API

方法 1:直接修改 API 请求 URL

如果你的代码使用 requests 直接调用 Telegram API:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import requests

TOKEN = "你的Bot Token"
CHAT_ID = "123456789"

# 修改 API URL,使用你的反代域名 tgbotapi.test.com
API_URL = f"https://tgbotapi.test.com/bot{TOKEN}/sendMessage"

data = {
"chat_id": CHAT_ID,
"text": "测试消息"
}

response = requests.post(API_URL, data=data)
print(response.json())

方法 2:修改现有 Bot 框架

如果你使用 python-telegram-bot 库,可以修改 base_url

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from telegram import Bot
from telegram.ext import Updater, CommandHandler

TOKEN = "你的Bot Token"

# 使用反向代理 API
bot = Bot(token=TOKEN, base_url="https://tgbotapi.test.com/bot")

def start(update, context):
update.message.reply_text("你好,我是你的 Bot!")

updater = Updater(bot=bot, use_context=True)
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))

updater.start_polling()
updater.idle()

四、测试是否生效

可以手动调用 curl 来测试:

1
curl "https://tgbotapi.test.com/bot你的BotToken/getMe"

如果返回正确的 Bot 信息,说明反向代理正常工作。


五、常见问题

  1. 403 Forbidden

    • CF 可能屏蔽了某些请求,添加 User-Agent 解决:
      1
      headers.set("User-Agent", "Mozilla/5.0");
  2. 国内仍然访问不到

    • 可能是 CF 反向代理被干扰,尝试 Cloudflare Argo Tunnel
  3. 速度慢

    • Worker 免费版有 100K 限制,升级 Cloudflare Pro 可提升稳定性。

这样你就完成了 Cloudflare Worker代理Telegram Bot Api,国内服务器可以用 tgbotapi.test.com 直接请求 Telegram!