Giter Club home page Giter Club logo

sign's Introduction

Sign

签到啦

(目前支持京东京豆、南航、川航、携程、微信支付有优惠小程序龙舟游戏刷免费提现券、美团优惠券、统一快乐星球、**移动、**联通、东鹏特饮、云闪付、卡亨星球、鸿星尔克、迪卡侬、萤石、掘金、途虎养车、爱奇艺)

使用教程

pip install uvicorn fastapi websockets httpx loguru diskcache apscheduler SQLAlchemy python-dateutil -i https://pypi.tuna.tsinghua.edu.cn/simple

运行项目(两种方式运行: 第一种直接运行脚本;第二种启动服务后通过接口添加token设置定时任务)

第一种:直接运行脚本

python sign.py

追加参数

python sign.py --pt_pin jd_XXX --pt_key AAJXXX

第二种:启动服务(服务可用于添加token和设置定时任务)

uvicorn sign:app --host 0.0.0.0 --port 8081

访问 http://127.0.0.1:8081/docs 通过接口添加账户token等

视频教程

开发描述

程序主要使用fastapi开发的接口,请求库主要使用httpx,定时调度器使用的是apschedule,数据库使用的是sqlite,缓存使用的是diskcache,调度器和缓存是共用同一个sqlite数据库,使用sqlite数据库主要是减少环境依赖和方便,也方便的查看任务执行情况。当然也可以换成其它数据库,修改一些脚本数据库配置即可。

接口可以方面添加token等令牌信息,之后的定时运行可以使用apschedule定时调度运行(默认早上九点签到),也可使用crontab运行脚本。

crontab运行脚本后面添加参数即可(例如 0 9 * * * ~/python3 ~/sign.py --pt_pin jd_XXX --pt_key AAJXXX)。

签到状态提醒目前只写了钉钉通知,修改脚本的dingAlert函数中的access_token和secret即可。

后续也会增加其它平台...

脚本运行命令设置选项

Options:
  --pt_pin       [/signBeanAct]京东Cookie中获取pt_pin值
  --pt_key       [/signBeanAct]京东Cookie中获取pt_key值
  --csai         [/csairSign]南航账户Cookie中sign_user_token值
  --sichuanair   [/sichuanairSign]川航账户Cookie中access-token值
  --ctrip        [/ctripSign]携程账户Cookie中cticket值
  --meituan      [/meituan]美团账户Cookie中token值
  --weimob       [/weimob]统一快乐星球账户Cookie中X-WX-Token值
  --10086        [/10086]**移动账户Cookie中SESSION_TOKEN值
  --10010        [/10010]**联通账户Cookie中ecs_token值
  --dp           [/dp]东鹏账户header中sid值
  --95516        [/95516]云闪付账户header中Authorization值
  --kraf         [/kraf]卡亨星球账户header中token值
  --erke         [/erke]鸿星尔克账户的memberId值
  --honda        [/honda]本田账户的Authori-zation值
  --decathlon    [/decathlon]迪卡侬账户的Authorization值
  --ys           [/ys]萤石账户的sessionid值
  --juejin       [/juejin]掘金账户的sessionid值
  --tuhu         [/tuhu]途虎养车账户的Authorization值

说明:

京东--pt_pinpt_pin和--pt_key需同时传入!脚本也支持使用青龙面板运行,追加的参数设置为环境变量即可。

常见问题

关于 令牌 获取

可以使用抓包工具,例如Fiddler、Wireshark,或者浏览器插件,或者使用浏览器自带的开发者工具,例如Chrome的开发者工具。 手机抓包可以设置代理去抓包(需安装证书才可以抓取https协议请求),也可以使用app去抓包,苹果用户推荐使用Stream,安卓用户推荐使用HttpCanary。

青龙面板支持

程序也是支持了青龙面板,令牌通过环境变量传入即可。

关于 docs 空白页面

由于fastapi的docs使用的是swagger-ui的远程静态文件,远程静态文件偶尔会加载异常,所以docs出现空白页面,不影响接口使用。

