Go: x / net / proxy: ALL_PROXY без SOCKS приводит к прокси: неизвестная схема: http

Созданный на 16 авг. 2016  ·  3Комментарии  ·  Источник: golang/go

Если для переменной среды ALL_PROXY задан адрес, отличный от SOCKS, это приводит к proxy: unknown scheme: http когда вместо этого следует игнорировать его.

  1. Какую версию Go вы используете ( go version )?
    go1.6.3 через докер
  2. Какую операционную систему и архитектуру процессора вы используете ( go env )?
    окна / amd64
  3. Что ты сделал?
    Установите переменную среды http ALL_PROXY и попробуйте запустить Docker Toolbox, например docker run hello-world
  4. Что ты ожидал увидеть?
    Docker должен работать нормально, Go должен игнорировать переменную среды, отличную от SOCKS ALL_PROXY
  5. Что вы видели вместо этого?
    Docker не работает, потому что переменная среды, отличная ALL_PROXY SOCKS https://github.com/golang/net/blob/master/proxy/proxy.go#L93.

Обходной путь: запустите unset ALL_PROXY при появлении ошибки.

Самый полезный комментарий

Не могу поверить, что это все еще открыто.

Все 3 Комментарий

Я не уверен на 100%, но уверены ли вы, что установка ALL_PROXY в протокол http или https имеет смысл? Может быть трафик, который не является HTTP, который хочет пройти через прокси.

Не могу поверить, что это все еще открыто.

@nathanleclaire Я думаю, вам нужно самостоятельно зарегистрировать тип номеронабирателя: https://godoc.org/golang.org/x/net/proxy#RegisterDialerType

Подробнее здесь и здесь:
http://blog.ralch.com/articles/network-programming-and-proxies-in-golang/
https://gist.github.com/jim3ma/3750675f141669ac4702bc9deaf31c6b

Но я также не уверен и пытаюсь настроить прокси для программ дозвона TCP. Модификации HTTP-клиента безумно просты:
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyURL)}

Но использование net.Dial и net.DialTimeout менее просто для схемы прокси, отличной от SOCKS5.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги