web-scraping - Dexador 没有 OpSSL 版本号

标签 web-scraping lisp common-lisp

在尝试进行网页抓取时,我遇到了 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 中则不行。

我看到的一个解决方案是将关键字参数 insecure 设置为 true:

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

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

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

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

这可以在命令行中正常工作:

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

最佳答案

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

关于web-scraping - Dexador 没有 OpSSL 版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58987081/

相关文章:

recursion - 与 SUCC 的功能

design-patterns - 口齿不清 : dynamic scope vs explicit parameter passing

common-lisp - 在 Common Lisp 中访问封装类方法中的封装类槽

python - Scrapy如何使用代理池

php - 如何将动态 (PHP) 网站存档为静态 HTML?

计划项目构想

lisp - 使用 defparameter 定义变量,名称在运行时确定

r - 将嵌套 for 循环转换为函数

使用 Beautiful Soup 进行 Python 网页抓取 - 遇到麻烦

syntax - cond 变量没有值