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

Ubuntu环境下SeleniumBase配置代理返回空HTML的问题排查

Ubuntu下SeleniumBase配置代理返回空HTML的排查方案

问题描述

本地运行带代理参数的SeleniumBase代码可正常获取页面内容,但在Ubuntu系统中,相同代码配置代理后输出空HTML文档。不带代理时Ubuntu上代码运行正常,且通过curl测试代理可正常访问站点。尝试过添加xvfb、headless2参数,以及使用sbvirtualdisplay启动虚拟显示器的写法,问题依旧。

测试代码及结果

带代理测试代码

from seleniumbase import SB

with SB(
    uc=True, 
    proxy="LOGIN:PASS@XXX.143.169.XX:XXXX"
) as sb:

    sb.get("https://httpbin.io/ip")
    sb.sleep(2)
    print(sb.get_page_source())

带代理运行结果

python3 test.py
<html><head></head><body></body></html>

不带代理测试代码

with SB(
    uc=True,
) as sb:

    sb.get("https://httpbin.io/ip")
    sb.sleep(2)
    print(sb.get_page_source())

不带代理运行结果

python3 test.py
<html><head><meta name="color-scheme" content="light dark"><meta charset="utf-8"></head><body><pre>{
  "origin": "XXX.XXX.XX.XXX:XXXX"
}
</pre><div class="json-formatter-container"></div></body></html>

CURL代理测试结果

curl -x http://XXX.143.169.XX:XXXX -U LOGIN:PASS https://www.example.com
<!doctype html>
<html>
<head>
    <title>Example Domain</title>
</head>
</html>

可能的原因及解决方法

1. 代理参数格式缺失协议头

Ubuntu环境下Chrome可能无法自动识别代理协议,需在代理地址前显式添加http://或https://:

proxy="http://LOGIN:PASS@XXX.143.169.XX:XXXX"

2. 系统全局代理环境变量冲突

Ubuntu的http_proxy/https_proxy环境变量可能与代码指定的代理冲突,运行脚本前先清空:

unset http_proxy https_proxy && python3 test.py

3. 浏览器与Chromedriver版本不兼容

检查Ubuntu上Chrome/Chromium版本,使用SeleniumBase命令更新匹配的chromedriver:

sb install chromedriver

4. 代理SSL证书未导入系统证书库

若代理使用自定义SSL证书,需导入Ubuntu系统证书库:

sudo cp 代理证书文件.pem /usr/local/share/ca-certificates/
sudo update-ca-certificates

5. 防火墙/SELinux限制

  • 临时关闭UFW防火墙测试:
    sudo ufw disable
    
    若问题解决,添加允许Chrome与代理通信的规则。
  • 临时切换SELinux至宽容模式测试:
    sudo setenforce 0
    
    正常后再配置SELinux规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 09:26:16