python第三方插件登录网易音乐_python3-使用requests模拟登录网易云音乐
# -*- coding: utf-8 -*-
from Crypto.Cipher import AES
import base64
import random
import codecs
import requests
from fake_useragent import UserAgent
from http.cookiejar import LWPCookieJar
import hashlib
'''
之前也写过网易云音乐的评论爬取,下载歌曲,还有其他等等。。。
网易云音乐登录加密方式其实和评论的加密方式是一样的,只不过传入的参数不同罢了,而登录需要构造下面login方法注释里字典格式
注意千万不要使用json.dumps(字典)来将字典转为json格式字符串。因为字典它是无序的,转出来的json字符串有可能是不一样的,这样
导致最终加密出来的字符串是不同的
其实上一篇爬取评论的时候,我就写了登录方式。但是登录失败了。加密方式是没有变的,通过js调试,我发现checkToken这个参数的值,
它是变化的,所以那时就一直想找到checkToken它的参数是怎么来的。找得头都大,位置大概知道了。但是解出来的话,我能力不够(其实就不太愿意花时间去弄),
我也在网上搜索过,但也没找到想要的答案。弄了一段时间,就先放一放了。
昨天晚上写完微博的模拟登录,今早想起了网易云音乐登录还没写完。捣腾了一会儿。发现之前一直想解出的checkToken参数,不传也
可以成功登录。
不必要弄懂全部参数的加密方式,有时候这个参数后台不是判断的必要条件。
'''
class WYY:
ua = UserAgent()
def __init__(self):
self.arg2 = "010001"
self.arg3 = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
self.arg4 = "0CoJUm6Qyw8W8jud"
self.session = requests.Session()
self.session.headers = {
"Referer": "https://music.163.com/",
"User-Agent": self.ua.random
}
self.session.cookies = LWPCookieJar(filename="./cookie.txt")
self.__get_random_str()
def __AES_encrypt(self, text, key):
'''
获取到加密后的数据
:param text: 首先CBC加密方法,text必须位16位数据
:param key: 加密的key
:return: 加密后的字符串
'''
iv = "0102030405060708"
pad = 16 - len(text) % 16
if isinstance(text, str):
text = text + pad * chr(pad)
else:
text = text.deocde("utf-8") + pad * chr(pad)
aes = AES.new(key=bytes(key, encoding="utf-8"), mode=2, iv=bytes(iv, encoding="utf-8"))
res = aes.encrypt(bytes(text, encoding="utf-8"))
res = base64.b64encode(res).decode("utf-8")
return res
def __get_encText(self, args1):
encText = self.__AES_encrypt(args1, self.arg4)
encText = self.__AES_encrypt(encText, self.random_16_str)
return encText
def __get_encSecKey(self):
'''通过查看js代码,获取encSecKey'''
text = self.random_16_str[::-1]
rs = int(codecs.encode(text.encode('utf-8'), 'hex_codec'), 16) ** int(self.arg2, 16) % int(self.arg3, 16)
return format(rs, 'x').zfill(256)
def __get_random_str(self):
'''这是16位的随机字符串'''
str_set = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
random_str = ""
for i in range(16):
index = random.randint(0, len(str_set) - 1)
random_str += str_set[index]
self.random_16_str = random_str
def __getFormData(self, args1):
'''获取到提交的数据'''
data = {"params": self.__get_encText(args1), "encSecKey": self.__get_encSecKey()}
return data
def login(self, username: str = None, password: str = None):
'''网易云登录'''
'''
参数一为构造这样的字典格式
checkToken: "9ca17ae2e6ffcda170e2e6eed9ee33fb9d9dd6cb7a98ef8eb2d85b879b9ababc6788b6ab96f95afcb8adaabc2af0feaec3b92aadb88ab1c446a1ef0099f65a879f9ba6c85a9bb0a2b9e945f5eca69bd952af95ee9e"
csrf_token: ""
password: "5cf36a0d72feb44111716322921ed011"
phone: "18716758271"
rememberLogin: "true"
'''
api = "https://music.163.com/weapi/login/cellphone?csrf_token="
headers = {}
headers["content-type"] = "application/x-www-form-urlencoded"
headers["user-agent"] = self.ua.random
headers["referer"] = "https://music.163.com/"
if not username:
username = input("输入你的电话>>:").strip()
else:
username = username.strip()
if not password:
password = input("输入你的密码>>:").strip()
else:
password = password.strip()
self.arg1_login = '{"phone":"%s","password":"%s","rememberLogin":"true","checkToken":"","csrf_token": ""}' % (
username, hashlib.md5(bytes(password, encoding="utf-8")).hexdigest())
formdata = self.__getFormData(self.arg1_login)
response = self.session.post(url=api, headers=headers, data=formdata)
results = response.json()
if results["code"] == 200:
self.session.cookies.save()
print("登录成功")
else:
print(results["msg"])
def text(self):
'''测试方式'''
pass
if __name__ == '__main__':
wyy = WYY()
wyy.login()
python第三方插件登录网易音乐_python3-使用requests模拟登录网易云音乐相关推荐
- 音乐无界限,听见好时光—网易云音乐Linux版震撼来袭!
为了带来更好的音乐体验,实现对音乐高品质的追求,经过网易云音乐与深度科技团队长达半年多的联合开发,大家期待已久的网易云音乐正式登陆 Linux 平台! 网易云音乐是一款专注于发现与分享的音乐产品,依托 ...
- 解锁网易云音乐小工具_什么?网易云音乐又变灰了
目前音乐市场主要有三大巨头:酷狗音乐,QQ音乐,网易云音乐.QQ音乐与网易云音乐进入市场都较晚,但是网易云音乐凭借灵活的音乐社交玩法积累了非常多的用户,而QQ音乐凭借着有钱优势,购买了很多音乐版权,网 ...
- 模拟制作网易云音乐(AudioContext)
模拟制作网易云音乐(AudioContext) 记得好早前在慕课网上看到一款可视化音乐播放器,当前是觉得很是神奇,还能这么玩.由于当时刚刚转行不久,好多东西看得稀里糊涂不明白,于是趁着现在有时间又重新 ...
- html网易云音乐图片轮播效果,看网易云音乐如何在界面设计中突出特色功能
一般观念中一款产品的功能越具特色就会放在越突出的位置,但是如果一款产品层级较深,底层架构复杂导致若干功能优先级并列,那在UI设计中如何做到强化和弱化呢? 作为网易云音乐陈年老粉,不得不说这款产品做的真 ...
- 网易云音乐称酷狗抄袭计算机,网易云音乐称酷狗抄袭 双方有何恩怨?
来源标题:网易云音乐谴责酷狗音乐"山寨"其推歌功能.页面设计等 2月2日,网易云音乐在官方微博发布致酷狗音乐的公告,声明酷狗音乐平台"山寨"网易云平台上&quo ...
- python爬虫网易云音乐最热评论并分析_Python3实现爬虫抓取网易云音乐的热门评论分析(图)...
这篇文章主要给大家介绍了关于Python3实战之爬虫抓取网易云音乐热评的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. ...
- python爬虫网易云音乐评论最多的歌_Python网易云音乐评论爬虫,歌曲的全部评论...
用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是接近百万或者是超过百万条.现在我就来分享一下如何爬取网易云音乐歌曲的全部评论,由于网易云音乐的评论都做了混淆加密处 ...
- python爬取网易云音乐热评_python爬取网易云音乐评论
本文实例为大家分享了python爬取网易云音乐评论的具体代码,供大家参考,具体内容如下 import requests import bs4 import json def get_hot_comme ...
- python爬取网易云音乐评论分析_Python爬取网易云音乐评论(附加密算法)
网易云音乐,里面汇聚了哲学家,小说家,story-teller,皮皮虾等各种人才,某些评论非常值得收藏(甚至开了一个歌单专门收藏它们).竟然这么好玩,何不尝试把他们爬取下来呢? 前置需求 可选:fid ...
最新文章
- java 窗口锁定_使用Java锁定屏幕
- rman备份,crontab计划任务没有生成备份文件
- 传递集合对象_面试必备——Java集合框架
- java mysql ssl警告_连接到MySQL数据库时有关SSL连接的警告
- java循环输出_Java实现excel导出(内容循环多个)
- arch linux编译,ArchLinux内核编译与安装
- HDU 1069 Monkey and Banana 动态规划
- 类的加载过程详解之过程二:Linking(链接)阶段
- Java简答题库_java题库3-简答题.doc
- python单元测试用例_Python单元测试与测试用例简析
- excel计算机考试题库,2016年职称计算机考试题库EXCEL题库及答案
- 前端移动端开发(基础)
- 学生用计算机怎么转换进制,一种计算机二进制和十进制转换教具的制作方法
- 升级光伏供应链体系,供应商系统规范供应商管理,促进企业与供应商高效协同
- 【停课不停学】CSDN学院奉绵薄之力,为程序员做点公益!
- 人人都要有底层逻辑 - 底层逻辑一定要围绕人
- 潘石屹这回是真的卖掉了“根”
- 常用CASE工具介绍 1
- throw inside finally block
- oracle创建dba,oracle创建一个DBA用户
热门文章
- 编写一个c程序的头文件
- 安卓导航车机root方法_标准化车载安卓/语音交互是亮点 Polestar极星2车机微体验...
- Java 中这些常用关键字,总有那么些被你遗忘的
- Oracle数据库之多表查询
- 打印杨辉三角--for循环
- (仿头条APP项目)2.主界面按钮切换Fragment页面
- python词云有什么用_如何用Python实现词云效果
- 变频器怎么设置_如何利用串口调试软件与变频器通信?
- python日历提醒_如何通过python发送日历邮件(ics)
- IPv6静态路由怎么配置?