DS918+入手!配置Docker实现每日签到
入坑NAS的目的本来是因为想做个仓库记录宝宝的成长,考虑了很久到底是Qnap453bmin还是群晖918+,最后为了省事还是入了918+,某鱼可以讨价还价+发票购入。
不过入坑后在Docker的路上越走越远。。。。。
发现社区里面关于Docker的一些技术应用并不多,下面主要给大火介绍下群晖如何Docek安装Python+依赖包,以及后续实现网站的自动签到的功能(~以后我也能有2000天签到勋章了~)
安装Docker
此部分比较简单,直接在套件中心搜索docker安装就行
安装Python
安装好docker后,打开docker--注册表,搜索python,直接下载就行
等待下载完毕,查看映像,点击新增
进行Python的配置,点击高级设置--卷--添加文件夹,选择该容器需要挂载的路径。
这里稍微解释下:docker/python_project文件夹是Nas里面真实的文件夹,/python_project是容器里面的文件夹,这里相当于把容器的文件夹映射到Nas里边,到时我们的python脚本文件就可以放在docker/python_project里面了,后面直接点下一步分配空间内存等直接默认就好了(群晖就是这么方便么?)
完成配置以后,点击容器--详情,就可以查看该python虚拟机的运行状态了
在该容器详情中点击“终端机”,试试看print("helloword!") OK,成功安装python
安装各种依赖包
下面就是用pip安装各种依赖包了。。。
现在安装python一般都集成了pip了,先查看一下。点击终端机--新增--bash--输入pip -V
可以看到pip的版本了,下面就开始安装各种依赖包。
主要的几个包:Pillow pycryptodome requests rsa
实现语句:就在bash这个界面输入:pip install Pillow -i https://pypi.douban.com/simple
加粗的换成几个包的名字就可以了,后面的连接表示替换成国内的几个源,下面源选择性使用
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:https://mirrors.aliyun.com/pypi/simple/
豆瓣:https://pypi.douban.com/simple/
Python实现自动签到
下面重头戏来了,网上找了不少自动签到的资源,发现都失效了,抓了包发现用了极验验证+rsa密码加密,so只好自己解决了。
首先详细介绍一下自动签到的原理:
首先我们手动打开浏览器 f12 登录网站抓一下包看看登录过程:
密码是随便输的,提取下有用的数据,主要包括三个部分
1.极验验证
geetest,搜下这个关键词,这个模块主要是用来防止比较简单的request的访问,区分机器与人,这个就是阻挡了之前大部分自动登录签到的脚本的罪魁祸首了
极验验证是一种在计算机领域用于区分自然人和机器人的,通过简单集成的方式,为开发者提供安全、便捷的云端验证服务。 与以往传统验证码不同的是,极验通过分析用户完成拼图过程中的行为特征,通过数据分析来判断是人还是机器。
直接站在巨人肩膀上吧,github能有拿来就能用的源码:
2.获取密钥
看第二个有用的数据的图,pub_key,想到了啥?rsa加密啊!!!用来加密啥,往下看
先把pub_key拿下来备用下:
pub_key_url = "https://zhiyou.smzdm.com/user/login/pre"
pub_key = (
session.get(pub_key_url, headers=headers).json().get("data").get("pub_key")
)
3.数据加密发送给服务器
观察post给服务端的数据,用户名被加密了,密码也被加密了。
用户名应该是比较简单的加密方式,稍微试了下base64方式加密,搞定。
base64.b64encode(username.encode()).decode()
密码应该就是用rsa加密了,方法就是向服务器申请一次公钥,然后用公钥对密码进行加密,然后发送给服务端
key = base64.b64decode(pub_key.encode()).decode()
rsakey = RSA.importKey(key)
cipher = Cipher_pkcs1_v1_5.new(rsakey)
cipher_text = base64.b64encode(cipher.encrypt(pwd.encode(encoding="utf-8")))
value = cipher_text.decode('utf8')
一顿操作试了下:
geetest返回结果:({"message": "success", "success": 1, "score": "2", "validate": "***********"})登陆结果:{'redirect_to': '', 'error_code': 0, 'is_use_captcha': True, 'data': [], 'error_msg': ''}
果然登录成功,后面就是用request进行签到拉
checkin_url = "https://zhiyou.smzdm.com/user/checkin/jsonp_checkin?callback= &_={}".format(time.time() * 1000)
response = session.get(checkin_url, headers=headers)
群晖计划任务实现
实现签到以后,可以把数据存在数据库里面,然后让设置一个群晖的计划任务,每天等结果就好拉
控制面板---计划任务
设置每日执行,以及计划任务的参数,然后等结果就好啦
我把每天签到结果存在sqlite里面了,然后等待我的签到勋章吧,哈哈哈哈
非彼非是
校验提示文案
负号_
校验提示文案
古风悠悠
校验提示文案
太平洋里的水
PS:2000天勋章没啥用,至今只领了1本纪念册、1把扇子、1个火漆印而已。
校验提示文案
Tonysen
校验提示文案
狼里个狼
校验提示文案
ccuper
校验提示文案
dkess
校验提示文案
jxam
校验提示文案
feixu0530
校验提示文案
珂珂豆
校验提示文案
记性差的翔子
校验提示文案
浮生行简
校验提示文案
张大妈隔壁大爷
校验提示文案
VAY冬冬
校验提示文案
狗狗jian
校验提示文案
猪毛
校验提示文案
值友3873807340
校验提示文案
值友3820672339
校验提示文案
看看便宜货
校验提示文案
景行山野间
校验提示文案
狼里个狼
校验提示文案
feixu0530
校验提示文案
珂珂豆
校验提示文案
feixu0530
校验提示文案
johnsongao
校验提示文案
低调的快乐
校验提示文案
寒雨孤夜
校验提示文案
jxam
校验提示文案
积木老胖
校验提示文案
sanmaoscookie
校验提示文案
看看便宜货
校验提示文案
负号_
校验提示文案
值友3820672339
校验提示文案
值友3873807340
校验提示文案
dkess
校验提示文案
Tonysen
校验提示文案
猪毛
校验提示文案
ccuper
校验提示文案
太平洋里的水
PS:2000天勋章没啥用,至今只领了1本纪念册、1把扇子、1个火漆印而已。
校验提示文案