2026年2月6日星期五

JingCity Forum Auto-Sign-in Script Guide

Summary: This script automates login and daily check-in for JingCity Forum using Discuz. It handles formhash extraction, session management, and error logging. Setup requires server deployment (Alibaba/Tencent/Huawei Cloud) and configuring credentials. Use for learning only.

1.购买服务器

阿里云:

服务器购买地址

https://t.aliyun.com/U/siC86h

若失效,可用地址

https://www.aliyun.com/benefit?source=5176.29345612&userCode=49hts92d

腾讯云:

https://curl.qcloud.com/wJpWmSfU

若失效,可用地址

https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=ad201ee2ef3b771157f72ee5464b1fea&from=console

华为云

https://activity.huaweicloud.com/cps.html?fromacct=64b5cf7cc11b4840bb4ed2ea0b2f4468&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905

2.部署教程

2024年最新青龙面板跑脚本教程(一)持续更新中

3.代码如下

import reimport timeimport randomimport requests

class JingCitySigner:

    BASE = "https://www.jingcity.com/bbs"
    def __init__(self, username: str, password: str, tid: int = 80316, timeout: int = 20):        self.username = username        self.password = password        self.tid = tid  # 默认:新人签到帖 thread-80316        self.timeout = timeout        self.s = requests.Session()        self.s.headers.update({            "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "                          "(KHTML, like Gecko) Chrome/120.0 Safari/537.36",            "Referer"f"{self.BASE}/",        })
    # ---------- 基础工具 ----------    def _get(self, url: str, **kwargs) -> requests.Response:        return self.s.get(url, timeout=self.timeout, allow_redirects=True, **kwargs)
    def _post(self, url: str, data: dict, **kwargs) -> requests.Response:        return self.s.post(url, data=data, timeout=self.timeout, allow_redirects=True, **kwargs)
    @staticmethod    def _pick(html: str, patterns: list[str], default: str = "") -> str:        for p in patterns:            m = re.search(p, html, re.I | re.S)            if m:                return m.group(1)        return default
    def _sleep_jitter(self, a=0.8, b=1.8):        time.sleep(random.uniform(a, b))
    # ---------- 核心流程 ----------    def login(self) -> bool:        """        1) 打开登录页,提取 loginhash / formhash        2) 提交账号密码登录        3) 通过 cookie/页面关键字判断是否登录成功        """        login_page = self._get(f"{self.BASE}/member.php?mod=logging&action=login")        html = login_page.text
        loginhash = self._pick(html, [            r'loginhash=([a-zA-Z0-9]+)',            r'name="loginhash"\s+value="([^"]+)"'        ])        formhash = self._pick(html, [            r'name="formhash"\s+value="([^"]+)"',            r'formhash=([a-zA-Z0-9]+)'        ])
        if not formhash:            # 兜底:从首页提取            idx = self._get(f"{self.BASE}/").text            formhash = self._pick(idx, [r'name="formhash"\s+value="([^"]+)"'r'formhash=([a-zA-Z0-9]+)'])
        if not formhash:            print("[login] 未能获取 formhash,可能页面结构/反爬有变。")            return False
        self._sleep_jitter()
        post_url = f"{self.BASE}/member.php?mod=logging&action=login&loginsubmit=yes"        if loginhash:            post_url += f"&loginhash={loginhash}"
        payload = {            "formhash": formhash,            "referer"f"{self.BASE}/",            "username"self.username,            "password"self.password,            "questionid""0",            "answer""",            "cookietime""2592000",  # 30天        }
        resp = self._post(post_url, data=payload)        txt = resp.text
        # 登录成功常见标志:cookie 里出现 discuz_uid / auth;或页面里出现"欢迎您回来/退出"等        ck = self.s.cookies.get_dict()        if any(k.lower() in ("discuz_uid""uid""auth"for k in ck.keys()):            print("[login] cookie 显示已登录。")            return True
        if ("退出" in txt) or ("欢迎您回来" in txt) or ("您已登录" in txt):            print("[login] 页面文本显示已登录。")            return True
        # 常见失败原因:验证码/安全验证/密码错误        if ("验证码" in txt) or ("安全验证" in txt) or ("security" in txt.lower()):            print("[login] 可能触发验证码/安全验证,需改用浏览器自动化或手动登录后导入 cookie。")        else:            print("[login] 登录失败:可能账号密码错误或站点策略变更。")
        return False
    def reply_checkin(self, message: str) -> bool:        """        去指定 tid 的"回复页"抓 formhash/posttime,再提交回帖        """        # 先打开帖子页(拿 formhash)        thread_url = f"{self.BASE}/thread-{self.tid}-1-1.html"        thread_html = self._get(thread_url).text
        # 从帖子页/回复页提取 formhash        formhash = self._pick(thread_html, [r'name="formhash"\s+value="([^"]+)"'r'formhash=([a-zA-Z0-9]+)'])        if not formhash:            # 进一步打开"回复表单页"            reply_page = self._get(f"{self.BASE}/forum.php?mod=post&action=reply&tid={self.tid}")            reply_html = reply_page.text            formhash = self._pick(reply_html, [r'name="formhash"\s+value="([^"]+)"'r'formhash=([a-zA-Z0-9]+)'])        if not formhash:            print("[reply] 未能获取 formhash,可能未登录或帖子不可回复。")            return False
        self._sleep_jitter()
        # Discuz 回帖提交地址        post_url = f"{self.BASE}/forum.php?mod=post&action=reply&tid={self.tid}&replysubmit=yes&inajax=1"        payload = {            "formhash": formhash,            "message": message,            "subject""",        }        resp = self._post(post_url, data=payload)        txt = resp.text
        # 成功/失败的模糊判断        if ("回复发布成功" in txt) or ("post_newreply_succeed" in txt) or ("succeedhandle" in txt):            print("[reply] 签到回帖成功。")            return True
        if ("您需要先登录" in txt) or ("notlogin" in txt.lower()):            print("[reply] 回帖失败:未登录或登录已失效。")            return False
        if ("抱歉" in txt) or ("权限" in txt) or ("灌水" in txt) or ("发布间隔" in txt):            print("[reply] 回帖被拒:可能无权限/发帖间隔限制/防灌水策略。返回内容片段:")            print(txt[:200])            return False
        print("[reply] 回帖结果未知,返回内容片段:")        print(txt[:200])        return False
    def run(self) -> None:        """        入口:登录 -> 生成签到内容 -> 回帖        """        if not self.login():            return
        # 你也可以改成更固定/更随机的签到文本        msg = f"签到打卡~{time.strftime('%Y-%m-%d %H:%M:%S')}"        self.reply_checkin(msg)

if __name__ == "__main__":    # TODO:填你的账号密码    USERNAME = "你的用户名"    PASSWORD = "你的密码"
    # 默认签到帖:新人签到 thread-80316(可改成你常用的签到帖 tid)    signer = JingCitySigner(USERNAME, PASSWORD, tid=80316)    signer.run()
解析

该脚本为京城论坛自动签到脚本,主要作用包括:

  1. 自动登录京城论坛:模拟浏览器访问登录页,拿到 Discuz 必需的 formhash 等参数,然后提交账号密码完成登录。

  2. 自动"签到":对指定的 tid(签到帖)自动发布一条回复,实现"每日打卡"。

  3. 容错与提示:当出现"验证码/安全验证/权限不足/发帖间隔"等情况时,输出明确日志,方便你改策略(如改用 Selenium/Playwright 或导入 cookie)。

主要方法

  • login()

    • 负责获取 formhash/loginhash 并提交登录请求;

    • 通过 cookie 或返回页面关键字判断是否登录成功;

    • 若触发验证码/安全验证,会提示"需要浏览器自动化或 cookie 方案"。

  • reply_checkin(message)

    • 打开帖子/回复页提取回帖所需的 formhash

    • 向 Discuz 的回帖提交接口发送表单数据(包含 message);

    • 根据返回内容判断是否成功、是否被限流/无权限/未登录。

  • run()

    • 串联主流程:登录成功后生成签到文案并回帖;

    • 你要做定时任务(cron/Windows 计划任务)时,只需要定时执行这个入口即可。


注意

本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。


历史脚本txt文件获取>>
服务器搭建,人工服务咨询>>

巴西数字钱包支付增速领跑电商,2025年占比将达9%

根据EBANX分析,2025年巴西电商中数字钱包使用量增长20%,增速超过Pix(18%),成为增长最快的支付方式,在交易中占比将升至9%,位列第三。数字钱包提供分期、信用等功能,推动高价商品销售,助力电商收入显著提升。预计到2028年,该市场年复合增长率将达13%。

图片

根据 EBANX 对支付与商业市场情报(PCMI)数据的分析,去年巴西电子商务中的数字钱包使用量增长了 20%,使其成为 2025 年该国增长最快的支付方式。与 Pix 相比,2024 至 2025 年的同比增长率更高。巴西的旗舰即时支付系统在同期增长了 18%。

这种增长使得数字钱包超越了传统的银行支票,成为了该国数字消费者中第三大最受欢迎的支付方式。到 2025 年,其在总交易量中的占比将达到 9%。Pix 在巴西电子商务领域占据 42%的份额,其次是信用卡,占比为 41%。

EBANX 预计,到 2028 年,巴西的数字钱包业务将以每年 13%的速度持续增长(2024 至 2028 年的复合年增长率)。据 PCMI 数据,该国电子商务交易金额占比最大的数字钱包是 Mercado Pago,占比达 40%。该平台于 2004 年推出,在拉丁美洲的八个国家拥有超过 7200 万用户。NuPay 于 2022 年推出,发展迅速,现已覆盖巴西数字银行 Nubank 的所有客户,即超过 1 亿人。

图片

"通过提供一种与传统信用卡无缝衔接、以数字技术为主导的替代方案,钱包正在使人们能够更便捷地接入全球数字经济,并推动新兴市场的金融包容性发展,"EBANX 产品副总裁Abreu解释道。

与全球范围内的同类产品不同(这些产品主要作为支付工具存在),巴西的数字钱包提供的功能远超传统银行业务,包括低成本账户、即时支付、定期交易、分期付款选项、忠诚度计划、贷款、储蓄、互操作性功能、与其他系统的集成以及信用卡服务。

Abreu指出:"将手机(它已经是人们日常生活的一部分)转变为真正的数字钱包,使这一解决方案具备了规模效应,并加快了其普及速度。"据全球移动通信系统协会称,巴西有 88%的人拥有智能手机,预计到 2030 年这一比例将升至 95%。这一普及率超过了信用卡的使用率,据巴西中央银行的数据,约 70%的人使用信用卡。
图片

对数字商业的影响

与 Pix 一样,数字钱包为数百万巴西人提供了进入电子商务领域的入口。然而,它们的独特之处在于具备本地化的信用支付和分期付款功能。这使得它们成为推动业务增长的关键因素,尤其是在涉及高价商品的领域,因为灵活的支付方式在此尤为重要。

EBANX 的内部数据也证实了这一影响。一家在巴西运营的全球旅游公司,在通过 EBANX 增加数字钱包作为支付方式后,其平均每日收入在六个月内增长了 47%。仅仅一年之后,这种方法就成为了其客户的首选,占其整个拉丁美洲收入的 80%。

Abreu分析道:"我们看到这种情况在各个行业都有体现,包括零售业。基于订阅模式的业务,比如流媒体平台、游戏以及软件即服务(SaaS)业务,也通过数字钱包实现了显著的客户增长。这些数字钱包能够实现定期支付,无需使用信用卡。"
图片

GeeWallet,专注于为跨境商业(游戏、短剧、社交、AI、独立站电商等)提供一站式跨境支付解决方案,如有以下需求,欢迎扫描下方客户经理二维码,或登录GeeWallet官网了解详情。

1、全球收单:如有欧洲(英国、法国、德国、意大利、荷兰、波兰等)、东南亚(泰国、越南、马来西亚、印尼、菲律宾)、拉美(墨西哥、巴西、哥伦比亚、秘鲁、厄瓜多尔、阿根廷、智利等)、中东阿联酋等全球本地钱包收单以及VM外卡收单需求;

图片2、电商收款:Amzon(美区)、Shopee、Tokopedia、Lazada、AliExpress、TEMU、shein、wayfair、Etsy、TikTokshop(美区/东南亚)、stockX、GOAT、depop、poshmark等平台收款需求。

图片


【往期精彩文章阅读推荐】

1、欧洲支付Paysafecard简介、支付场景及使用流程

2、南美支付解决方案:巴西、墨西哥、哥伦比亚

3、游戏出海阿联酋市场:市场潜力/规模、用户画像以及风险管控

4、游戏出海如何对接海外支付通道?

5、波兰支付BLIK简介、支付流程及应用场景

6、沙特Mada支付介绍:沙特国内最本土化的支付方式

7、俄罗斯本地支付方式介绍:SBP、MIR卡.....

8、Tinkoff银行( Tinkoff pay):俄罗斯数字银行与创新领域的领军者

9、薪酬结汇:如何解决海外薪酬款回国?


GeeWallet,专注于为跨境商家提供一站式跨境支付解决方案,助力商业出海,掘金海外市场。核心业务有:跨境电商收款、国际收单、全球收付、货币汇兑、信用卡发卡等,支持100+交易币种及主流25+结算币种。欢迎关注,我们将持续提供多样化跨境资讯参考图片

JingCity Forum Auto-Sign-in Script Guide

Summary: This script automates login and daily check-in for JingCity Forum using Discuz. It handles formhash extraction, session management,...