python-3.x - Selenium webdriver.Remote 在 Linux 上出现 SSL 错误,在 macOS 上工作

标签 python-3.x selenium ssl selenium-webdriver

我正在尝试使用 Selenium 抓取第三方网站(我尝试使用 Beautiful Soup,但他们的身份验证系统太难理解,所以我放弃并改用 Selenium)。

我正在使用一个 python 脚本,该脚本使用最新的 Selenium 3.12.0 驱动程序和 selenium-server-standalone-3.12.0.jar。我的 Linux 和 macOS 机器都在运行 jdk 1.8.0_172。

如果我使用 macOS 上的 selenium 服务器在 Linux 或 macOS 上运行脚本,效果很好。如果我使用 Linux 上的 selenium 服务器在 Linux 或 macOS 上运行脚本,它无法加载 jQuery 并出现以下错误:

18:28:02.453 ERROR [DefaultJavaScriptErrorListener.loadScriptError] - Error loading JavaScript from [https://ww6.fltplan.com/js/jquery-1.12.3.min.js].
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
   at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1002)
   at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)

我正在抓取的网站写得非常原始(看起来像 GeoCities 中的东西)所以它很可能在做一些荒谬的事情。哦,这段代码几周前还可以运行,我“卡住”了它,但后来它在 Linux 中停止运行,我不得不重新开始修改它。

这是我的连接代码:

capabilities = {
        'browserName': 'htmlunit',
        'version': 'firefox',
        'platform': 'ANY',
        'javascriptEnabled': True,
        'acceptInsecureCerts': True,
}
driver = webdriver.Remote(
    # "http://192.168.1.46:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNITWITHJS
    # "http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNITWITHJS
    "http://localhost:4444/wd/hub", capabilities
)

driver.get("https://www.fltplan.com/")

第一个注释掉的远程 url 是在我的 macOS 机器上运行的 Selenium,它可以工作。第二个和第三个是尝试使其在 Linux 上运行,但目前未成功。第二个是几周前才有效的那个。

最佳答案

我想我有一个解决方案。我在 java_home/jre/lib/security 中复制了 java.security 文件,并注释掉了文件中的所有“disabledAlgorithms”行。我用 nohup java -Djava.security.properties==java.security.copy -jar selenium-server-standalone-3.12.0.jar 启动了 selenium 服务器,它现在似乎可以工作了。

我很想听听解释为什么会这样。我认为这意味着他们试图从中下载 jquery 的站点使用了 jdk 1.8 禁用的加密,因为它被认为太弱了。

关于python-3.x - Selenium webdriver.Remote 在 Linux 上出现 SSL 错误,在 macOS 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50548495/

相关文章:

python - 计算两个日期之间的差异时如何删除 "days"?

python - 使用 macports 安装 python 3.6 后,将 python 与终端一起使用时出错

python - 在 matplotlib 2.1.0 上绘制平均值和标准差

ruby-on-rails - nginx 服务器中的 Ruby on Rails,HTTPS 重定向到 HTTP

ssl - 在有或没有 BIO 的情况下使用 OpenSSL TLS?

java - HTTPSURL 连接和 Apache(系统)DefaultHttpClient 之间的证书链不同

python - 编写一个在列表索引之间交替加号和减号的函数

java - 如何在多个浏览器中使用不同的登录并行执行 TestNG.xml

javascript - 为什么 Selenium 不使用 JS?

javascript - 单击 Javascript 警报时如何保留我的 Firefox 首选项?