Go: x/net/proxy: ๋น„ SOCKS ALL_PROXY ๊ฒฐ๊ณผ ํ”„๋ก์‹œ: ์•Œ ์ˆ˜ ์—†๋Š” ๊ตฌ์„ฑํ‘œ: http

์— ๋งŒ๋“  2016๋…„ 08์›” 16์ผ  ยท  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. ๋Œ€์‹  ๋ฌด์—‡์„ ๋ณด์•˜์Šต๋‹ˆ๊นŒ?
    ๋น„ SOCKS ALL_PROXY ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๋ฌด์‹œ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Docker๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” 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-proxys-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 ๋“ฑ๊ธ‰