阶段计划

  • 添加Cookie签到(解决多参数认证)
  • 加入任务灵活配置页面
  • 重新编写部署教程

总结

由于这是本人业余时间开发的项目,可能还有很多问题不能及时解决(也会抽时间解决),这个项目也可能存在很多不尽如人意的地方,在细节方面我也会尽力地去修改,也欢迎大家提出自己的问题,以及项目的相关建议,也欢迎大家提交代码。如果觉得这个主题不错,欢迎大家去使用。当然了,如果能赞赏我一下,我也是不介意的。(●ˇ∀ˇ●)

这个项目对于部分人群可能无法灵活配置,后续抽时间开发web版和app去让各类用户方便使用,欢迎大家修改,也希望这个项目越来越多的人能够喜欢。

sign's People

Contributors

litre-wu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

sign's Issues

运行不了

没用过python,都是安装教程来的。环境相关的之前就安装好了,先执行pip install uvicorn xxxx的命令。没问题
然后执行python sign.py 提示没有问题,我就把项目的文件下载复制过去了。
但是执行的时候,提示:
File "sign.py", line 87
cache.set(f'{k}{v}', v_)
^
SyntaxError: invalid syntax

通过方式二运行,可以成功运行。但是无法通过直接通过浏览器进行访问。项目是部署在服务器上的。

南航问题

请教一下南航token的有效期以及报错原因,【token】用【南航token】代替了

京东pt_pin和pt_key需同时传入!!!

/ql/data/scripts/Litre-WU_Sign/sign.py:126: DeprecationWarning:
on_event is deprecated, use lifespan event handlers instead.

    Read more about it in the
    [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).

@app.on_event("startup")
/ql/data/scripts/Litre-WU_Sign/sign.py:143: DeprecationWarning:
on_event is deprecated, use lifespan event handlers instead.

    Read more about it in the
    [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/).

@app.on_event("shutdown")
2024-07-17 01:05:45.037 | INFO | main:csairSign:419 - a40880b1-4885-188f-8884-6788841bc5ce
2024-07-17 01:05:45.298 | ERROR | main:csairSign:428 - 南航签到程序异常 'NoneType' object is not subscriptable
2024-07-17 01:05:45.300 | INFO | main:csairSign:430 - {'code': 400, 'msg': "南航签到程序异常 {'token': '南航token'}", 'time': 1721149544}
2024-07-17 01:05:45.612 | INFO | main:csairSign:461 - {'code': 200, 'msg': "南航用户:南航token 当月 ['2024-07-15', '2024-07-16', '2024-07-17'] 已签到", 'time': 1721149544}

京东签到问题

在京东的cookie里面没找到 pt_pinpt_key 这两个字段,这是在哪找的?

青龙错误

