如何利用luna-批量自动注册账号|web driver|防识别|爬虫框架

Luna 是一款强大的第三方库,专为抗指纹自动化爬虫而设计。

原项目地址:GitHub - musiclover789/luna: Luna-抗指纹浏览器|爬虫|防反爬虫框架|浏览器指纹|自动化浏览器|防识别|反识别|爬虫框架

功能亮点

  • 强大的抗指纹技术: Luna 提供了先进的抗指纹技术,使您的爬虫程序难以被识别。

  • 视觉特征解析: 基于视觉特征的页面解析和操作,使爬虫更智能。

  • 简单易用的接口: Luna 提供简单易用的接口,轻松集成和使用它的功能。

  • 智能化行为模拟: 模拟用户行为,有效应对现代爬虫检测技术。

  • 绕过检测技术: 具备绕过常见爬虫检测技术的能力,确保您的爬虫不容易被拦截。

package test_case

import (
    "fmt"
    "luna/base_devtools/input"
    "luna/base_devtools/page"
    "luna/base_devtools/runtime"
    "luna/devtools"
    "luna/luna_utils"
    "luna/protocol"
    "luna/script"
    "testing"
    "time"
)


func TestBaidu(t *testing.T) {
    luna_utils.KillProcess()
    /********************************/
    chromiumPath := ""
    browserObj := devtools.NewBrowser(chromiumPath, &devtools.BrowserOptions{
       CachePath: luna_utils.CreateCacheDirInSubDir("/Users/Documents/golang/cache"),
       ImgPath:   "/Users/Documents/luna/test_img/baidu_img",
       Headless:  false,
       //ProxyStr:  "https://APM5TV:9BFF4D11@10.179.160.60:39349",
       //Fingerprint: []string{"fingerprint1", "fingerprint2"},
       WindowSize: &devtools.WindowSize{
          Width:  1496,
          Height: 967,
       },
    })
    //&{2 1496 967 1496 858}
    fmt.Println()
    browserObj.DevToolsConn.ShowLog(false)

    err, itemPage := browserObj.OpenPageAndListen("url", func(devToolsConn *protocol.DevToolsConn) {
       //第一个处理
       devToolsConn.ShowLog(true)
       page.PageEnable(devToolsConn)
       devToolsConn.SubscribeOneTimeEvent("Page.loadEventFired", func(param interface{}) {
          runtime.Evaluate(devToolsConn, script.ShowMousePosition())
       })
       devToolsConn.SubscribeOneTimeEvent("Page.windowOpen", func(param interface{}) {
          runtime.Evaluate(devToolsConn, script.ShowMousePosition())
       })
    })
    if err == nil {
       itemPage.RunJS(script.ShowMousePosition())
       itemPage.DevToolsConn.ReduceSpeed(10)

       err, ok := itemPage.WaitForMatchOnPageSync("home.png", 0.5, time.Second*20)
       if err == nil && ok {
          fmt.Println("说明、页面已经成功打开")
          //time.Sleep(time.Hour)
          err, imageCoordinates := itemPage.SimilarityWithMargin("home.png", 50, 200, 10, 10, time.Minute)
          if err == nil && imageCoordinates.MatchScore > 0.5 {
             targetX, targetY := imageCoordinates.RandomX, imageCoordinates.RandomY
             itemPage.SimulateMouseMoveOnPage(luna_utils.RandomInRange(-1, devtools.BrowserGlobal.ScreenAvailWidth), -1, targetX, targetY)
             itemPage.SimulateMouseClickOnPage(targetX, targetY)
             itemPage.SimulateKeyboardInputOnPage("随便")

             //点击按钮
             err, imageCoordinates := itemPage.ImageSimilarity("button_01.png", time.Minute)
             if err == nil && imageCoordinates.MatchScore > 0.5 {
                itemPage.SimulateMouseMoveOnPage(targetX, targetY, imageCoordinates.RandomX, imageCoordinates.RandomY)
                itemPage.SimulateMouseClickOnPage(imageCoordinates.RandomX, imageCoordinates.RandomY)
             }
             //滚动到页面底部
             fmt.Println("~~~~~~~~~~>==============<~~~~~~~~~~~~~~")
             err, ok := itemPage.ScrollToTargetImagePosition(imageCoordinates.RandomX, imageCoordinates.RandomY, input.DOWN, "bottom.png", 0.5, time.Minute)
             fmt.Println(ok, err)

             itemPage.Close()
             browserObj.Close()
          }

       }
       fmt.Println("~~~~~~~~~~>==============<~~~~~~~~~~~~~~")
    } else {
       fmt.Println(err, "错误了")
    }
    /********************************/
    time.Sleep(1 * time.Minute)
}

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值