标签: drakma

CL+SSL SSL 错误:禁用不安全的旧版重新协商。如何绕过或解决?

我正在尝试访问 https 端点以使用 common-lisp(sbcl) 拉回一些数据。有一段时间,这没有问题。然后有一天我开始收到以下错误

SSL error queue:
error:0A000152:SSL routines::unsafe legacy renegotiation disabled
   [Condition of type CL+SSL::SSL-ERROR-SSL]
Run Code Online (Sandbox Code Playgroud)

我尝试过使用 drakma 和 dexador,但两者都出现相同的错误。我已通过 openssl 确认我尝试连接的服务器不支持重新协商。

openssl s_client -connect

New, TLSv1/SSLv3, Cipher is AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Run Code Online (Sandbox Code Playgroud)

我使用的是 OSX,我的开放 ssl 版本是 LibreSSL 2.8.3。

因此,据我了解,我的客户端正在尝试启动重新协商,但服务器拒绝了它。我真的不知道从这里到哪里去,此时我什至不确定问题真正处于哪个级别,openSSL、CL+SSL 还是构建在 CL+SSL 之上的 http 客户端库。有没有办法禁用重新协商或强制建立新连接?我缺少一些设置吗?

ssl openssl sbcl common-lisp drakma

5
推荐指数
1
解决办法
2万
查看次数

使用Drakma为Bing Search API Common Lisp时出错

我正在构建一个程序,使用Bing的搜索API和常见的lisp与Drakma库来显示一些结果但由于某种原因在发送更长的查询时出错.它根本不显示任何结果.它适用于较短长度的查询.我正在使用临时帐户来解决这个问题.我有以下代码.

(defun get-rid-of-spaces (var)
 (cl-ppcre:regex-replace-all " " var "%20"))


(defun print-bing (search-term)
  (format nil "https://api.datamarket.azure.com/Bing/Search/v1/Web?Query=%27~a%27&Options=%27DisableLocationDetection%27&$format=json&$top=1" (get-rid-of-spaces search-term)))

(defun drakma-bing (search-term)
 (drakma:http-request (print-bing search-term)
           :basic-authorization
           '("bob.hammerston@mailinator.com" "L2gbaj+s1/KW/+ifAa9HrP0C1/kClpF4InH48Lw8UNc")))

(defun convert-to-string (response)
 (map 'string #'code-char response))
Run Code Online (Sandbox Code Playgroud)

然后我称之为,但它只适用于短搜索术语,我无法弄清楚原因.这不起作用:

(convert-to-string (drakma-bing "what is the largest man in the world"))
Run Code Online (Sandbox Code Playgroud)

但这样做

(convert-to-string (drakma-bing "what is"))
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

谢谢.

编辑:

我尝试手动编码print-bing函数,而不是使用带有更长字符串的函数,但它仍然不起作用,因此Drakma必定存在错误.我尝试手动将域名输入到Web浏览器中,这样就可以了,这就是为什么我认为错误与Drakma有关.

lisp common-lisp bing-api drakma

4
推荐指数
1
解决办法
165
查看次数

URL解码Common Lisp中的字符串

我有一个包含转义网址的字符串:

http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其解码为以下内容:

http://example.com?foo=bar+baz
Run Code Online (Sandbox Code Playgroud)

但是,我找不到Drakma导出的任何合适的功能.我可以像这样的代码:

* url-string

"http://example.com?foo=bar+baz"
* (drakma:url-encode url-string :utf-8)

"http%3A%2F%2Fexample.com%3Ffoo%3Dbar%2Bbaz"
Run Code Online (Sandbox Code Playgroud)

......所以我认为我走在正确的轨道上.如果有人能提供正确方向的推动我会很感激:-)我正在使用SBCL 1.0.54,它是从64位Linux Mint 13上的源代码构建的.

如果它有助于澄清我正在尝试做什么,在Ruby中,我会做以下事情:

> uri_string = "http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz"
 => "http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz" 
> URI.decode uri_string
 => "http://example.com?foo=bar+baz" 
Run Code Online (Sandbox Code Playgroud)

url common-lisp drakma

3
推荐指数
2
解决办法
1457
查看次数

标签 统计

common-lisp ×3

drakma ×3

bing-api ×1

lisp ×1

openssl ×1

sbcl ×1

ssl ×1

url ×1