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

Python爬虫兼WooCommerce产品上传脚本图片上传遇SSLEOFError求助

解决WooCommerce图片上传时的SSLEOFError问题

以下是针对你遇到的SSL握手失败导致图片上传失败的具体解决方案:

  • 补全请求URL的协议头
    错误日志中的URL为//wp-json/wc/v3/products/2484/images,缺少http://或https://协议前缀,这会导致请求解析异常。先确认脚本中WooCommerce API的基础URL是否正确拼接,例如完整URL应为https://你的域名/wp-json/wc/v3/products/2484/images。

  • 适配服务器SSL配置
    部分服务器仅支持特定TLS版本或加密套件,可通过自定义请求适配器强制兼容:

    import ssl
    import requests
    from requests.adapters import HTTPAdapter
    from urllib3.poolmanager import PoolManager
    
    class SSLAdapter(HTTPAdapter):
        def init_poolmanager(self, *args, **kwargs):
            context = ssl.create_default_context()
            context.set_ciphers('DEFAULT@SECLEVEL=1')
            context.options |= ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1  # 禁用老旧TLS版本
            kwargs['ssl_context'] = context
            return super().init_poolmanager(*args, **kwargs)
    
    # 初始化会话并挂载适配器
    session = requests.Session()
    session.mount('https://', SSLAdapter())
    

    后续上传图片时使用该session发送请求。

  • 优化超时与重试策略
    连接超时或服务器响应延迟可能引发EOF错误,可设置合理的重试规则与超时时间:

    from requests.adapters import HTTPAdapter
    from urllib3.util.retry import Retry
    
    retry_strategy = Retry(
        total=3,
        backoff_factor=1,
        status_forcelist=[429, 500, 502, 503, 504],
        allowed_methods=["POST"]
    )
    adapter = HTTPAdapter(max_retries=retry_strategy)
    session.mount('https://', adapter)
    
    # 发送上传请求时设置30秒超时
    response = session.post(api_url, files=image_files, auth=(consumer_key, consumer_secret), timeout=30)
    
  • 排查证书与文件问题

    • 若服务器使用自签名证书,测试环境可临时关闭证书验证(生产环境禁用此操作):verify=False,或指定本地证书路径:verify='/path/to/cert.pem'。
    • 确认上传图片为WooCommerce支持的格式(JPG/PNG等),且文件大小未超过服务器配置的上传上限,可先尝试上传小尺寸测试图片排除文件本身问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:33:23