Jsrpc学习——网易云热评加密函数逆向
点击上方“Python共享之家”,进行关注
回复“资源”即可获赠Python学习资料
今
日
鸡
汤
烟笼寒水月笼沙,夜泊秦淮近酒家。
大家好,我是皮皮。
前几天给大家分享jsrpc的介绍篇,Python网络爬虫之js逆向之远程调用(rpc)免去抠代码补环境简介,感兴趣的小伙伴可以戳此文前往。今天给大家来个jsrpc实战教程,Jsrpc学习——Cookie变化的网站破解教程,让大家继续加深对jsrpc的理解和认识。下面是具体操作过程,不懂的小伙伴可以私我。
1、因为网易云音乐热评的加密并不在cookie上,而是参数加密,所以这里就不需要进行hook住cookie了。
2、之前就知道网易云音乐热评的加密存在之地是在下图的位置,是那个函数window.asrsea(JSON.stringify(i1x), bsR1x(["流泪", "强"]), bsR1x(Xp8h.md), bsR1x(["爱心", "女孩", "惊恐", "大笑"]))
3、找到了aes加密地方的函数,就赋值一个自己名字的全局变量,然后转发加密就行了。之后可以在控制台输入指令window.dcpeng = window.asrsea
,其中window.asrsea
为加密函数。注意:这个地方挺重要的,很多时候我们会写成ct.update(),这样会有问题!加了括号就是赋值结果,没加就是赋值整个函数!千差万别。
4、关闭网页debug模式。注意:这个地方挺重要的,很多时候如果不关闭,ws无法注入!
5、此时在本地双击编译好的文件win64-localhost.exe
,启动服务。
6、之后在控制台注入ws,即将JsEnv.js
文件中的内容全部复制粘贴到控制台即可(注意有时要放开断点)。
7、连接通信,在控制台输入命令var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=para&name=wangyiyun");
8、随后继续输入命令:
// 注册一个方法 第一个参数get_v为方法名,
// 第二个参数为函数,resolve里面的值是想要的值(发送到服务器的)
// param是可传参参数,可以忽略
demo.regAction("get_para", function (resolve, param) {console.log(param);console.log(JSON.stringify(param));var res = dcpeng(param, '010001', '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7', '0CoJUm6Qyw8W8jud');resolve(JSON.stringify(res));
})
这里就用到了参数param,param也就是需要传值过来的json对象,因为你不可能获取固定的歌曲id和页码,所以用python写成字典,通过url编码写在param里。
9、这里为何不写成dcpeng(JSON.stringify(param)...)这样呢?因为get传过来的就是字符串,不用json转字符串了。
上图20行的位置那是json转字符串,因为只能返回字符串,返回对象的话会变成显示"[object]"
这两步只是控制台打印,不用管。
10、之后就可以在浏览器中访问数据了,打开网址 http://127.0.0.1:12080/go?group={}&name={}&action={}¶m={}
,这是调用的接口 group和name填写上面注入时候的,action是注册的方法名,param是可选的参数,这里续用上面的例子,网页就是:http://127.0.0.1:12080/go?group=para&name=wangyiyun&action=get_para¶m=rid=R_SO_4_1909604321&threadId=R_SO_4_1909604321&pageNo=1&pageSize=20&cursor=-1&offset=0&orderType=1
11、如上图所示,我们看到了那个变化的参数v的值,直接通过requests库可以发起get请求。
12、现在我们就可以模拟数据,进行请求发送了,整体代码如下所示。
import requests
import json
import urllib.parsesongid = '1908392914'
data = {"rid": f"R_SO_4_{songid}","threadId": f"R_SO_4_{songid}","pageNo": "1","pageSize": "20","cursor": "-1","offset": "0","orderType": "1","csrf_token": ""
}
song_info = str(data)
param = (urllib.parse.quote(song_info))
param_url = f"http://127.0.0.1:12080/go?group=para&name=wangyiyun&action=get_para¶m={param}"
response = requests.get(url=param_url).text
response_json = json.loads(response)
get_para = json.loads(response_json["get_para"])
encText = get_para["encText"]
encSecKey = get_para["encSecKey"]
# print(encText)
# print(encSecKey)data = {'params': encText,'encSecKey': encSecKey
}response = requests.post('https://music.163.com/weapi/comment/resource/comments/get?csrf_token=', data=data)
print(response.text)
运行之后,可以得到网页上的评论数据:
放到json中去解析,和网页上呈现的数据一模一样。
下面是原网页上的原始数据:
13、至此,请求就已经完美的完成了,如果想获取全部网页,构造一个range循环翻页即可实现,改变请求参数中的pageNo即可。
14、如果想抓取不同的歌曲,只需要替换songid这个参数即可。
总结
大家好,我是皮皮。这篇文章主要给大家介绍了jsrpc的实战教程,使用jsrpc工具可以在网络爬虫过程中事半功倍,无需仔细的去扣环境,去一步步逆向,只一个黑盒的模式,我们就拿到了想要的结果,屡试不爽。
初次接触jsrpc的小伙伴可能看不懂,这里还有黑哥录制的一个视频,大家可以对照着视频进行学习,地址:https://www.bilibili.com/video/BV1EQ4y1z7GS
,黑哥全程无声演示,视频的BGM很大,建议大家可以静音播放,领会其中奥义。
关于jsrpc工具,可以点击原文前往获取。
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
------------------- End -------------------
往期精彩文章推荐:
Python网络爬虫之js逆向之远程调用(rpc)免去抠代码补环境简介
一文带你了解Python Socket 编程
盘点一道Python列表合并的基础题目(列表推导式)
手把手教你使用Pandas实现DataFrame分组条件查找值
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
Jsrpc学习——网易云热评加密函数逆向相关推荐
- (数据分析)网易云热评技巧
(数据分析)网易云热评技巧 本文通过Python爬虫获取了网易云9万条热评,通过数据可视化分析其中的规律,同时分析热评最多的用户特征,从中总结出上热评的技巧. 1.数据抓取 数据集的获取是我们进行数据 ...
- Java爬虫——网易云热评爬取
爬取目标网址 : http://music.163.com/#/song?id=409649818 需要爬取信息 : 网易云top13热评 使用之前的 HttpURLConnection 获取 ...
- js版微信测试号推送消息、生日、纪念日、网易云热评、舔狗日记【JavaScript版】保姆级教程 青龙面板做微信测试号推送生日、纪念日
文章目录 微信测试号推送消息 一.申请微信测试号 二.下载nodeJs 1.下载安装包 2.检查是否安装成功 三.设置测试号发送信息的模板 四.编写发送消息代码(必须装好nodeJs) 1.编写代码 ...
- 使用urllib 爬取万条伤感网易云热评
使用urllib 爬取万条伤感网易云热评 import urllib.request import re import ssl import json #抓取一页 def 网易云热评(url):#创建 ...
- java爬取网易云热评并制作词云。
IT小白终于脱离hello world,实现用java爬取网易云热评并制作词云,激动激动激动. 一.自我介绍 二.上代码 1.封装各个model类 2.实现各项功能的service类 3.设计一个制作 ...
- python爬取网易云热评
在爬取了妹子图之后,感觉总想再爬点什么东西增加编程兴趣,因为平时喜欢听歌嘛,然后就想到了爬取网易云热评,一首歌无数个故事23333- 首先打开网易云音乐网页版,找到自己想要爬取的那首歌(我这里搜的是隔 ...
- Scriptable脚本——网易云热评2.0
首发自公众号--曰(读yue)坛 今天我为大家带来新的作品,iOS14桌面组件神器(Scriptable)原创脚本,精美作品分享!喜欢的话就点关注吧!更多脚本正在路上- /************** ...
- JAVA网易云热评接口_网易云音乐热评爬虫(一): 反编译加密参数
由于网易云音乐大部分请求做了混淆加密处理,因此直接用requests请求是行不通.本文以获取歌曲全部评论为例,通过分析网易云的加密过程,来反编译构造加密参数.下面主要介绍下用Python实现加密参数的 ...
- 浅谈Python爬虫(五)【网易云热评爬取实例】
浅谈Python爬虫(五) 目的:爬取网易云歌单所有歌曲的信息及热评 Python环境:3.7 编译器:PyCharm2019.1.3专业版 存储格式:JSON 1.分析网页 进入网易云音乐首页,点击 ...
最新文章
- 把Lumia 610C作为3G路由器
- ibm服务器imm管理方式简介
- Python中表示偶数_蒙特卡洛模拟(Python)深入教程
- angular中的表单验证
- Apache Tomcat 7 Configuration BIO NIO AIO APR ThreadPool
- Android调用系统照相机
- python学习第25天
- Selenium隐藏“Chrome is being controlled by automated test software”
- 苹果审核状态为Metadata Rejected下的问题
- 1837:Balance
- html5 游戏制作教程,【整理】一步一步学做HTML5游戏教程
- 陪审团的人选(Python)
- HTML生日快乐代码 HTML5七夕情人节表白【告白模板】 HTML5七夕情人节表白网页源码 html css javascript
- 英才学院计算机与技术学院院长,信息工程学院计算机应用技术研究院副院长
- char变量能不能存储一个汉字
- 华为 P30 发布,售价近万元:感谢苹果提前暖场
- ps 设计神器,一键生成配色方案!
- 辣鸡打印机出现需要注意/用户干预怎么办
- Android APK+Dex文件反编译及回编译工具 v.1.8.0 测试版
- 币圈丨行情或将持续震荡,三月能走出新的牛市吗?
热门文章
- 想参加IT培训,了解到达内、蜗牛学院、优就业、黑马、善知教育等机构,哪家比较好?
- XCTF-mobile app3
- android 保存图片到手机相册,并通知相册刷新
- ECU BootLoader and programming implementation specification
- Django实训-学生管理系统
- Android 反编译资料整理
- Kafka启用SASL_PLAINTEXT动态配置JAAS文件的几种方式
- 我跳过的坑-解决linux的输入法问题。
- abb式c语言,ABB机器人是用什么语言编程的? ——ABB机器人
- XMLHttpRequest cannot load 的解决方法