Golang中国

作为国内开发者,经常遇到一个问题,就是一片热血撞死在伟大的**墙上,只能干着急,下面我们得想办法翻过这个**墙,毕竟我们出去后只是为了干好事儿。

go get是怎么运行的

通常会使用http的方式去访问目的地址,然后下载下来。但是内部可能用使用git clone的方式去克隆,既然这样,我们解决办法就是让http和git clone都能同时走上代理,这样就能解决卡死的烦恼

有一个http代理

假如已有 http代理是: http://localhost:8118/,后续我们就用这个地址去代理
如果没有http代理,只有socket5代理,需要看下面步骤进行转换
如果连socket5代理也没有,就需要先花钱买或者找一些免费的

socket5代理转成http代理(如果已经有http代理,可以忽略转换过程)

如果我们手头只有socket5的代理, 但是go get只能用http方式代理,怎么办呢?
假设已有socket5代理: localhost:1080
希望有一个http代理: http://localhost:8118/
那么我们就得想办法把socket5转成http代理,目前可以通过开源软件polipo实现,可以参考http://cattalker.blog128.fc2blog.us/blog-entry-6.html, 以window为例,linux的配置方式也一样

1. 下载http://dl.dropbox.com/u/1663058/Polipo.rar并解压到polipo
2. cd polipo 并修改polipo.conf
    proxyAddress = "127.0.0.1"
    proxyPort = 8118 #最终的http代理端口

    #将socket5转成http
    socksParentProxy = "localhost:1080" #我们已有的socket代理 
    socksProxyType = socks5

3. 启动代理 polipo.exe -c polipo.conf

配置代理

第一步. 配置go get
第二步. 配置git clone

  • 让go get用上http代理:

    • windows:
      go get前设置代理: 执行 set http_proxy=http://localhost:8118/ set https_proxy=http://localhost:8118,然后go get就会走代理了
    • linux:
      go get前设置代理: 执行 export http_proxy=http://localhost:8118/,export https_proxy=http://localhost:8118/ 然后go get就会走代理了
  • 让git clone用上socket5/http代理:

    • windows/linux:

      1. 修改 $USER/.gitconfig
      2. 添加配置项如下:当git clone的时候就会走代理了,当不需要代理的时候可以注释掉

         [https]
             proxy = http://localhost:8118 #注意没有引号
        
         [http]
             proxy = http://localhost:8118
        

ygqwan 于 2016-11-22 11:30 修改
3 回复
pathletboy
#1 pathletboy • 2016-11-17 15:46

环境变量 https_proxy 也要设置一下

itfanr
#2 itfanr • 2016-11-19 21:50

我也有这个需求。感谢楼主的分享啊。

可以在国外弄一台aws虚拟机,然后下载后,再通过ftp等pull到本地。

ygqwan
#3 ygqwan • 2016-11-22 11:33

多谢@pathletboy提醒,已经加上

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。