Go http client怎么使用shadowsocks代理?

google了好久只有http代理的。

proxy := func(_ *http.Request) (*url.URL, error) {
        return url.Parse("http://127.0.0.1:1087")
        //return url.Parse("ss://rc4-md5:123456@ss.server.com:1080")
    }
http.Client.Transport = &http.Transport{Proxy: proxy}

这种,怎么才能使用ss代理?

共 4 个回复


fanyang

看看源码说不定你能找到答案
github.com/shadowsocks/shadowsocks-go

# 1

tiny1990

    dialSocksProxy, err := proxy.SOCKS5("tcp", "127.0.0.1:1086", nil, proxy.Direct)
    if err != nil {
        fmt.Println("Error connecting to proxy:", err)
    }
    tr := &http.Transport{Dial: dialSocksProxy.Dial}

    // Create client
    myClient := &http.Client{
        Transport: tr,
    }
    response, _ := myClient.Get("http://1212.ip138.com/ic.asp")
    defer response.Body.Close()
    var by []byte
    by, _ = ioutil.ReadAll(response.Body)
    fmt.Println(string(by))

start a ss client in your machine ,use your ss-client port,

# 2

sjgmbob

ShadowSocks项目已死,ShadowSocksR是它的后续项目,目前还活跃。

SSR最重要的改进,是混淆协议与插件功能,原版ShadowSocks的特征流量已被防火墙识破,已基本不具备翻墙能力,SSR的混淆协议使用更难识别的加密算法,目前还具备很强的翻墙能力,复杂混淆协议的代价是增加延迟,损失约15%的速度。用原版协议和混淆速度会更快,但连接远没有使用混淆协议稳定。

SS与SSR的服务器端代码已经有本质不同,SS几乎没有穿墙能力,SSR的混淆协议保持着较好的翻墙能力,SS的客户端与SSR最新服务器端已经有较大不兼容,多数SS节点和SSR节点也不兼容,尤其是第三方网站的SSR节点分享

ShadowSocks的本质是基于SOCKS5协议的代理上加一层加密,SOCKS5本身比传统VPN速度更快,而ShaodowSocksR为了更好地翻墙而加入的混淆协议使得SSR失去速度优势。稳定性方面,SSR的稳定性大致和一线VPN相当,两者都有大量用户使用。

正规可用的SSR服务商数量不多,主要以搬瓦工的JustMySocks为代表,国内大量SSR用户都是自己买VPS搭建。而正规付费的VPN服务商的选择多一点,如ExpressVPN,VyprVPN都是长期服务中国翻墙用户的优质VPN。

可用性方面,一线VPN提供的客户端往往更容易使用,SSR的客户端不太适合小白用户,SSR的最大优势是可以找到不少免费服务器节点,但这也是SSR的劣势,因为免费节点通常很快被墙,用户不得不不停寻找并更新节点。SSR节点也可以自己购买VPS搭建,但这仅适用于懂一点服务器配置的人,自己搭建的SSR节点虽然灵活,但IP被封的风险很大,需要换IP,反复折腾,所以算起来也并不比VPN便宜。

用SSR还是VPN,看个人需要。如果你不喜欢花太多时间在寻找SSR节点或者搭建服务器上,建议用付费VPN,如果不花钱对你更重要,配合各种三方SSR分享的免费节点更划算。

# 3