You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

企业网络环境下Telegram Bot代理配置的SSLError证书验证问题求助

解决Telebot代理下的SSL证书验证问题

我之前也碰到过企业网络环境里Telegram机器人开发的SSL证书坑,结合你的情况,给你几个可行的解决方案:

方案1:修改Telebot底层的Requests会话

Telebot本质是基于requests库实现的,我们可以直接修改它的会话配置,复用你在requests里的成功逻辑:

import telebot
import json
from telebot import apihelper
import urllib3

# 关闭烦人的SSL警告
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open('params.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
username = data['username']
password = data['password']
access_token_tg = data['access_token_tg']

bot = telebot.TeleBot(access_token_tg)
# 配置代理(注意这里去掉了URL里多余的空格)
apihelper.proxy = {'https': f'https://{username}:{password}@10.0.18.139:3131'}

# 关键:给bot的requests会话禁用证书验证
bot.session.verify = False

print(bot.get_me())

这个方法直接让telebot使用和你测试requests时一样的证书验证规则,应该能快速解决问题。

方案2:配置企业自签名证书(更安全)

如果企业有自己的CA证书文件(比如.pem或.crt格式),推荐用这个方案,比禁用验证更安全:

import telebot
import json
from telebot import apihelper

with open('params.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
username = data['username']
password = data['password']
access_token_tg = data['access_token_tg']
# 替换成你企业CA证书的实际路径
ca_cert_path = "/opt/company/ca-cert.pem"

bot = telebot.TeleBot(access_token_tg)
apihelper.proxy = {'https': f'https://{username}:{password}@10.0.18.139:3131'}

# 指定用企业证书验证SSL连接
bot.session.verify = ca_cert_path

print(bot.get_me())

方案3:切换到Aiogram库(更灵活的现代框架)

你之前试过aiogram但可能没配置对,它支持自定义会话,处理代理和SSL验证非常直观,而且是异步框架,长期维护更省心:

import asyncio
import json
from aiogram import Bot, Dispatcher
from aiogram.client.session.aiohttp import AiohttpSession

with open('params.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
username = data['username']
password = data['password']
access_token_tg = data['access_token_tg']

# 创建带代理和SSL配置的自定义会话
session = AiohttpSession(
    proxy=f'http://{username}:{password}@10.0.18.139:3131',
    # 禁用验证,或者替换成证书路径:verify_ssl="/opt/company/ca-cert.pem"
    verify_ssl=False
)

bot = Bot(token=access_token_tg, session=session)

async def main():
    me = await bot.get_me()
    print(me)

if __name__ == '__main__':
    asyncio.run(main())

Aiogram的社区活跃度更高,文档也更完善,适合复杂的机器人开发需求。

总结

  • 想继续用telebot的话,优先试试方案2(配置企业证书),安全性更高;如果证书拿不到,方案1可以快速解决问题;
  • 要是打算长期开发机器人,推荐切换到Aiogram,它的代理和SSL配置逻辑更清晰,后续扩展功能也更方便。

内容的提问来源于stack exchange,提问作者Vadim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:39:05