1.购买服务器阿里云:服务器购买地址https://t.aliyun.com/U/55RK8C若失效,可用地址
阿里云:
服务器购买地址
https://t.aliyun.com/U/55RK8C若失效,可用地址
https://www.aliyun.com/daily-act/ecs/activity_selection?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=2019052.部署教程
3.代码如下
from playwright.sync_api import sync_playwrightimport osimport timeXMFISH_USER = os.getenv("XMFISH_USER")XMFISH_PASS = os.getenv("XMFISH_PASS")LOGIN_URL = "http://bbs.xmfish.com/login.php"HOME_URL = "http://www.xmfish.com/"def xmfish_sign():"""厦门小鱼网自动签到主流程"""with sync_playwright() as p:browser = p.chromium.launch(headless=True, # 青龙 / 服务器建议 True,本地调试可 Falseslow_mo=50 # 放慢操作,降低风控)context = browser.new_context(user_agent=("Mozilla/5.0 (Windows NT 10.0; Win64; x64) ""AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/120.0.0.0 Safari/537.36"))page = context.new_page()# ========== 1. 打开登录页 ==========print(" 打开登录页面")page.goto(LOGIN_URL, timeout=30000)# ========== 2. 输入账号密码 ==========print(" 输入账号密码")page.fill('input[name="username"]', XMFISH_USER)page.fill('input[name="password"]', XMFISH_PASS)# 提交登录page.click('button[name="loginsubmit"]')# 等待跳转完成page.wait_for_load_state("networkidle")time.sleep(2)# ========== 3. 进入首页 ==========print(" 进入首页")page.goto(HOME_URL)page.wait_for_load_state("networkidle")# ========== 4. 判断是否已签到 ==========print(" 检测签到状态")# 常见签到关键词(Discuz 系论坛)if page.locator("text=已签到").count() > 0:print(" 今日已签到,无需重复操作")else:# 尝试点击签到 / 打卡print(" 尝试执行签到")# 常见签到按钮写法sign_locators = ["text=签到","text=打卡","text=每日签到","a[href*='sign']","a[href*='qiandao']"]signed = Falsefor loc in sign_locators:if page.locator(loc).count() > 0:page.locator(loc).first.click()signed = Truebreakif signed:time.sleep(2)print("🎉 签到操作已提交")else:print("⚠️ 未找到签到入口,可能已签到或页面结构变更")# ========== 5. 结束 ==========browser.close()print(" 厦门小鱼网签到流程结束")if __name__ == "__main__":if not XMFISH_USER or not XMFISH_PASS:print(" 请先设置环境变量 XMFISH_USER / XMFISH_PASS")else:xmfish_sign()
该脚本为厦门小鱼自动签到脚本,主要作用包括:
自动登录论坛账号(无需手工操作)
进入论坛首页或个人中心
判断当日是否已经签到
若未签到,自动执行签到动作
输出签到结果日志,便于定时任务监控
支持无人值守运行(服务器 / 青龙 / 定时任务)
主要方法
xmfish_sign()
作用:
这是整个脚本的调度中心 / 入口方法,负责串联所有步骤。
主要职责:
初始化浏览器环境
控制执行顺序(登录 → 首页 → 签到 → 退出)
捕获并输出关键执行状态
保证流程完整、不中断
可以理解为:"签到任务的总指挥"
浏览器初始化逻辑
作用:
启动 Chromium 浏览器
配置 User-Agent
创建独立浏览器会话(Context)
核心意义:
避免 Cookie 串号
模拟真实用户环境
提高签到成功率
登录处理逻辑
作用:
打开登录页面
自动填写用户名与密码
提交登录表单
等待登录完成
这是脚本中最关键的前置条件,所有签到动作都依赖于:
"已成功登录的会话状态"
首页访问逻辑
作用:
确保当前处于"登录后页面"
触发用户状态加载(积分 / 签到状态)
为后续签到判断提供页面上下文
这一阶段通常用于:
触发签到入口渲染
防止在登录跳转中误操作
签到状态判断逻辑
作用:
判断当天是否已经签到
防止重复签到操作
避免出现"今日已签到"报错弹窗
该逻辑通常通过以下方式实现:
页面文本判断(如"已签到")
按钮状态判断
签到入口是否存在
这是工程脚本稳定运行的关键保护机制。
签到执行逻辑
作用:
在未签到的情况下,自动点击签到 / 打卡 / 每日任务入口
兼容多种签到入口名称
提高脚本对页面变化的适应性
这一部分通常采用多策略匹配,而非单一定位方式,目的是:
"一次编写,长期可用"
日志与结束处理
作用:
输出签到成功 / 已签到 / 未找到入口等状态
关闭浏览器释放资源
便于定时任务平台(如青龙)判断运行结果
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论