继承 go-resty/resty#supported-go-versions v2支持的Go版本
在 go-resty/resty.v2 基础上封装的穿云SDK。
# Go Modules require github.com/cloudbypass/golang-sdk V0.0.1
// Import package cloudbypass import "github.com/cloudbypass/golang-sdk"
使用 cloudbypass.New() 创建一个新的 resty.Client 实例。
增加初始化参数 apikey 和 proxy ,分别用于设置穿云API服务密钥和代理IP。
定制用户可以通过设置 api_host 参数来指定服务地址。
以上参数可使用环境变量 CB_APIKEY、CB_PROXY 和 CB_APIHOST 进行配置。
package main import ( "fmt" "github.com/cloudbypass/golang-sdk/cloudbypass" ) func main() { client := cloudbypass.New(cloudbypass.BypassConfig{ Apikey: "/* APIKEY */", }) resp, err := client.R(). EnableTrace(). Get(" if err != nil { fmt.Println(err) return } fmt.Println(resp.StatusCode(), resp.Header().Get("X-Cb-Status")) fmt.Println(resp.String()) }
穿云API V2适用于需要通过JS质询验证的网站。例如访问 https://etherscan.io/accounts/label/lido ,请求示例:
package main import ( "fmt" "github.com/cloudbypass/golang-sdk/cloudbypass" ) func main() { client := cloudbypass.New(cloudbypass.BypassConfig{ Apikey: "/* APIKEY */", Part: "0", Proxy: "/* PROXY */", }) resp, err := client.R(). EnableTrace(). Get(" if err != nil { fmt.Println(err) return } fmt.Println(resp.StatusCode(), resp.Header().Get("X-Cb-Status")) fmt.Println(resp.String()) }
package main import ( "fmt" "github.com/cloudbypass/golang-sdk/cloudbypass" ) func main() { balance, err := cloudbypass.GetBalance( /* APIKEY */) if err != nil { fmt.Println(err) return } fmt.Println("Balance:", balance) }
通过 NewProxy 方法创建穿云代理实例,该实例可提取穿云动态代理IP和时效代理IP。
Copy() 复制代理实例,使原有代理实例不受影响。
SetDynamic() 设置为动态代理。
SetExpire(expire int) 设置为时效代理,参数为IP过期时间,单位为秒。
SetRegion(region string) 设置代理IP地区。
String() 返回代理IP字符串。
StringFormat(format string) 格式化代理IP,参数为格式化字符串,例如username:password@gateway。
SetFormat(format string) 设置代理IP格式化字符串。
Iterate(count int) 返回一个代理IP实例迭代器,参数为提取数量。
Loop(count int) 返回一个代理IP实例循环迭代器,参数为实际数量。
package main import ( "fmt" "github.com/cloudbypass/golang-sdk/cloudbypass" ) func main() { proxy, err := cloudbypass.NewProxy("username-res:password") if err != nil { fmt.Println(err) return } // 提取动态代理 fmt.Println("Extract dynamic proxy: ") fmt.Println(proxy.SetDynamic().String()) fmt.Println(proxy.SetRegion("US").String()) // 提取时效代理并指定地区 fmt.Println("Extract proxy with expire and region: ") fmt.Println(proxy.SetExpire(60 * 10).SetRegion("US").String()) // 批量提取 fmt.Println("Extract five 10-minute aging proxies: ") iterator := proxy.SetExpire(60 * 10).SetRegion("US").SetFormat("username:password:gateway").Iterate(10) for iterator.HasNext() { fmt.Println(iterator.Next()) } // 循环提取 fmt.Println("Loop two 10-minute aging proxies: ") loop := proxy.SetExpire(60 * 10).SetRegion("US").Loop(2) for i := 0; i < 10; i++ { fmt.Println(loop.Next()) } }
使用SDK发起请求时,重定向操作会自动处理,无需手动处理。且重定向响应也会消耗积分。
请访问 穿云控制台 获取服务密钥。