导语

今天日常上班,路上打开网易云.点进去听歌,有个签到按钮,我就顺手点了!签到之后发现可以用签到积分来兑换蓝牙耳机?不知道你们清楚不,我用的是联通的电话话,用了很多年了,所以每年我都可以用积分兑换保温杯,洗面奶,纸巾等等这些用品,没想到网易云也出活动了!

这个是界面

​​

简直是巴适客滴博!

刚好女朋友还没有蓝牙耳机,还是用的那种有线耳机!可以给你来一份了!但是又担心忘记来签到,导致耳机被领完,所以我用Python写了个

网易云音乐自动签到脚本

好好看,好好学!

关键是签到脚本市场是需求很大的,完全可以通过这个自动签到脚本来薅羊毛!

​简单的介绍一下原理,网易云音乐post参数加密方式详解这里就不多介绍了,不懂这一块的直接找我获取网易云解密的详细视频教程就行.

假如这篇文章破2000阅读,小编就

给你们看!立个flag先.

既然要签到,首先,自然是需要模拟登录啦,这里我们还是简单地利用我们开源的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 Crackercracker = 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这个文件中,这样下次就不需要再重新输入一遍账户密码啦。

因为涉及到账户密码,我就不录屏了,就截个效果图吧(因为测试的时候已经签到过一次了,所以运行脚本再签到一次就显示因为重复签到而签到失败了,懒得找新的账号了T_T):

​到这里就差不多了,也是到了咱们该说再见的时候了,不过我知道你们肯定会问,代码咋不贴上来,

由于一些特殊情况这里就不贴代码了,嘿嘿嘿

好了好了,不贴代码怎么对得起你们的支持,这不就贴上来了吗!

附源码

