Эта проблема сводила меня с ума. У меня есть локальный прокси-сервер SOCKSv5, который является шлюзом для всех приложений в системе. Я бы хотел, чтобы url-retrieve-synchronously
прошел через SOCKS. Со следующими настройками:
(setq socks-noproxy '("127.0.0.1"))
(setq socks-server '("Default server" "127.0.0.1" 8010 5))
(setq url-gateway-method 'socks)
Извлечение по простому HTTP работает нормально:
(url-retrieve-synchronously "http://gnu.org")
#<buffer *http www.gnu.org:80*>
Но это не работает для HTTPS:
(url-retrieve-synchronously "https://gnu.org")
Это приводит:
Debugger entered--Lisp error: (file-error "make client process failed" "connection timed out" :name "gnu.org" :buffer #<buffer *url-http-temp*> :host "gnu.org" :service 443 :nowait nil)
make-network-process(:name "gnu.org" :buffer #<buffer *url-http-temp*> :host "gnu.org" :service 443 :nowait nil)
open-network-stream("gnu.org" #<buffer *url-http-temp*> "gnu.org" 443)
open-gnutls-stream("gnu.org" #<buffer *url-http-temp*> "gnu.org" 443)
network-stream-open-tls("gnu.org" #<buffer *url-http-temp*> "gnu.org" 443 (:type tls :nowait nil))
open-network-stream("gnu.org" #<buffer *url-http-temp*> "gnu.org" 443 :type tls :nowait nil)
byte-code("\306\211\n\307>\203$
Вопрос: как заставить HTTPS работать поверх socks в Emacs? Моя версия 24.2.50/W32.
Я так понимаю, что по какой-то причине вместо socks-open-network-stream
используется оригинальный open-network-stream
. Я попытался установить точку останова url-open-stream
с помощью edebug, но не смог понять, почему точка останова не срабатывает. Любые идеи?
Спасибо.
url-https-create-secure-wrapper
, который создает обертку над функциейurl-http
; в обертке значениеurl-gateway-method
перезаписывается значениемtls
. Это приводит к пропуску использования SOCKS и использованию вместо этого прямого шлюза для подключения. В настоящее время я понятия не имею, как взломать/обойти проблему. - person zweibaranov   schedule 31.10.2013url-https-create-secure-wrapper
? - person Squidly   schedule 01.11.2013url-https-create-secure-wrapper
, соединение будет проходить через SOCKS, но с простым согласованием HTTP, а не HTTPS. Оболочка должна использовать прокси-сервер SOCKS в качестве основного сетевого потока, но для HTTPS. - person zweibaranov   schedule 02.11.2013M-x report-emacs-bug
если вы еще этого не сделали? (при условии, что это еще не исправлено?) - person phils   schedule 27.01.2014