Python模拟登录网易云音乐并自动签到
作者:weixin_43649691 发布时间:2023-05-28 03:10:05
一、开发工具
**Python****版本:**3.6.4
相关模块:
DecryptLogin模块;
argparse模块;
以及一些Python自带的模块。
二、环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
三、原理简介
既然要签到,首先,自然是需要模拟登录啦,这里我们还是简单地利用我们开源的DecryptLogin库来实现网易云音乐的模拟登录:
'''模拟登录'''
@staticmethod
def login(username, password):
lg = login.Login()
_, session = lg.music163(username, password)
return session
成功登录之后,我们来分析一下如何实现网易云音乐的自动签到。按F12打开开发者工具或鼠标右键检测,然后点击一下网易云音乐的签到按钮:
可以发现一个疑似签到用的post请求:
其链接构成为:
'https://music.163.com/weapi/point/dailyTask?csrf_token=' + csrf
之前的文章里我们说过,csrf这个参数在登录后的cookies里可以找到,类似这样:
csrf = re.findall('__csrf=(.*?) for', str(session.cookies))[0]
所以我们现在要解决的问题是如何找到该post请求需要提交的data的原文,因为网页里看到的内容是加密后的,就像这样:
第一个显然是我们找到签到接口,那就点开第二个看看吧:
query不会就是我们想要的原文吧。尝试成功的话岂不是血赚?于是,调用一下DecryptLogin库里写好的网易云音乐post参数加密算法,来加密一下data(网易云音乐所有post请求的携带的data原文都要先用一个加密算法进行加密之后再提交):
from DecryptLogin.platforms.music163 import Cracker
cracker = Cracker()
# 注: typeid为0代表APP上签到, 为1代表在网页上签到
data = {
'type': typeid
}
data = cracker.get(data)
然后发送请求测试一下:
signin_url = 'https://music.163.com/weapi/point/dailyTask?csrf_token=' + csrf
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': 'http://music.163.com/discover',
'Accept': '*/*'
}
res = self.session.post(signin_url, headers=headers, data=data)
发现返回的数据是这样的:
这个结果说明我们刚刚的猜想完全正确,只是因为我们已经签到过了,所以才显示重复签到。最后,为了节约每天在命令行输入账号密码的时间,我们可以在脚本的最前面添加几行代码:
if os.path.exists('config.json'):
f = open('config.json', 'r', encoding='utf-8')
info = json.load(f)
f.close()
else:
args = parseArgs()
info = {'username': args.username, 'password': args.password}
f = open('config.json', 'w', encoding='utf-8')
json.dump(info, f)
f.close()
解释一下代码含义,就是如果当前文件夹里有config.json这个文件:
那么我们就直接从这个json文件里读取用户的账户名密码,否则就启动命令行参数解析函数:
'''命令行参数解析'''
def parseArgs():
parser = argparse.ArgumentParser(description='网易云音乐自动签到')
parser.add_argument('--username', dest='username', help='用户名', type=str, required=True)
parser.add_argument('--password', dest='password', help='密码', type=str, required=True)
args = parser.parse_args()
return args
让用户手动输入账户密码,并自动保存到config.json这个文件中,这样下次就不需要再重新输入一遍账户密码啦。
四、效果展示
运行方式:
python signin.py --username 用户名 --password 密码
来源:https://blog.csdn.net/weixin_43649691/article/details/117416881
猜你喜欢
- 如下所示:<div class="status_button">
- ASP中RegExp是什么 '名字字符检验Public Function CheckName(Str) &nbs
- 一:背景1. 讲故事相信大家在使用 SQLSERVER 的过程中经常会遇到 阻塞 和 死锁,尤其是 死锁,比如下面的输出:(1 row af
- 微信小程序实现人脸识别,具体应用场景 前端实现人脸信息采集 拍到正面照片 发送给后端该方法暂
- 前言最近 GitHub 上有个基于 ChatGPT API 的浏览器脚本,openai-translator, 短时间内 star 冲到了
- 整理文档,搜刮出一个vue中如何实现变量和字符串拼接的代码,稍微整理精简一下做下分享。在data中定义变量:data() { r
- Excel的最合适列宽(openpyxl)Python的Pandas模块是处理Excel的利器,尤其是加工保存Excel非常方便,但是唯独想
- 由于asp中是使用双引号作为字符串的开始和结束标志的,单一个字符串中的双引号出现次数大于两个时,程序就有可能运行错误。asp中是怎么输出引号
- 本文为大家分享了Python文本特征抽取与向量化的具体代码,供大家参考,具体内容如下假设我们刚看完诺兰的大片《星际穿越》,设想如何让机器来自
- SQLServer中的批量注释批量注释Ctrl + (K,C):按住Ctrl键不放,然后依次按下K和C批量取消注释Ctrl + (K,U):
- 一、第三方模块的下载与使用1、什么是第三方模块第三方模块是指别人编写的模块第三方模块一般功能都比较强大2、如何安装第三方模块方式一:pip工
- 我们使用编辑器的时候,想要在其中添加一个Django项目,这样就能在里面做一些想要的操作。有些人还没有对Django进行安装,这里直接用命令
- 字符函数——返回字符值这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR
- 记录mysql5.7.14安装与配置过程,梳理成文,希望对大家有所帮助。1.配置文档: ####################配
- 目录1、安装html2Canvas2、在需要的vue组件中引入3、编写一个截图按钮4、调用函数toImage总结1、安装html2Canva
- eval函数就是实现list、dict、tuple与str之间的转化str函数把list,dict,tuple转为为字符串一、字符串转换成列
- 本文为大家分享了mysql8.0.13安装图文教程,供大家参考,具体内容如下1.1. 下载:我下载的是64位系统的zip包:下载地
- 本文档介绍了 Python 下载文件的各种方式,从下载简单的小文件到用断点续传的方式下载大文件。Requests使用 Requests 模块
- 概述PHP有着众多的内置函数,其中大多数函数都被开发者广发使用。但也有一些同样有用却被遗忘在角落,本文将介绍7个鲜为人知功能却非常酷的函数。
- Python Json使用本篇主要介绍一下 python 中 json的使用 如何把 dict转成json 、object 转成json 、