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防火墙测试:
若问题解决,添加允许Chrome与代理通信的规则。sudo ufw disable - 临时切换SELinux至宽容模式测试:
正常后再配置SELinux规则。sudo setenforce 0
内容的提问来源于stack exchange,提问作者Vit Kos
相关产品推荐
相关产品推荐

