首页 > 解决方案 > Dexador 无 OpSSL 版本号

问题描述

尝试进行网络抓取时,我遇到了 Dexador 库的问题(以及 Drakma 库的相同问题)。它们在处理 HTTP 请求时工作正常,但在处理 HTTPS 请求时收到错误消息。这是我发送的基本获取请求的示例:

(defvar *url* "https://www.amazon.com/")
(defvar *request* (dex:get *url*))

然后我收到这个回溯:

No OpenSSL version number could be determined, both SSLeay and OpenSSL_version_num failed.

所以我假设 OpenSSL 库可能有问题,但我不能 100% 确定发生了什么。我从命令行在我的 Windows 机器上成功实现了请求,OpenSSL 在我的 Windows 10 机器上运行良好,但在 Common Lisp 中却不行。

我看到的一种解决方案是将关键字参数不安全设置为 true:

(defvar *request* (dex:get *url* :insecure t))

但这不起作用并且收到相同的错误。当我试图抓取一个 http 网站时,请求成功:

(defvar *request* (dex:get "http://paulgraham.com"))

我想知道是否有其他人遇到过这个问题,以及是否有人找到了任何解决方案。我不知道这是否与 Windows 10、依赖库或其他问题有关。

这可以从命令行正常工作:

curl -v "https://www.amazon.com"

标签: web-scrapinglispcommon-lisp

解决方案


这里的问题是我的 OpenSSL 版本太新了。CL+SSL 是 Dexador 的一个依赖,CL+SSL 想要 1.0.1 版本,特别想要 OpenSSL 的 32 位版本。在玩了各种版本之后,这似乎解决了问题。


推荐阅读