如何在经过身份验证的HTTP代理之后配置Emacs?

如何在经过身份验证的HTTP代理之后配置Emacs?,http,emacs,proxy,elpa,Http,Emacs,Proxy,Elpa,虽然它没有指定任何关于代理身份验证的内容,但是有一个解决方案 它的解决方案是 (setq url-proxy-services '(("no_proxy" . "work\\.com") ("http" . "proxy.work.com:911"))) ELPA使用“url”包。据我所知,没有办法用它进行代理身份验证 你能在Emacs之外设置你的代理身份验证吗?好吧,如果你真的想这样做并且不介意使用另一个程序,那么。。。这就是答案。使用s

虽然它没有指定任何关于代理身份验证的内容,但是有一个解决方案

它的解决方案是

(setq url-proxy-services '(("no_proxy" . "work\\.com")
                           ("http" . "proxy.work.com:911")))
ELPA使用“url”包。据我所知,没有办法用它进行代理身份验证

你能在Emacs之外设置你的代理身份验证吗?

好吧,如果你真的想这样做并且不介意使用另一个程序,那么。。。这就是答案。使用socat将本地端口转发到通过http代理的连接。您没有绕过它,只是将功能“栓接”到一个没有它的应用程序上(以防有人问)。这可能很困难

如果您使用的是unixy操作系统,另一个解决方案将非常有效,那就是安装您自己的非身份验证http代理,该代理使用身份验证代理(如squid)。对某些人来说,这可能是一种规避。小心点

例如,看一看


更新:他在上面的链接中添加的评论似乎是正确的。URL包将要求输入id和密码。至少我在url http.el文件中的url http创建请求的defun中看到了这一点。

现在,我解决“身份验证代理问题”的方法是使用。它是可移植的,很容易配置,可以作为deamon运行。

以防其他人碰到我刚刚遇到的问题:


如果使用cntlm或其他本地身份验证代理,则可能需要指定环回IP地址,而不是“localhost”。我发现“localhost”悄悄地失败了,但“127.0.0.1”起了作用。

我通过以下方式在没有用户交互的情况下获得授权:

(setq url-proxy-services
   '(("no_proxy" . "^\\(localhost\\|10.*\\)")
     ("http" . "proxy.com:8080")
     ("https" . "proxy.com:8080")))

(setq url-http-proxy-basic-auth-storage
    (list (list "proxy.com:8080"
                (cons "Input your LDAP UID !"
                      (base64-encode-string "LOGIN:PASSWORD")))))
这项工作适用于Emacs 24.3。它基于非公共API技巧,因此可能无法在其他Emacs版本中工作


用您的身份验证信息替换
登录
密码

那么您是在说emacs/w3吗?这就是答案所指的。我指的是elpa,它可能使用emacs/w3well,是的,在其他程序(如firefox)中,我可以为他们提供我的用户名和某个http代理的密码,一切正常……在按照问题文本中所述设置代理之后,ELPA现在在更新包列表时请求user/pw,并且可以通过身份验证代理访问http存储库。[Emacs 24.3.1,Windows,Vincent Goulet's distribution]作为对答案的评论比作为答案更有意义。效果很好。我不知道有没有办法让它问我的密码。哦,天哪!我甚至想捐赠你!我坐在corporete防火墙后面,无法访问mepla,但现在这个解决方案起作用了!还可以查看emacs auth源代码库,它是emacs的一部分。它允许您定义一个.authinfo.gpg文件,您可以在其中指定协议和地址以及登录/密码。在第一次尝试使用指定协议访问资源时,emacs将提示输入gpg密钥,该密钥用于打开authinfo文件。从那时起,它将使用此文件中的信息,直到您退出会话。这意味着您不需要每次都提供密码,而且由于密码受gpg保护,因此您可以对密码的安全性充满信心secure@Tim我对Gnus使用
~/.authinfo
(与
~/.netrc
相同),但不知道Emacs可能使用
~/.authinfo
作为HTTP代理的身份验证存储。这是真的吗?@gavenkoa这将取决于您使用的emacs库/模式。例如,它应该适用于那些使用支持源代码验证的库的emacs模式。然而,如果只是在shell命令周围放置一个elisp包装器(即浏览url),那么它可能不起作用,但是一个调用curl的包装器可能不起作用tCNTLM已经完全绕过了我之前的所有http隧道问题——我对此没有任何抱怨。(也在经过身份验证的代理上)在与我能找到的所有代理配置进行斗争之后,我不得不说像
CNTLM
proxychains
这样的工具是迄今为止最好的解决方案。我真的希望能做点什么,在emacs中创建一个独特的工作代理设置。cntlm不需要控制端口吗?在这种情况下,它不会在工作站运行公司防火墙的公司环境中运行。