地址:http-pro.abuyun.com,端口:9010
HTTP隧道拥有两种授权模式:
通过用户名/密码的形式进行身份认证,该认证信息最终会转换为『Proxy-Authorization』协议头跟随请求一起发出。
为便于部分语言进行接入,平台亦支持通过『Authorization』协议头进行隧道身份验证。
只须绑定用户发起请求的服务器IP即可。
一条代理隧道只能绑定一个IP,同一IP可以分别绑定到专业版、动态版、经典版代理隧道各一条。
# -*-*-
# 感谢骚男 『Jonathan (QQ: 1632126)』 提供的源代码
# -*-*-
package main
import (
"net/url"
"net/http"
"bytes"
"fmt"
"io/ioutil"
)
// 代理服务器
const proxyServer = "http-pro.abuyun.com:9010"
// 代理隧道验证信息
const proxyUser = "H01234567890123P";
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"
//targetUrl := "https://www.abuyun.com/switch-ip"
//targetUrl := "https://www.abuyun.com/current-ip"
// 初始化 proxy http client
client := AbuyunProxy{AppID: proxyUser, AppSecret: proxyPass}.ProxyClient()
request, _ := http.NewRequest("GET", targetUrl, bytes.NewBuffer([]byte(``)))
// 设置IP切换头 (只支持 HTTP)
request.Header.Set("Proxy-Switch-Ip", "yes")
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)
}
}