吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 812|回复: 16
收起左侧

[其他原创] MossFrp签到程序

[复制链接]
xiaoxiaoY520 发表于 2024-12-11 16:45
本帖最后由 xiaoxiaoY520 于 2024-12-17 09:09 编辑

go语言写的签到程序,可以配合windows平台计划任务进行自动化执行,linux平台请自测。
食用方法:浏览器F12找登录包,复制原始包到data.txt,原封不动粘上去就行,放同级目录或随意,默认是同级目录的data.txt文件:
图片.png
图片.png
有个file参数可以指定文件:
图片.png
偶尔用一下可以,毕竟是白嫖的,不签白不签,这个平台貌似不稳定,验证逻辑太简单了,人家后期可能改验证逻辑导致签到程序失效。
源码放出来了,很简单,可以自己改,计划任务设置自行百度。自己编译一下吧,编译文件大了一点,上传不了。

package main
import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
    "strings"
)
type ResponseToken struct {
    RespTime   int    `json:"time"`
    RespStatus string `json:"status"`
    RespToken  string `json:"token"`
}
func main() {
    // 读取 .txt 文件内容, 默认为data.txt,兼容后期添加参数,用循环赋值
    filePath := "data.txt"
    if len(os.Args) > 1 {
        for i := 1; i < len(os.Args); i++ {
            if os.Args[i] == "file" && i+1 < len(os.Args) {
                filePath = os.Args[i+1
                break
            }
        }
    }
    data, err := os.ReadFile(filePath)
    if err != nil {
        fmt.Printf("无法读取文件: %v\n", err)
        return
    }
    // 分割请求头和请求体,回车换行分隔
    parts := bytes.Split(data, []byte("\n\r"))
    if len(parts) < 2 {
        fmt.Println("文件格式不正确")
        return
    }
    // 解析请求头
    headers := make(http.Header)
    headerLines := strings.Split(string(parts[0]), "\n")
    for _, line := range headerLines {
        if line == "" {
            continue
        }
        if strings.HasPrefix(line, "POST") {
            // 解析 URL 和查询参数
            urlParts := strings.Fields(line)
            if len(urlParts) >= 2 {
                url := urlParts[1
                fmt.Printf("目标 URL: %s\n", url)
            }
        } else {
            // 设置请求头
            headerParts := strings.SplitN(line, ": ", 2)
            if len(headerParts) == 2 {
                key, value := headerParts[0], headerParts[1
                // 去除末尾的\r换行符
                value = strings.TrimRight(value, "\r")
                headers.Set(key, value)
            }
        }
    }
    // 设置请求体
    jsonData := parts[1
    // 创建 HTTPs POST 请求,可改为参数解析形式,省事用固定
    url := "https://https.ghs.wiki:7002/API?void=post"
    req, err := http.NewRequest("POST", url, bytes.NewReader(jsonData))
    if err != nil {
        fmt.Printf("创建请求时出错: %v\n", err)
        return
    }
    // 设置请求头
    for key, values := range headers {
        for _, value := range values {
            req.Header.Add(key, value)
        }
    }
    // 修正 Content-Length
    req.ContentLength = int64(len(jsonData))
    // 发送请求
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        fmt.Printf("发送请求时出错: %v\n", err)
        return
    }
    defer resp.Body.Close()
    // 读取并打印响应
    respBody, err := io.ReadAll(resp.Body)
    if err != nil {
        fmt.Printf("读取响应时出错: %v\n", err)
        return
    }
    fmt.Printf("响应状态: %s\n", resp.Status)
    fmt.Printf("响应内容:\n%s\n", string(respBody))
    var response ResponseToken
    if resp.Status == "200 OK" {
        err = json.Unmarshal(respBody, &response)
        if err != nil {
            fmt.Printf("解析 JSON 时出错: %v\n", err)
            return
        }
        fmt.Println("token:", response.RespToken)
    } else {
        fmt.Println("获取token失败")
        return
    }
    //构造签到请求数据
    newData := map[stringinterface{}{
        "type":  "signIn",
        "token": response.RespToken,
    }
    newJsonData, err := json.Marshal(newData)
    if err != nil {
        fmt.Printf("编码新数据时出错: %v\n", err)
        return
    }
    // 创建新的请求,二次签到请求
    newReq, err := http.NewRequest("POST", url, bytes.NewReader(newJsonData))
    if err != nil {
        fmt.Printf("创建新请求时出错: %v\n", err)
        return
    }
    // 使用之前解析的请求头
    for key, values := range headers {
        for _, value := range values {
            newReq.Header.Add(key, value)
        }
    }
    // 发送新请求
    newResp, err := client.Do(newReq)
    if err != nil {
        fmt.Printf("发送新请求时出错: %v\n", err)
        return
    }
    defer newResp.Body.Close()
    // 读取并打印新响应
    newRespBody, err := io.ReadAll(newResp.Body)
    if err != nil {
        fmt.Printf("读取新响应时出错: %v\n", err)
        return
    }
    fmt.Printf("新响应状态: %s\n", newResp.Status)
    fmt.Printf("新响应内容:\n%s\n", string(newRespBody))
}


qiandaoSource.zip

1.63 KB, 下载次数: 11, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 2吾爱币 +4 热心值 +1 收起 理由
Tiniaual + 1 + 1 我很赞同!
天轩科技 + 3 https://www.52pojie.cn/thread-1990457-1-1.html 我写了一个python版本的 ...

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

苏紫方璇 发表于 2024-12-16 19:14
请在文中粘贴部分核心代码
本版块仅限分享编程技术和源码相关内容,发布帖子必须带上关键代码和具体功能介绍
xinxiu 发表于 2024-12-11 16:56
ycxzfforever 发表于 2024-12-11 17:19
shanwl 发表于 2024-12-11 17:57
话说签到好像不算活跃度。
dghjfpo 发表于 2024-12-11 18:20
谢谢!天天手动签!
Echo001 发表于 2024-12-11 18:52
这是什么啊?
 楼主| xiaoxiaoY520 发表于 2024-12-11 19:02
shanwl 发表于 2024-12-11 17:57
话说签到好像不算活跃度。

不是52的签到
 楼主| xiaoxiaoY520 发表于 2024-12-11 19:03

公网穿透的软件啊,标题不写了吗
whathell 发表于 2024-12-11 19:29
xinxiu 发表于 2024-12-11 16:56
打错了网址,换成了.COM开启了新世界

你要不说,还不会去看
kerrychu 发表于 2024-12-11 19:50
呵呵,不错呀!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-26 21:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表