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)。

标签: none

添加新评论