You need to enable JavaScript to run this app. Linode Ubuntu20.04环境下Selenium搭配Chromium无法加载特定网站图片
优惠活动
大模型
产品
解决方案
定价
更多

Linode Ubuntu20.04环境下Selenium搭配Chromium无法加载特定网站图片

解决与排查步骤

  • 修正服务器场景下Chromium的启动配置参数
  • Linode Ubuntu实例默认的/dev/shm分区容量仅64M,会触发Chromium加载大尺寸图片时的内存分配失败,直接静默丢弃图片请求,本地虚拟机因为共享主机内存不会复现该问题。必须新增两个启动参数:--no-sandbox、--disable-dev-shm-usage
  • 强制开启渲染层的图片加载开关,新增参数--blink-settings=imagesEnabled=true。Ubuntu源适配的Chromium版本在无GUI运行环境下,可能因沙箱权限判定异常默认关闭图片加载能力,且不会输出明确的加载失败报错
  • 解决UA与浏览器实际指纹不匹配导致的CDN拦截
  • 当前使用fake_useragent生成的随机UA,会与服务器上固定版本Chromium的实际TLS握手指纹存在版本不匹配问题。目标网站的图片CDN会校验UA声称的浏览器版本与实际TLS指纹的匹配度,不匹配时直接拒绝返回图片资源。这也是同环境下Firefox可以正常加载图片的核心原因——Firefox的TLS指纹与自身默认标识天然匹配,不会被CDN判定为异常客户端
  • 移除随机UA的调用逻辑,手动执行chromium-browser --version获取本地安装的精确版本号,将对应版本号拼接为标准桌面端Chrome UA字符串传入配置,不要使用随机生成的高版本Chrome标识
  • 替换旧版headless渲染模式
  • 将原有的--headless参数替换为--headless=new,搭配新增的--disable-gpu参数,规避旧版headless模式下目标网站因渲染特性检测失败拦截图片资源的问题
  • 检查所有启动参数中是否存在--disable-images类的全局拦截规则,确认图片请求没有被本地配置阻断
  • 问题验证方法
  • 调整配置后开启Chromium的网络请求日志,过滤图片类型请求的返回状态码,定位是CDN返回403拒绝、还是本地内存不足导致的请求失败,不要仅通过截图判断加载状态

调整后的核心代码片段

if browser == 'chrome':    
    options = webdriver.ChromeOptions()
    options.add_argument(f'--proxy-server={proxy}')        
    if headless:
        # 替换旧版headless为新版渲染引擎
        options.add_argument('--headless=new')         
    # 替换随机UA,传入与本地Chromium版本完全匹配的固定UA
    options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36')
    # 补充云服务器环境必选配置
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--blink-settings=imagesEnabled=true')
    options.add_argument('--disable-gpu')
    driver = webdriver.Chrome(PATH, options=options)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 10:06:04