【蛇运长虹】无需服务器,使用GitHub Action进行论坛自动签到!!!
本帖最后由 thh866 于 2025-2-14 00:38 编辑昨天刷到这个大佬 @♥REX♥的这个帖子 【Python】泥潭懒人值得拥有:[快速/自动] 签到脚本 —— 喂、你还在手动抓 Cookies 吗? 正好来了水贴灵感,顺便蹭蹭泥潭春节活动的尾巴
是什么?
GitHub Actions可以自动化、自定义和执行软件开发工作流程。
举些例子,比如commit 代码后自动编译并打包、定时推送天气信息到邮箱、定时执行签到等。
之前一直在用的东放自动签到脚本,然后想着这个脚本应该也行,简单试了下,然后就整出了这么个东西。
怎么用?
1.签到脚本
准备好签到脚本,比如上面提到的帖子的脚本,我就不搬了,请前往该贴获取评论追随,或者是泥潭其他py脚本
2.github仓
随便建个仓,强烈建议直接设置为私有Private
2.修改签到脚本
修改签到脚本,前面需要加入import osimport os
中间需要删除隐私信息的log打印,具体原因和方法可参考置顶楼层,下图给出修改重点
最后的main函数要这样改if __name__ == "__main__":
username = os.getenv("USERNAME")
password = os.getenv("PASSWORD")
# questionid = os.getenv("QID")
# answer = os.getenv("ANSWER")
if not username or not password:
print("❌ 错误:未提供用户名或密码")
exit(1)
gm = GamemaleNoCookie(username, password)
gm.run()
不要在这里写用户名密码!不要在这里写用户名密码!不要在这里写用户名密码!
你的仓如果设置成public,那所有人都能看到了
3.添加脚本至仓库
点Add file把脚本直接加进去
4.用户名和密码
这样创建你的用户名和密码 Settings -> Actions secrets and variables -> Actions -> New repository secrets
创建出下图中标黄的两条记录 USERNAME 和 PASSWORD,分别保存用户名和密码
这里我没有测试过对中文用户名的兼容性,所以后面运行失败可以修改2中的main函数
比如这样if __name__ == "__main__":
username = "username" # 引号内改成你的
password = os.getenv("PASSWORD")
# questionid = os.getenv("QID")
# answer = os.getenv("ANSWER")
if not username or not password:
print("❌ 错误:未提供用户名或密码")
exit(1)
gm = GamemaleNoCookie(username, password)
gm.run()
5.yml文件
描述 workflow 的文件,默认路径是 .github/workflows/
点这里开始添加yml文件 Actions -> New workflow
跳转后点这里 set up a workflow yourself
然后拷贝下面的内容:name: 'gamemaleAutoLogin'
on:
push:
branches: [ main ] # 当对分支main进行push操作的时候,这个工作流就被触发了
schedule:
- cron: '04,16***' # 定时任务,UTC 16:00 ,即北京时间 00:00 运行
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Set up Python # 安装python
uses: actions/setup-python@v1
with:
python-version: 3.10.16
- name: Install pkt # 安装requests, ddddocr
run: pip install requests ddddocr
- name: Login# 读取账号并登录
env:
USERNAME: ${{ secrets.USERNAME }}
PASSWORD: ${{ secrets.PASSWORD }}
run: python gamemale.py
再点击右上角的 commit changes
6.自动运行及结果
完成上一步的提交之后,就会自动开始运行,可以进行查看
后续会根据脚本中的UTC时间进行自动运行,自行确认要在什么时候运行,如下表示UTC时间的 4:00 和 16:00 ,即北京时间 12:00 和 00:00 各运行一次schedule:
- cron: '0 4,16 * * *' # 定时任务,UTC 4:00 16:00
由于脚本自动运行需要时间(包括创建环境、安装包等),会有几十秒不等的延迟,所以不适合用来抢首签
补充:置顶楼层以及主楼回帖补充了使用及安全相关说明!简化操作可直接clone/fork置顶楼的仓库,参考4点添加用户名和密码也能使用
最后祝大家元宵快乐!!!
广告:传送门脚本已更新至 永亘环 ,欢迎通过主楼最后的油猴更新使用!
本帖最后由 ♥REX♥ 于 2025-3-1 13:54 编辑
更新:新的脚本已经解决了日志的问题,并添加了自动参与卡片抽奖的功能
因为在 GitHub 上配置定时自动签到的操作大致相同,大家可以按照楼主的图文教程进行配置,只需要跳过修改脚本步骤就好啦。
---
关于仓库处于公开状态时,旧脚本安全问题的说明:
1. 公开的仓库需要注意修改旧脚本
原来的脚本日志中会出现 formhash 这个东西。它如果泄露,可能会被有心之人用于 胡乱发帖 等恶意操作
尤其是当你 没有按照楼主的教程设置仓库为 Public 时,这会让GitHub 仓库处于公开状态,任何人都可以看到脚本运行的日志
所以,当仓库公开时,原始脚本日志中的 formhash 是存在泄露可能 的
解决办法:Ctrl + F 搜索,修改代码
修改目标:
[*]搜索 formhash ,确保代码中和 logging 同处一行的、被花括号包裹的 formhash都已经删除干净
包括: {formhash} 和 {self.post_formhash}
[*]搜索 "message": message 和 "message": str(e)并在前面加上井号和空格 "# " ,以注释这两行
[*]搜索 logging.info(f"GameMale 签到结果: {sign_status} | {message}") ,删除其中的 {message} 部分
[*]修改效果参见:https://raw.githubusercontent.co ... d1a2f8e/gamemale.py
2. 配置 Secrets 的风险讨论
对于仓库里的 (GitHub) Actions ,如果你确定配置的是 Secrets√ 而不是 Variable×,那么没有明显的安全风险
(除非你的 GitHub 登录信息泄露 等)
首先,Secret 设置之后是看不了的,除非你主动修改脚本代码,让它把 Secret 的值通过网络发给其他人看
其次,对公开仓库,Secret 也不会因为被人家 "Fork/Clone" 仓库,就转移到别人的账户,所以不必担心配置的账号密码被恶意窃取
再者,Secret 是跟仓库走的,只适用于当前的仓库,其他仓库的 Action 是看不到的。所以,就算你在账户下的其他公开仓库日志中记录了这个密钥的变量名也不怕,要么会提示环境变量未配置,要么会显示那个公开仓库本身配置的密钥
3. Environment secrets 和 Repository secrets 有什么区别
Repository secrets 适用于你建的这个仓库
Environment secrets 适用于你建的这个仓库在运行 Github Actions 时,声明的环境
---
就好像你去踩点健身房:
Repository secrets 相当于 连锁店 ,你不论你上哪条街,只要需要,都会去逛
Environment secrets 相当于 个人工作室 ,你只有在某条街道才会去逛
另外当 连锁店 和 个人工作室 同时出现在一条街道上时,你往往会先去逛 个人工作室 ,如果里面没有你需要的东西,你才会去连锁店,但只要你需要,你就不会再去连锁店了
备注:如有错误或疏漏,请不吝纠正,提前感谢您的指正/意见/讨论
备注:仓库 https://github.com/exact-emote-granny/Gizmo 已经对脚本完成调整,直接点击 Fork 后 按以下步骤配置 即可:
[*]前往 settings - secrets and variables - actions - Repository secrets - New secret - 填写 Name 和 Secret
(Name 指变量名,对应 GM_USERNAME 或 GM_PASSWORD ,Secret是具体的值,也就是具体的账户和密码)
[*]前往 Actions - GameMale Auto Sign-in - Run workflow 即可自动运行
又是一个实用的代码 像我这种懒人又可以偷懒一下惹 自动签到还是很有用的惹,再也不用担心忘记了 感觉还是有一些门槛的,电脑小白应该是玩不转了 非常实用的脚本捏,不过我暂时用不到……用鼠标点点就好了 每天逛论坛会下意识点签到了,感谢分享~ 哈哈,现在签到都可以使用脚本了嘛,真是技术懒呢,不过我还是点一下吧,代码什么的还是有点不灵光捏 不能抢首签咩~小可惜哇~也不知道误差有多少毫秒,可以提前设置不~ 本帖最后由 Colten 于 2025-4-21 10:56 编辑
所以完成後不需要下載也不需要持續開著頁面就會自動簽到? 感谢大佬的教程,先前刚看到一个发美化勋章的脚本不知道怎么用 会写脚本的大佬,爱了爱了
正好最近几天不在家,搞一个签到,爽{:6_200:}{:6_200:}
自动签到还是很有用的惹,再也不用担心忘记了 完全不懂代码的人感觉不太适合使用这个脚本了 看起来不错哎,感觉更安全些?这就去试试 感觉还是挺使用的,不过好复杂有点没看懂,晕晕(代码小白) 科技改变生活!OMG都不敢想泥潭最后会玩成什么花样,感谢LZ 可以啊,在也不用需要强什么补签卡之类的东西了,也不必担心什么断了很久的签到而后悔莫及了;P,好评好评!:loveliness: 我也看了半天没看懂这是可以说的吗
暴露了我完全不懂github action 自动签到对于不会每天登泥潭的人来说还是挺省事的啊