ソースを参照

对接新的 xray_pool 接口

Signed-off-by: allan716 <[email protected]>
allan716 3 年 前
コミット
25b28bd2f1

+ 8 - 3
pkg/rod_helper/multi_browser.go

@@ -3,6 +3,7 @@ package rod_helper
 import (
 	_ "embed"
 	"errors"
+	"fmt"
 	"strconv"
 
 	"github.com/sirupsen/logrus"
@@ -15,7 +16,8 @@ import (
 type Browser struct {
 	log            *logrus.Logger
 	rodOptions     *BrowserOptions // 参数
-	multiBrowser   []*rod.Browser  // 如果使用 XrayPoolUrl 做爬虫的时候,需要多个 Browser
+	multiBrowser   []*rod.Browser  // 如果使用 XrayPoolUrl 做爬虫的时候
+	LBPort         int             //负载均衡 http 端口
 	httpProxyUrls  []string        // XrayPool 中的代理信息
 	socksProxyUrls []string        // XrayPool 中的代理信息
 }
@@ -62,10 +64,12 @@ func NewMultiBrowser(browserOptions *BrowserOptions) *Browser {
 		b.httpProxyUrls = append(b.httpProxyUrls, httpPrefix+browserOptions.XrayPoolUrl()+":"+strconv.Itoa(httpPot))
 		b.socksProxyUrls = append(b.socksProxyUrls, socksPrefix+browserOptions.XrayPoolUrl()+":"+strconv.Itoa(proxyResult.SocksPots[index]))
 	}
+	b.LBPort = proxyResult.LBPort
 
-	for _, httpProxyUrl := range b.httpProxyUrls {
+	for i := 0; i < browserOptions.BrowserInstanceCount(); i++ {
 
-		oneBrowser, err := NewBrowserBase(b.log, "", httpProxyUrl, true)
+		lbHttpUrl := fmt.Sprintf(httpPrefix + browserOptions.XrayPoolUrl() + ":" + strconv.Itoa(b.LBPort))
+		oneBrowser, err := NewBrowserBase(b.log, "", lbHttpUrl, true)
 		if err != nil {
 			b.log.Panic(errors.New("NewBrowserBase error:" + err.Error()))
 		}
@@ -76,6 +80,7 @@ func NewMultiBrowser(browserOptions *BrowserOptions) *Browser {
 }
 
 type ProxyResult struct {
+	LBPort    int   `json:"lb_port"`
 	SocksPots []int `json:"socks_pots"`
 	HttpPots  []int `json:"http_pots"`
 }

+ 2 - 2
pkg/rod_helper/multi_browser_test.go

@@ -10,8 +10,8 @@ import (
 func TestNewMultiBrowser(t *testing.T) {
 
 	browserOptions := NewBrowserOptions(log_helper.GetLogger4Tester(), true, settings.GetSettings())
-	browserOptions.SetXrayUrl("127.0.0.1")
-	browserOptions.SetXrayPort("19035")
+	browserOptions.SetXrayPoolUrl("127.0.0.1")
+	browserOptions.SetXrayPoolPort("19035")
 	b := NewMultiBrowser(browserOptions)
 	println(b)
 }

+ 4 - 4
pkg/rod_helper/options.go

@@ -26,8 +26,8 @@ func (r *BrowserOptions) PreLoadUrl() string {
 	return r.preLoadUrl
 }
 
-// SetXrayUrl 127.0.0.1
-func (r *BrowserOptions) SetXrayUrl(xrayUrl string) {
+// SetXrayPoolUrl 127.0.0.1
+func (r *BrowserOptions) SetXrayPoolUrl(xrayUrl string) {
 	r.xrayPoolUrl = xrayUrl
 }
 
@@ -36,8 +36,8 @@ func (r *BrowserOptions) XrayPoolUrl() string {
 	return r.xrayPoolUrl
 }
 
-// SetXrayPort 19035
-func (r *BrowserOptions) SetXrayPort(xrayPort string) {
+// SetXrayPoolPort 19035
+func (r *BrowserOptions) SetXrayPoolPort(xrayPort string) {
 	r.xrayPoolPort = xrayPort
 }