selenium - 使用 selenium 访问网站时无法与客户端建立 TLS
问题描述
我正在尝试运行 Mitmdump 来收集 HTTP/HTTPS 请求。当我在mitmdump
里面运行时venv
,它报告:
Proxy server listening at http://*:8080
127.0.0.1:43382: clientconnect
127.0.0.1:43384: clientconnect
127.0.0.1:43382: GET http://detectportal.firefox.com/success.txt
<< 200 OK 8b
127.0.0.1:43390: clientconnect
127.0.0.1:43392: clientconnect
127.0.0.1:43390: GET http://detectportal.firefox.com/success.txt?ipv4
<< 200 OK 8b
127.0.0.1:43384: CONNECT location.services.mozilla.com:443
<< Cannot establish TLS with client (sni: location.services.mozilla.com): TlsException("SSL handshake error: Error([('SSL routines', 'ssl3_read_bytes', 'tlsv1 alert unknown ca')],)",)
我想这可能是由错误的 CA 引起的。我用的CA got from mitmproxy/test/mitmproxy/data/confdir
,是的mitmproxy-ca-cert.pem
,几个月前可以用,现在不行了,我也试过/root/.mitmproxy/mitmproxy-ca.crt
了,报同样的错误。我真的不知道为什么。(T^T)
任何帮助将不胜感激!
以下是一些环境信息:
Mitmproxy: 5.2
Python: 3.6.5
OpenSSL: OpenSSL 1.1.1g 21 Apr 2020
Platform: Linux-5.4.0-42-generic-x86_64-with-Ubuntu-18.04-bionic
Firfox: 75.0
Selenium: 3.14
geckodriver: 0.25.0
以下是我用来设置 CA 的命令:
openssl x509 -in /root/.mitmproxy/mitmproxy-ca-cert.pem -inform PEM -out /root/.mitmproxy/mitmproxy-ca.crt
cp /root/.mitmproxy/mitmproxy-ca.crt /usr/share/ca-certificates/extra/mitmproxy-ca.crt
echo "extra/mitmproxy-ca.crt" >> /etc/ca-certificates.conf
update-ca-certificates
我用来访问网站的代码是:
opts = FirefoxOptions()
opts.add_argument("--headless")
browser = webdriver.Firefox(firefox_options=opts, seleniumwire_options={'verify_ssl': False})
browser.header_overrides = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0'}
browser.get(url)
解决方案
mitmproxy 在启动时自动生成其 CA 证书~/.mitmproxy/
。如果您的客户端不信任此证书,则连接将失败。也可以http://mitm.it
在使用mitmproxy的时候访问安装。
推荐阅读
- ios - 如何在 SWRevealViewController 中以编程方式执行显示视图控制器推送控制器?
- c# - 我应该使用调试构建可执行文件还是发布构建可执行文件来安装 Windows 服务?
- angular - 在 Nrwl/Nx 工作区中包含一些库的包
- python - 当 Ping 超时两次时重新启动程序
- php - 在 CodeIgniter 中显示长脚本执行期间的实时进度和任何错误
- excel - VBScript刷新特定文件夹中的所有excel文件
- html - Bootstrap 4网格布局定制
- android - 在 Android 清单中 android:name 显示错误 -- parse sdk android
- asp.net-mvc - Transport Tracker 以在 MVC Web 应用程序中的 Google 地图上跟踪公交车
- android - 使用 minifyEnabled true 来避免 multidex 禁用断点 - 如何修复?