HTTP隧道 (动态版)
Go 接入指南

隧道验证方式

地址:http-dyn.abuyun.com,端口:9020

隧道验证方式

HTTP隧道拥有两种授权模式:

  • 请求头(默认)

通过用户名/密码的形式进行身份认证,该认证信息最终会转换为『Proxy-Authorization』协议头跟随请求一起发出。

为便于部分语言进行接入,平台亦支持通过『Authorization』协议头进行隧道身份验证。

  • 绑定IP(暂未启用)

只须绑定用户发起请求的服务器IP即可。

一条代理隧道只能绑定一个IP,同一IP可以分别绑定到专业版、动态版、经典版代理隧道各一条。

              
    # -*-*-
    # 感谢骚男 『Jonathan (QQ: 1632126)』 提供的源代码
    # -*-*-

    package main

    import (
        "net/url"
        "net/http"
        "bytes"
        "fmt"
        "io/ioutil"
    )

    // 代理服务器
    const proxyServer = "http-dyn.abuyun.com:9020"

    // 代理隧道验证信息
    const proxyUser  = "H01234567890123D";
    const proxyPass  = "0123456789012345";

    type AbuyunProxy struct {
        AppID string
        AppSecret string
    }

    func (p AbuyunProxy) ProxyClient() http.Client {
        proxyUrl, _ := url.Parse("http://"+ p.AppID +":"+ p.AppSecret +"@"+ proxyServer)
        return http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}}
    }

    func main()  {
        targetUrl := "http://test.abuyun.com"

        // 初始化 proxy http client
        client := AbuyunProxy{AppID: proxyUser, AppSecret: proxyPass}.ProxyClient()

        request, _ := http.NewRequest("GET", targetUrl, bytes.NewBuffer([]byte(``)))

        response, err := client.Do(request)

        if err != nil {
            panic("failed to connect: " + err.Error())
        } else {
            bodyByte, err := ioutil.ReadAll(response.Body)
            if err != nil {
                fmt.Println("读取 Body 时出错", err)
                return
            }
            response.Body.Close()

            body := string(bodyByte)

            fmt.Println("Response Status:", response.Status)
            fmt.Println("Response Header:", response.Header)
            fmt.Println("Response Body:\n", body)
        }
    }                
              
体验服务
现在开始,体验阿布云大数据服务
计算、网络、大数据、人工智能,阿布云助您飞跃发展