CF上搭建teleAPI
Telegram API 代理搭建与防护配置指南
1. 搭建方案对比
在 Cloudflare Workers 和 Google Cloud Platform (GCP) Compute Engine 上均可搭建 Telegram API 反向代理。
| 维度 | Cloudflare Workers 方案 | GCP Compute Engine 方案 |
|---|---|---|
| 成本 | 每日 10 万次免费请求 | 需支付 VM 实例与出站流量费用 |
| 运维成本 | 极低(无需维护服务器与 Web 服务) | 中等(需维护 Nginx 及 SSL 证书) |
| 网络延迟 | 全球边缘节点加速 | 取决于 VM 实例机房位置 |
| 综合推荐 | 首选 | 适合已有运行 VM 的场景 |
2. Cloudflare Workers 极简部署
基础代理代码
在 Cloudflare Workers 编辑器中部署以下脚本,即可实现 Telegram API 的全功能转发:
export default {
async fetch(request) {
const url = new URL(request.url);
// 拦截根路径请求
if (url.pathname === '/' || url.pathname === '') {
return new Response('Telegram API Proxy is running!', { status: 200 });
}
// 将请求的目标 Host 替换为 Telegram 官方 API
url.host = 'api.telegram.org';
return fetch(new Request(url.toString(), {
method: request.method,
headers: request.headers,
body: request.body,
redirect: 'follow'
}));
},
};
3. 防火墙与防爬虫安全加固
Workers 部署后,即使未公开使用,全网扫描器和爬虫也会产生基础调用量(每日几十次属于正常现象,且包含在 10 万次免费额度内)。
为了彻底屏蔽非授权请求和爬虫扫描,推荐在代理中加入密钥路径校验。
带防扫描机制的代码
// 设置自定义密钥路径(请自行修改为复杂的字符串)
const SECRET_PATH = '/my_secret_key_8899';
export default {
async fetch(request) {
const url = new URL(request.url);
// 校验路径是否包含密钥
if (!url.pathname.startsWith(SECRET_PATH)) {
// 未带密钥的扫描请求直接返回 404
return new Response('Not Found', { status: 404 });
}
// 剥离密钥,还原 Telegram 原始 API 路径
url.pathname = url.pathname.replace(SECRET_PATH, '');
// 转发至 Telegram 官方 API
url.host = 'api.telegram.org';
return fetch(new Request(url.toString(), {
method: request.method,
headers: request.headers,
body: request.body,
redirect: 'follow'
}));
},
};
4. 测试与使用方法
假设部署后的 Workers 域名为 [https://xxx.workers.dev](https://xxx.workers.dev),密钥路径为 /my_secret_key_8899。
1. 浏览器或 cURL 测试
直接请求 Telegram 的 getMe 接口:
curl -X GET "https://xxx.workers.dev/my_secret_key_8899/bot<YOUR_BOT_TOKEN>/getMe"
正确响应示例:
{
"ok": true,
"result": {
"id": 123456789,
"is_bot": true,
"first_name": "YourBot",
"username": "YourBot_bot"
}
}
2. Python (requests) 调用示例
import requests
PROXY_BASE_URL = "https://xxx.workers.dev/my_secret_key_8899"
BOT_TOKEN = "YOUR_BOT_TOKEN"
url = f"{PROXY_BASE_URL}/bot{BOT_TOKEN}/getMe"
response = requests.get(url)
print(response.json())
5. GCP Compute Engine 部署参考(Nginx)
如需在 GCP Linux VM 上配置代理,可安装 Nginx 并配置反向代理规则:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass https://api.telegram.org/;
proxy_set_header Host api.telegram.org;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}
注意事项:GCP 部署需在 GCP 控制台开放 80/443 端口入站规则,并建议使用 Certbot 签发 SSL 证书(HTTPS)。