继承 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发起请求时,重定向操作会自动处理,无需手动处理。且重定向响应也会消耗积分。
请访问 穿云控制台 获取服务密钥。