我也来发个 2Libra 的签到脚本,基于 qd-today 项目

9 条回复
96 次浏览

签到服务框架: https://github.com/qd-today/qd


当天首次签到

  1. 签到框架日志
    图片
  2. Telegram 通知
    图片

当天已签过到

  1. 签到框架日志
    图片
  2. Telegram 通知
    图片

如何配置?

现在还没有上架 qd 项目的 默认仓库 ,后续看情况,尽量上架。

  1. 现阶段可以把以下代码保存为har文件,导入到 qd 系统中,保存为模板。
    图片
复制
[
    {
        "comment": "发起签到请求",
        "request": {
            "method": "POST",
            "url": "https://2libra.com/api/sign",
            "headers": [
                {
                    "name": "User-Agent",
                    "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:147.0) Gecko/20100101 Firefox/147.0"
                },
                {
                    "name": "Accept",
                    "value": "application/json, text/plain, */*"
                },
                {
                    "name": "Accept-Language",
                    "value": "zh,zh-CN;q=0.9,en-US;q=0.8"
                },
                {
                    "name": "Accept-Encoding",
                    "value": "gzip, deflate, br, zstd"
                },
                {
                    "name": "Referer",
                    "value": "https://2libra.com/"
                },
                {
                    "name": "Origin",
                    "value": "https://2libra.com"
                },
                {
                    "name": "Sec-GPC",
                    "value": "1"
                },
                {
                    "name": "Sec-Fetch-Dest",
                    "value": "empty"
                },
                {
                    "name": "Sec-Fetch-Mode",
                    "value": "cors"
                },
                {
                    "name": "Sec-Fetch-Site",
                    "value": "same-origin"
                },
                {
                    "name": "Connection",
                    "value": "keep-alive"
                },
                {
                    "name": "Cookie",
                    "value": "{{cookie}}"
                },
                {
                    "name": "TE",
                    "value": "trailers"
                },
                {
                    "name": "Authorization",
                    "value": "{{Authorization}}"
                }
            ],
            "cookies": [

            ]
        },
        "rule": {
            "success_asserts": [
                {
                    "re": "201",
                    "from": "status"
                },
                {
                    "re": "你今天已经签到过了",
                    "from": "content"
                }
            ],
            "failed_asserts": [

            ],
            "extract_variables": [
                {
                    "name": "m",
                    "re": "(?<=\"m\":\").*?(?=\")",
                    "from": "content"
                },
                {
                    "name": "message",
                    "re": "(?<=\"message\":\").*?(?=\")",
                    "from": "content"
                },
                {
                    "name": "streakd",
                    "re": "(?<=\"streak\":)\\d+(?=[,}])",
                    "from": "content"
                },
                {
                    "name": "sign_coins",
                    "re": "(?<=\"coins\":)\\d+(?=[,}])",
                    "from": "content"
                },
                {
                    "name": "balanced",
                    "re": "(?<=\"balance\":)\\d+(?=[,}])",
                    "from": "content"
                }
            ]
        }
    },
    {
        "comment": "查询账户信息",
        "request": {
            "method": "GET",
            "url": "https://2libra.com/api/users/info?fields=info%2Cexp%2Ccoins",
            "headers": [
                {
                    "name": "Host",
                    "value": "2libra.com"
                },
                {
                    "name": "User-Agent",
                    "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:147.0) Gecko/20100101 Firefox/147.0"
                },
                {
                    "name": "Accept",
                    "value": "application/json, text/plain, */*"
                },
                {
                    "name": "Accept-Language",
                    "value": "zh,zh-CN;q=0.9,en-US;q=0.8"
                },
                {
                    "name": "Accept-Encoding",
                    "value": "gzip, deflate, br, zstd"
                },
                {
                    "name": "Referer",
                    "value": "https://2libra.com/"
                },
                {
                    "name": "Sec-GPC",
                    "value": "1"
                },
                {
                    "name": "Sec-Fetch-Dest",
                    "value": "empty"
                },
                {
                    "name": "Sec-Fetch-Mode",
                    "value": "cors"
                },
                {
                    "name": "Sec-Fetch-Site",
                    "value": "same-origin"
                },
                {
                    "name": "Connection",
                    "value": "keep-alive"
                },
                {
                    "name": "Cookie",
                    "value": "{{cookie}}"
                },
                {
                    "name": "Authorization",
                    "value": "{{Authorization}}"
                }
            ],
            "cookies": [

            ]
        },
        "rule": {
            "success_asserts": [
                {
                    "re": "200",
                    "from": "status"
                }
            ],
            "failed_asserts": [

            ],
            "extract_variables": [
                {
                    "name": "username",
                    "re": "(?<=\"username\":\").*?(?=\")",
                    "from": "content"
                },
                {
                    "name": "user_number",
                    "re": "(?<=\"user_number\":\").*?(?=\")",
                    "from": "content"
                },
                {
                    "name": "currentExp",
                    "re": "(?<=\"currentExp\":)\\d+(?=[,}])",
                    "from": "content"
                },
                {
                    "name": "nextLevelExp",
                    "re": "(?<=\"nextLevelExp\":)\\d+(?=[,}])",
                    "from": "content"
                },
                {
                    "name": "expToNext",
                    "re": "(?<=\"expToNext\":)\\d+(?=[,}])",
                    "from": "content"
                },
                {
                    "name": "balance",
                    "re": "(?<=\"coins\":)\\d+(?=[,}])",
                    "from": "content"
                },
                {
                    "name": "level",
                    "re": "(?<=\"exp\":\\{\"level\":)\\d+(?=[,}])",
                    "from": "content"
                }
            ]
        }
    },
    {
        "request": {
            "method": "GET",
            "url": "https://2libra.com/api/sign/stats",
            "headers": [
                {
                    "name": "User-Agent",
                    "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:147.0) Gecko/20100101 Firefox/147.0"
                },
                {
                    "name": "Accept",
                    "value": "application/json, text/plain, */*"
                },
                {
                    "name": "Accept-Language",
                    "value": "zh,zh-CN;q=0.9,en-US;q=0.8"
                },
                {
                    "name": "Accept-Encoding",
                    "value": "gzip, deflate, br, zstd"
                },
                {
                    "name": "Referer",
                    "value": "https://2libra.com/"
                },
                {
                    "name": "Sec-GPC",
                    "value": "1"
                },
                {
                    "name": "Sec-Fetch-Dest",
                    "value": "empty"
                },
                {
                    "name": "Sec-Fetch-Mode",
                    "value": "cors"
                },
                {
                    "name": "Sec-Fetch-Site",
                    "value": "same-origin"
                },
                {
                    "name": "Authorization",
                    "value": "{{Authorization}}"
                },
                {
                    "name": "Connection",
                    "value": "keep-alive"
                },
                {
                    "name": "Cookie",
                    "value": "{{cookie}}"
                }
            ],
            "cookies": [

            ]
        },
        "rule": {
            "success_asserts": [
                {
                    "re": "200",
                    "from": "status"
                }
            ],
            "failed_asserts": [

            ],
            "extract_variables": [
                {
                    "name": "streak",
                    "re": "(?<=\"streak\":)\\d+(?=[,}])",
                    "from": "content"
                },
                {
                    "name": "maxStreak",
                    "re": "(?<=\"maxStreak\":)\\d+(?=[,}])",
                    "from": "content"
                },
                {
                    "name": "isotime",
                    "re": "(?<=\")\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z(?=\")",
                    "from": "content"
                }
            ]
        }
    },
    {
        "comment": "字符串替换",
        "request": {
            "method": "POST",
            "url": "api://util/string/replace",
            "headers": [

            ],
            "cookies": [

            ],
            "data": "r=json&p=Z$&s={{isotime}}&t=%2B0000"
        },
        "rule": {
            "success_asserts": [
                {
                    "re": "200",
                    "from": "status"
                },
                {
                    "re": "\"状态\": \"OK\"",
                    "from": "content"
                }
            ],
            "failed_asserts": [

            ],
            "extract_variables": [
                {
                    "name": "time0",
                    "re": "\"处理后字符串\": \"(.*)\"",
                    "from": "content"
                }
            ]
        }
    },
    {
        "comment": "返回对应时间戳和时间",
        "request": {
            "method": "POST",
            "url": "api://util/timestamp",
            "headers": [

            ],
            "cookies": [

            ],
            "data": "ts=&form=%Y-%m-%dT%H:%M:%S.%f%z&dt={{time0|urlencode}}"
        },
        "rule": {
            "success_asserts": [
                {
                    "re": "200",
                    "from": "status"
                }
            ],
            "failed_asserts": [

            ],
            "extract_variables": [
                {
                    "name": "bj_date",
                    "re": "\"北京时间\"\\s*:\\s*\"(\\d{4}-\\d{2}-\\d{2})",
                    "from": "content"
                },
                {
                    "name": "bj_time",
                    "re": "\"北京时间\"\\s*:\\s*\"\\d{4}-\\d{2}-\\d{2}T(\\d{2}:\\d{2}:\\d{2})",
                    "from": "content"
                }
            ]
        }
    },
    {
        "comment": "Unicode 转换",
        "request": {
            "method": "POST",
            "url": "api://util/unicode",
            "headers": [

            ],
            "cookies": [

            ],
            "data": "html_unescape=false&content={{username}}(第 {{user_number}} 号会员)\\r\\n{% if sign_coins %}{{message}},签到时间为:{{bj_date}} {{bj_time}},本次签到获得 {{sign_coins}} 金币{% else %}{{m}}{% endif %}\\r\\n 当前金币总数为 {{balance}} 个,已累计签到 {{streak}} 天\\r\\n 当前用户等级为 {{level}} 级,经验值为 {{currentExp}} 点,升级还需要 {{expToNext}} 点经验值"
        },
        "rule": {
            "success_asserts": [
                {
                    "re": "200",
                    "from": "status"
                },
                {
                    "re": "\"状态\": \"200\"",
                    "from": "content"
                }
            ],
            "failed_asserts": [

            ],
            "extract_variables": [
                {
                    "name": "__log__",
                    "re": "\"转换后\": \"(.*)\"",
                    "from": "content"
                }
            ]
        }
    }
]
  1. 通过刚刚导入的模板新建一个任务,填入你在 2Libra 的 cookie 或者 Authorization 即可。
    图片

然后这个任务就会定时执行啦!希望收到推送通知的话可以再配置一下推送渠道。

  • 图片
前排打手
OP

青龙已经有了得哇,你搜下签到关键字,两三天前有大佬发的帖子

前排打手
OP

@0579 都是脚本,只不过基于不同项目框架的,我就是看青龙的有脚本了,所以搞了个 qd.today 的

前排打手
OP

@Jimmy 你用手机进我这个帖子,最好是 1080p 的手机,页面宽度不对劲。

大概率是因为我在图片上都设置了宽度 300 或者 400 的原因。

发表一个评论

R保持