Skip to content

cloudbypass/golang-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloudbypass

Cloudbypass SDK for Go

开始使用

继承 go-resty/resty#supported-go-versions v2支持的Go版本

GoDoc Go Report Card

go-resty/resty.v2基础上封装的穿云SDK。

安装

// Go Modules
require github.com/cloudbypass/golang-sdk latest

用法

// Import package cloudbypass
import cloudbypass "github.com/cloudbypass/golang-sdk"

发起请求

使用 cloudbypass.New() 创建一个新的 resty.Client 实例。

增加初始化参数apikeyproxy,分别用于设置穿云API服务密钥和代理IP。

定制用户可以通过设置api_host参数来指定服务地址。

以上参数可使用环境变量CB_APIKEYCB_PROXYCB_APIHOST进行配置。

package main

import (
	"fmt"
	cloudbypass "github.com/cloudbypass/golang-sdk"
)

func main() {
	client := cloudbypass.New(cloudbypass.BypassConfig{
		Apikey: "/* APIKEY */",
	})

	resp, err := client.R().
		EnableTrace().
		Get("https://opensea.io/category/memberships")

	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(resp.StatusCode(), resp.Header().Get("X-Cb-Status"))
	fmt.Println(resp.String())
}

使用V2

穿云API V2适用于需要通过JS质询验证的网站。例如访问https://etherscan.io/accounts/label/lido ,请求示例:

package main

import (
	"fmt"
	cloudbypass "github.com/cloudbypass/golang-sdk"
)

func main() {
	// Cookie模式:服务端返回加密Cookie,下次请求时由客户端发送验证Cookie
	client := cloudbypass.New(cloudbypass.BypassConfig{
		Apikey: "/* APIKEY */",
		Proxy:  "/* PROXY */",
		UseV2:  true,
	})

	resp, err := client.R().
		EnableTrace().
		Get("https://etherscan.io/accounts/label/lido")

	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(resp.StatusCode(), resp.Header().Get("X-Cb-Status"))
	fmt.Println(resp.Header().Get("set-cookie"))
	fmt.Println(resp.String())
}
package main

import (
	"fmt"
	cloudbypass "github.com/cloudbypass/golang-sdk"
)

func main() {
	// Part模式:由服务端管理验证Cookie,客户端只需要控制part参数
	client := cloudbypass.New(cloudbypass.BypassConfig{
		Apikey: "/* APIKEY */",
		Proxy:  "/* PROXY */",
		Part:   "0",
	})

	resp, err := client.R().
		EnableTrace().
		Get("https://etherscan.io/accounts/label/lido")

	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(resp.StatusCode(), resp.Header().Get("X-Cb-Status"))
	fmt.Println(resp.String())
}

查询余额

使用GetBalance方法可以查询当前账户余额。

package main

import (
	"fmt"
	cloudbypass "github.com/cloudbypass/golang-sdk"
)

func main() {
	balance, err := cloudbypass.GetBalance("/* APIKEY */", "/* EMAIL */")

	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"
	cloudbypass "github.com/cloudbypass/golang-sdk"
)

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发起请求时,重定向操作会自动处理,无需手动处理。且重定向响应也会消耗积分。

关于服务密钥

请访问穿云控制台获取服务密钥。

About

Cloudbypass Golang SDK.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages