42
votes

Emacs is able to access the Internet with packages such as url.el or the W3 web browser.

Also, the Emacs Lisp Package Archive is heavily dependent on package url.el.

Now, how do I configure Emacs to use my HTTP proxy to connect to the Internet in general?

Bonus points for any help with ELPA behind a proxy.

Yes, I've had problems with HTTP proxies before.

4

4 Answers

53
votes

For w3m, this setting has worked for me:

(setq url-proxy-services '(("no_proxy" . "work\\.com")
                           ("http" . "proxy.work.com:911")))
26
votes

I've got authorization working by:

(setq url-proxy-services
   '(("no_proxy" . "^\\(localhost\\|10\\..*\\|192\\.168\\..*\\)")
     ("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")))))

Works for Emacs 24.3. It is based on non-public API tricks, so might not work in another Emacs versions...

12
votes

Emacs populates the url-proxy-services variable from the http_proxy, https_proxy and no_proxy environment variables if they are set.

3
votes

This is a bit old, but I had issues connecting as well. One thing I needed to do is add my certificate to the the gnutls-trustfiles in order to connect.

(with-eval-after-load 'gnutls
    (add-to-list 'gnutls-trustfiles "path/to/cert.crt"))
(setq url-proxy-services
   '(("no_proxy" . "^\\(localhost\\|10\\..*\\|192\\.168\\..*\\)")
     ("http" . "proxy.com:8080")
     ("https" . "proxy.com:8080")))