Skip to content

图片下载逻辑有问题,会导致直接报500 #2546

@gbw-0721

Description

@gbw-0721

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我已完整查看过项目 README,尤其是常见问题部分
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述
在使用 NewAPI(特别是开启 GET_MEDIA_TOKEN=true 或使用 Gemini 模型时)转发包含特定图片链接的请求时,后端会因为下载图片失败而直接抛出 500 错误,导致服务不可用。
目前发现了三种导致崩溃的场景:

403 Forbidden: 访问 Wikipedia 等有防盗链的图片时,因缺失 User-Agent 被拒绝。
MIME Type Error: 访问 TikTok 等图片 API 时,因缺失 User-Agent 被重定向到验证页面 (text/html),导致 Gemini 格式化逻辑报错。
x509 Certificate Error: 访问证书域名不匹配的网站 (如 gdfreak.com) 时,因 HTTP Client 默认开启 TLS 校验而连接失败。
复现步骤
Wikipedia 图片 (触发 403): https://upload.wikimedia.org/wikipedia/commons/thumb/d/de/Kanashibeturomanza_001.JPG/1200px-Kanashibeturomanza_001.JPG
证书不匹配图片 (触发 x509): https://gdfreak.com/chartimage/jp0100500000010/jp010050000001001227_1.png
预期结果
能不能至少给一个开关可以不管他不下载啊,或者加点反反爬机制
AI检查:
经排查代码 service/download.go 中的 DoDownloadRequest 函数:

直接使用了默认的 GetHttpClient().Get(),未设置 User-Agent,导致被反爬拦截。
默认 Client 未配置 InsecureSkipVerify: true,导致无法容忍 SSL 证书错误。
修复建议 (Fix Suggestion):
建议修改 service/download.go,手动构造带 Header 的请求并忽略证书错误
相关截图

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions