Kaynağa Gözat

修复 rod 在获取 iframe 后操作的问题 see https://github.com/go-rod/rod/issues/548

Signed-off-by: allan716 <[email protected]>
allan716 3 yıl önce
ebeveyn
işleme
9b835273fb
3 değiştirilmiş dosya ile 11 ekleme ve 8 silme
  1. 3 0
      .gitignore
  2. 0 4
      go.sum
  3. 8 4
      internal/logic/sub_supplier/subhd/subhd.go

+ 3 - 0
.gitignore

@@ -112,3 +112,6 @@ ChineseSubFinderSettings.json
 
 /internal/logic/task_queue/Logs
 /internal/logic/task_queue/task_queue
+/internal/logic/sub_supplier/subhd/*.db
+/internal/pkg/pass_water_wall/.rod
+/internal/pkg/pass_water_wall/cache

+ 0 - 4
go.sum

@@ -201,8 +201,6 @@ github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh
 github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
 github.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4=
 github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q=
-github.com/go-rod/rod v0.106.4 h1:7goXgaVzbAWyO8EBxIjCXv+o6viIWMEBhWUfAg2h3Ew=
-github.com/go-rod/rod v0.106.4/go.mod h1:Q+T5M7AREns3ZrOV89XnnHN2TMSvzKNCpqbUS58+VMk=
 github.com/go-rod/rod v0.106.5 h1:HQOxmOb/xjZ+QnnK4D8t+3+CWFreKSuqid/65zH4poA=
 github.com/go-rod/rod v0.106.5/go.mod h1:N/ZJik0+EYXNpW/74q0V1H7K3/UTfwHV/tRxY0CY/Vw=
 github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
@@ -591,8 +589,6 @@ github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMx
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ=
 github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18=
-github.com/ysmood/got v0.28.1 h1:hl/tniuYxrZ1eA3WU2Wj4h+Zmc7ZF11LxXvD/bGxIwY=
-github.com/ysmood/got v0.28.1/go.mod h1:pE1l4LOwOBhQg6A/8IAatkGp7uZjnalzrZolnlhhMgY=
 github.com/ysmood/got v0.28.2 h1:2dtVOneu4YGDk9skgzq8aqW9vZ1ssBla+ddqrE91bNs=
 github.com/ysmood/got v0.28.2/go.mod h1:pE1l4LOwOBhQg6A/8IAatkGp7uZjnalzrZolnlhhMgY=
 github.com/ysmood/gotrace v0.6.0 h1:SyI1d4jclswLhg7SWTL6os3L1WOKeNn/ZtzVQF8QmdY=

+ 8 - 4
internal/logic/sub_supplier/subhd/subhd.go

@@ -20,6 +20,7 @@ import (
 	"github.com/allanpk716/ChineseSubFinder/internal/types/series"
 	"github.com/allanpk716/ChineseSubFinder/internal/types/supplier"
 	"github.com/go-rod/rod"
+	"github.com/go-rod/rod/lib/proto"
 	"github.com/nfnt/resize"
 	"github.com/sirupsen/logrus"
 	"image/jpeg"
@@ -629,10 +630,13 @@ func (s *Supplier) passWaterWall(page *rod.Page) {
 	page.MustElement(waterIFrame).MustWaitLoad()
 	//進入到iframe
 	iframe := page.MustElement(waterIFrame).MustFrame()
+	// see iframe bug, see  https://github.com/go-rod/rod/issues/548
+	p := page.Browser().MustPageFromTargetID(proto.TargetTargetID(iframe.FrameID))
+
 	//等待拖動條加載, 延遲500秒檢測變化, 以確認加載完畢
-	iframe.MustElement(dragBtn).MustWaitStable()
+	p.MustElement(dragBtn).MustWaitStable()
 	//等待缺口圖像載入
-	slideBgEl := iframe.MustElement(slideBg).MustWaitLoad()
+	slideBgEl := p.MustElement(slideBg).MustWaitLoad()
 	slideBgEl = slideBgEl.MustWaitStable()
 	//取得帶缺口圖像
 	shadowbg := slideBgEl.MustResource()
@@ -693,9 +697,9 @@ search:
 		}
 	}
 	//獲取拖動按鈕形狀
-	dragBtnBox := iframe.MustElement("#tcaptcha_drag_thumb").MustShape().Box()
+	dragBtnBox := p.MustElement("#tcaptcha_drag_thumb").MustShape().Box()
 	//启用滑鼠功能
-	mouse := page.Mouse
+	mouse := p.Mouse
 	//模擬滑鼠移動至拖動按鈕處, 右移3的原因: 拖動按鈕比滑塊圖大3個像素
 	mouse.MustMove(dragBtnBox.X+3, dragBtnBox.Y+(dragBtnBox.Height/2))
 	//按下滑鼠左鍵