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

使用Socks5代理请求Telegram出现SSLEOFError,求解决方案

解决使用Socks5代理请求Telegram时的SSL EOF异常

问题场景

编写了一个向Telegram发起请求的函数,设置Socks5代理后发起请求触发SSL异常。

原代码

def get_request_page(self, base_url: str = "https://t.me/", proxy_url=None):
    url = base_url + str(self.channel.username)
    if proxy_url is not None:
        proxy_info = {
            "http": proxy_url,
            "https": proxy_url
        }
        response = requests.get(url=url, proxies=proxy_info, verify=certifi_location)

    else:
        response = requests.get(url=url, verify=certifi_location)
    if response.status_code // 100 != 2:
        return ""

    soup = BeautifulSoup(response.content, 'html.parser')

    return soup.get_text()

报错信息

SOCKSHTTPSConnectionPool(host='t.me', port=443): Max retries exceeded with url: /solitude_comp_music (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1007)')))

解决方案

  • 安装Socks代理依赖
    requests本身不原生支持Socks5代理的HTTPS请求,需安装扩展包:

    pip install requests[socks]
    
  • 校验代理URL格式
    Socks5代理的正确格式为:

    • 带认证:socks5://user:password@host:port
    • 无认证:socks5://host:port
      确保proxy_url使用socks5://前缀,而非http/https。
  • 调整TLS版本或SSL验证策略
    部分代理对TLS版本兼容性较差,可指定TLS版本;测试场景下可临时关闭SSL验证(生产环境禁止使用),修改后的代码示例:

    import ssl
    from requests.adapters import HTTPAdapter
    from urllib3.poolmanager import PoolManager
    from urllib3.util import ssl_
    
    class TLSAdapter(HTTPAdapter):
        def init_poolmanager(self, *args, **kwargs):
            ctx = ssl_.create_urllib3_context(ssl.PROTOCOL_TLSv1_2)
            kwargs['ssl_context'] = ctx
            return super().init_poolmanager(*args, **kwargs)
    
    def get_request_page(self, base_url: str = "https://t.me/", proxy_url=None):
        url = base_url + str(self.channel.username)
        session = requests.Session()
        # 绑定指定TLS版本的适配器
        session.mount('https://', TLSAdapter())
        
        if proxy_url is not None:
            proxy_info = {
                "http": proxy_url,
                "https": proxy_url
            }
            session.proxies.update(proxy_info)
        
        try:
            response = session.get(url, verify=certifi_location)
        except requests.exceptions.SSLError:
            # 仅测试用,生产环境请勿关闭验证
            response = session.get(url, verify=False)
        
        if response.status_code // 100 != 2:
            return ""
    
        soup = BeautifulSoup(response.content, 'html.parser')
        return soup.get_text()
    
  • 验证代理可用性
    确认代理服务器正常运行,可通过其他工具测试代理能否正常访问Telegram服务,排除代理被屏蔽或网络波动的问题。


内容的提问来源于stack exchange,提问作者amir Reza Seddighin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 20:43:12