Traceback (most recent call last):
File "/ql/data/scripts/sign.py", line 104, in
'processpool': ProcessPoolExecutor(5),
File "/usr/lib/python3.10/site-packages/apscheduler/executors/pool.py", line 70, in init
pool = concurrent.futures.ProcessPoolExecutor(int(max_workers), **pool_kwargs)
File "/usr/lib/python3.10/concurrent/futures/process.py", line 657, in init
self._call_queue = _SafeQueue(
File "/usr/lib/python3.10/concurrent/futures/process.py", line 168, in init
super().init(max_size, ctx=ctx)
File "/usr/lib/python3.10/multiprocessing/queues.py", line 43, in init
self._rlock = ctx.Lock()
File "/usr/lib/python3.10/multiprocessing/context.py", line 68, in Lock
return Lock(ctx=self.get_context())
File "/usr/lib/python3.10/multiprocessing/synchronize.py", line 162, in init
SemLock.init(self, SEMAPHORE, 1, 1, ctx=ctx)
File "/usr/lib/python3.10/multiprocessing/synchronize.py", line 57, in init
sl = self._semlock = _multiprocessing.SemLock(
FileNotFoundError: [Errno 2] No such file or directory

注释104行后可以运行

2024-05-16 19:55:23.142 | INFO | main:demogic_erke:1165 - erke dailySign {"reqMethodName":null,"errcode":900001,"errmsg":"您今天已签到","response":{"reqMethodName":null,"errcode":0,"errmsg":"您今天已签到","response":null,"memberSign":null,"expirePoints":0,"points":0}}
2024-05-16 19:55:23.362 | INFO | main:youzan_dp:1023 - 东鹏 checkin {"code":1000030071,"msg":"无法参与,已达最大参与次数"}
Traceback (most recent call last):
File "/ql/data/scripts/sign.py", line 1897, in
asyncio.run(crontab_task())
File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
return future.result()
File "/ql/data/scripts/sign.py", line 1890, in crontab_task
await qqstock(**meta)
File "/ql/data/scripts/sign.py", line 1349, in qqstock
act_id = res.json()["continue_task"]["act_id"]
KeyError: 'continue_task'

依赖安装成功后,运行uvicorn sign:app --host 0.0.0.0 --port 8081后,为什么http://127.0.0.1:8081/docs打不开?

依赖安装成功后,运行uvicorn sign:app --host 0.0.0.0 --port 8081后,出现如下运行如果:

root@qinglong:/ql/data/scripts/Litre-WU_Sign $ uvicorn sign:app --host 0.0.0.0 --port 8081
INFO: Started server process [46843]
INFO: Waiting for application startup.
程序开始
[]
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)

但浏览器输入:http://127.0.0.1:8081/docs 为什么打不开?

这是什么原因呢?大神指导一下,谢谢~

另,几周过去了,大神说的青龙面板运行的版本,什么时候发布啊?

安装好依赖后,在sign.py同级目录执行 uvicorn sign:app --host 0.0.0.0 --port 8081 命令 出错!!!

安装好依赖后(执行pip install uvicorn fastapi httpx loguru diskcache apscheduler redis -i https://pypi.doubanio.com/simple/ 安装依赖包),在sign.py同级目录执行 uvicorn sign:app --host 0.0.0.0 --port 8081 命令 出错!!!

root@qinglong:/ql/data/scripts/Litre-WU_Sign $ uvicorn sign:app --host 0.0.0.0 --port 8081
Traceback (most recent call last):
File "/usr/local/bin/uvicorn", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1157, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.10/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/uvicorn/main.py", line 416, in main
run(
File "/usr/local/lib/python3.10/site-packages/uvicorn/main.py", line 587, in run
server.run()
File "/usr/local/lib/python3.10/site-packages/uvicorn/server.py", line 61, in run
return asyncio.run(self.serve(sockets=sockets))
File "/usr/local/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/local/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
return future.result()
File "/usr/local/lib/python3.10/site-packages/uvicorn/server.py", line 68, in serve
config.load()
File "/usr/local/lib/python3.10/site-packages/uvicorn/config.py", line 467, in load
self.loaded_app = import_from_string(self.app)
File "/usr/local/lib/python3.10/site-packages/uvicorn/importer.py", line 21, in import_from_string
module = importlib.import_module(module_str)
File "/usr/local/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1050, in _gcd_import
File "", line 1027, in _find_and_load
File "", line 1006, in _find_and_load_unlocked
File "", line 688, in _load_unlocked
File "", line 879, in exec_module
File "", line 1017, in get_code
File "", line 947, in source_to_code
File "", line 241, in _call_with_frames_removed
File "/ql/data/scripts/Litre-WU_Sign/sign.py", line 72
except Exception as e:
^
IndentationError: expected an indented block after 'try' statement on line 68
root@qinglong:/ql/data/scripts/Litre-WU_Sign $

作者能否做个青龙面板能用的版本呢?

青龙脚本问题

里面的任务只能同时运行吗?可不可以单独设置某个脚本cron?还有可不可以加上通知

云闪付账户header相关的问题

请问 ' [/95516]云闪付账户header中Authorization值', 指的是哪个账户页面
我试过去抓签到页面的请求, header里面没有Authorization

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.