#编程女码农
import os
import re
import json
import argparse
from DecryptLogin import login
from DecryptLogin.core.music163 import Cracker'''命令行参数解析'''
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'''网易云音乐自动签到'''
class NeteaseSignin():def __init__(self, username, password, **kwargs):self.username = usernameself.session = NeteaseSignin.login(username, password)self.csrf = re.findall('__csrf=(.*?) for', str(self.session.cookies))[0]self.cracker = Cracker()self.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': '*/*'}'''外部调用'''def run(self):# 签到接口signin_url = 'https://music.163.com/weapi/point/dailyTask?csrf_token=' + self.csrf# 模拟签到(typeid为0代表APP上签到, 为1代表在网页上签到)typeids = [0, 1]for typeid in typeids:client_name = 'Web端' if typeid == 1 else 'APP端'# --构造请求获得响应data = {'type': typeid}data = self.cracker.get(data)res = self.session.post(signin_url, headers=self.headers, data=data)res_json = res.json()# --判断签到是否成功if res_json['code'] == 200:print('[INFO]: 账号%s在%s签到成功...' % (self.username, client_name))else:print('[INFO]: 账号%s在%s签到失败, 原因: %s...' % (self.username, client_name, res_json.get('msg')))'''模拟登录'''@staticmethoddef login(username, password):lg = login.Login()_, session = lg.music163(username, password)return session'''run'''
if __name__ == '__main__':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()sign_in = NeteaseSignin(username=info.get('username'), password=info.get('password'))sign_in.run()

​到这里咱们就该说再见了,咱们下篇见!

差点忘了,上面有提到,如果不会解密的童鞋,就看这里啦!视频,.源码都在

如果你用得到的话可以直接拿走,点击领取。

不方便点链接的加企鹅群:948351247

啥?网易云签到可以领取蓝牙耳机?我用Python实现自动签到给女朋友薅了一个!相关推荐

  1. python+Selenium自动签到实例

    引言 环境准备 代码 飞猪签到领里程 京东签到领京豆 什么值得买签到 windows计划任务 方法一 方法二 总结 参考 引言 Selenium是一个用于Web应用程序测试的工具.可以十分简单的模拟输 ...

  2. python3爬取网易云歌单数据清洗_如何利用Python网络爬虫爬取网易云音乐歌词

    赵雷的歌曲 本文以民谣歌神赵雷为数据采集对象,专门采集他的歌曲歌词,其他歌手的歌词采集方式可以类推,下图展示的是<成都>歌词. 赵雷歌曲---<成都> 一般来说,网页上显示的U ...

  3. python爬取网易云音乐_爬取网易云音乐评论(一)——用python执行JS脚本

    抓包分析 可以发现网页是post请求,表单数据有两个参数params和encSecKey,应该是经过js加密所得 因此在 Initiator 栏里找到对应的js,也就是core...js,点击打开查看 ...

  4. python刷网易云_牛逼了!用Python开发的命令行版网易云音乐,Github获8300颗星!...

    大家好,我是程序员G哥 最近在逛Github发现了一个非常有趣的库musicbox,是用纯Python打造的,收获了8300颗星.Python语言简单易学,好玩有趣,身边越来越多的小伙伴都开始学习Py ...

  5. python网易云听歌时长_用Python爬取10w条网易云音乐热评并进行分析的方法总结

    有个段子讲"十年文案老司机,不如网易评论区,网易文豪遍地走,评论全部单身狗",网易云音乐的评论区也一直都是各类文案大神的聚集地. 那么我们普通用户到底如何成为网易云音乐评论里的热评 ...

  6. android 网易云短信,求助:网易云音乐v6.0安卓版,如何关闭“自动匹配曲目信息”?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 如题.请教各路大神,有谁知道如何关闭 手机端网易云音乐的"自动匹配曲目信息"这个功能? (我用的是安卓手机端的网易云音乐 v6.0版. ...

  7. 网易云10万+音乐竟然能用Python一键下载!

    如果你常听音乐的话,肯定绕不开网易云,作为一款有情怀的音乐 App,我对网易云也是喜爱有加.虽然说现在都已经是 5G 时代了,大家的手机流量都绰绰有余,但在线播放还是不如本地存着音乐文件靠谱,今天我们 ...

  8. 网易云音乐歌曲评论爬虫(附python源码)

    ♚转载: 作者:志颖 ,一个狂热的python爬虫热爱者 GitHub:github.com/zyingzhou 用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是 ...

  9. 网易云音乐热评详细源码-Python

    爬虫 & 数据分析 运行环境:python3.6 为方便理解,网易云音乐热评的爬取代码分为两部分 1. 先爬取每个歌单里的歌曲的url,导出到music1_01.csv文件中 2. 爬取每首歌 ...

最新文章

  1. 【LeetCode从零单排】No 114 Flatten Binary Tree to Linked List
  2. APP启动引导页的制作,用ViewPager实现翻页动画
  3. python 串口_如何使用Python开发串口通讯上位机(一)
  4. 学习笔记-JMeter 进行接口压力测试
  5. 腾讯视频中如何把视频进行收藏
  6. 【漫画详解】用iframe障眼法,骗取用户点击
  7. 【iCore1S 双核心板_FPGA】例程十:乘法器实验——乘法器的使用
  8. moodle 用户 权限_用户和社区反馈如何驱动Moodle
  9. RabbitMQ学习之(二)_Centos6下安装RabbitMQ及管理配置
  10. sql索引面试_关于索引的25个最佳SQL面试问答
  11. Git 更改远程地址
  12. 论文笔记_S2D.06-2018-BMVC-用于实时语义分割的轻量级精细网络RefineNet
  13. A69G-HDMI问题解决集锦
  14. 屡败屡战,攻克中项(系统集成项目管理师考试经历分享)
  15. 在电脑上如何快速制作一寸照片?在线一键制作工具推荐给你
  16. 字节跳动基于ClickHouse优化实践之“高可用”
  17. 币种对应的转换因子(处理日元台币…
  18. 数据分析师要具备什么能力?数据分析师必备的7种能力
  19. Python爬虫入门(一)(适合初学者)
  20. SQL进阶教程—自链接的用法

热门文章

  1. 三种视频播放标签(video,embed,iframe)-------笔记
  2. pve远程连接 spcie_PVE相关 篇一:解决CX341a PVE 中报错PCIe Bus Error
  3. jmeter密钥请求
  4. Flask从入门到放弃(介绍、模版语法案例、配置文件、路由本质、CBV整体流程)
  5. 重磅发布!2018互联网女皇报告中文完整版!高清PDF下载!
  6. 2022第六季完美童模 广元赛区 直选赛圆满落幕
  7. 基于LSTM的剩余寿命预测(PyTorch实现)
  8. HTML+CSS实现下拉菜单导航栏
  9. 2021年中国能源产量及消费量情况分析:一次性能源,同比增长2.7%[图]
  10. 全国poi数据7.5千万