经常忘记去点那么一下,人到中年记忆力衰退的厉害。所以…
前言
巴奴算是签到算是比较简单的那种,没有太多的限制,可能获取积分的大多是人都还是要去门店的吧,也没必要做太多的限制。
打开签到每日提醒后,自动推送的地址是随便拿一个浏览器就能打开的网页。
这一切变得就简单了许多,通过复制地址,打开像这样一样。
https://cdn-scp.banu.cn/scp/mobile/index.html#/sign-rule?member_id=xxxxxxxxxxxxxxx
打开页面效果就是这样(我这里是签过了)
没签过会有一个签到按钮,通过F12调取查看按钮的class名称可以看到是.sign-con
盒子下面的.sign
开始写代码
正文
环境
- python
- conda 方便控制版本、依赖环境
seleniumpyppeteer 本来打算使用selenium配半天没配好😂我太菜了
- vscode 主要用于本地调试
代码
index.py
import asyncio
import time
from pyppeteer import launch
async def main():
# 进入有头模式
browser = await launch(headless=False, dumpio=True, autoClose=False, args=['--no-sandbox', '--window-size=1920,1080', '--disable-infobars'])
# 打开新的标签页
page = await browser.newPage()
# 页面大小一致
await page.setViewport({'width': 1920, 'height': 1080})
# 访问签到页面
await page.goto('https://cdn-scp.banu.cn/scp/mobile/index.html#/sign-rule?member_id=xxxxxxxxxx')
# 等待签到按钮加载出来
await page.waitForSelector('.sign-con>.sign')
# 再等1s便于观察效果
time.sleep(1)
# 点击这个标签
await page.click('.sign-con>.sign')
# 再等2s便于观察点击效果
time.sleep(2)
if __name__ == '__main__':
asyncio.get_event_loop().run_until_complete(main()) # 调用
requirements.txt 依赖文件
pyppeteer===1.0.2
.github\workflows\python-app.yml 新建github的yml文件
name: Python application
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
schedule:
- cron: "0 12 * * *" # 这里指的是每天12点执行 因为时差和延迟不同 北京时间 20点左右
permissions:
contents: read
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: 设置版本
uses: actions/setup-python@v3
with:
python-version: "3.7"
- name: 安装依赖
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: 运行程序
run: |
python index.py
可以在github仓库Actions查看效果
本地调试
# 使用conda新建环境
conda create --name build-915 python==3.10
# 切换环境
conda activate build-915
# 安装依赖
pip install -r requirements.txt -i https://pypi.douban.com/simple/
# 运行测试
python index.py