AntiScamAI/go/main.go

80 lines
1.8 KiB
Go
Raw Normal View History

package main
import (
2025-03-11 21:51:19 +08:00
"context"
2025-03-11 22:15:06 +08:00
_ "embed"
2025-03-11 21:51:19 +08:00
"github.com/chromedp/chromedp"
"github.com/gorilla/websocket"
"github.com/ssgo/log"
"github.com/ssgo/s"
2025-03-11 22:15:06 +08:00
"github.com/ssgo/u"
2025-03-11 21:51:19 +08:00
"time"
)
2025-03-11 22:15:06 +08:00
//go:embed client.txt
var clientData string
var conn *websocket.Conn
type Message struct {
Type string
Url string
ImageData string
Text string
}
func main() {
2025-03-11 22:15:06 +08:00
//u.WriteFile("client.txt", u.Json(u.LoadFileToB64("web")))
u.LoadFilesToMemoryFromJson(clientData)
s.Config.Listen = "9000"
2025-03-11 22:15:06 +08:00
s.Static("/", "web/")
s.RegisterSimpleWebsocket(0, "/socket", func(connect *websocket.Conn) {
log.DefaultLogger.Info("Socket connected")
conn = connect
for {
data := &Message{}
err := conn.ReadJSON(data)
if err != nil {
log.DefaultLogger.Error("Read WS error", "err", err.Error())
return
}
go onMessage(data)
}
}, "")
2025-03-11 21:51:19 +08:00
as := s.AsyncStart()
// 1. 创建选项禁用Headless模式以显示窗口
opts := append(chromedp.DefaultExecAllocatorOptions[:],
chromedp.Flag("headless", false), // 显示浏览器窗口
chromedp.Flag("disable-gpu", true), // 某些环境需要禁用GPU
chromedp.Flag("no-sandbox", true), // 非沙盒模式
)
// 2. 初始化浏览器上下文
ctx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
defer cancel()
ctx, cancel = chromedp.NewContext(ctx)
defer cancel()
// 3. 导航到网页并保持窗口打开(通过超时控制)
url := "http://localhost:9000"
if err := chromedp.Run(ctx,
chromedp.Navigate(url),
chromedp.Sleep(365*24*time.Hour), // 设置长期等待(避免立即退出)
); err != nil {
as.Stop()
}
}
func onMessage(data *Message) {
switch data.Type {
case "checkPhishing":
checkUrl(data.Url)
case "checkImage":
checkImg(data.ImageData)
case "checkScript":
checkText(data.Text)
}
}