点击上方“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={}&param={} ,这是调用的接口 group和name填写上面注入时候的,action是注册的方法名,param是可选的参数,这里续用上面的例子,网页就是:http://127.0.0.1:12080/go?group=para&name=wangyiyun&action=get_para&param=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&param={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学习——网易云热评加密函数逆向相关推荐

  1. (数据分析)网易云热评技巧

    (数据分析)网易云热评技巧 本文通过Python爬虫获取了网易云9万条热评,通过数据可视化分析其中的规律,同时分析热评最多的用户特征,从中总结出上热评的技巧. 1.数据抓取 数据集的获取是我们进行数据 ...

  2. Java爬虫——网易云热评爬取

    爬取目标网址 :   http://music.163.com/#/song?id=409649818 需要爬取信息 :   网易云top13热评 使用之前的 HttpURLConnection 获取 ...

  3. js版微信测试号推送消息、生日、纪念日、网易云热评、舔狗日记【JavaScript版】保姆级教程 青龙面板做微信测试号推送生日、纪念日

    文章目录 微信测试号推送消息 一.申请微信测试号 二.下载nodeJs 1.下载安装包 2.检查是否安装成功 三.设置测试号发送信息的模板 四.编写发送消息代码(必须装好nodeJs) 1.编写代码 ...

  4. 使用urllib 爬取万条伤感网易云热评

    使用urllib 爬取万条伤感网易云热评 import urllib.request import re import ssl import json #抓取一页 def 网易云热评(url):#创建 ...

  5. java爬取网易云热评并制作词云。

    IT小白终于脱离hello world,实现用java爬取网易云热评并制作词云,激动激动激动. 一.自我介绍 二.上代码 1.封装各个model类 2.实现各项功能的service类 3.设计一个制作 ...

  6. python爬取网易云热评

    在爬取了妹子图之后,感觉总想再爬点什么东西增加编程兴趣,因为平时喜欢听歌嘛,然后就想到了爬取网易云热评,一首歌无数个故事23333- 首先打开网易云音乐网页版,找到自己想要爬取的那首歌(我这里搜的是隔 ...

  7. Scriptable脚本——网易云热评2.0

    首发自公众号--曰(读yue)坛 今天我为大家带来新的作品,iOS14桌面组件神器(Scriptable)原创脚本,精美作品分享!喜欢的话就点关注吧!更多脚本正在路上- /************** ...

  8. JAVA网易云热评接口_网易云音乐热评爬虫(一): 反编译加密参数

    由于网易云音乐大部分请求做了混淆加密处理,因此直接用requests请求是行不通.本文以获取歌曲全部评论为例,通过分析网易云的加密过程,来反编译构造加密参数.下面主要介绍下用Python实现加密参数的 ...

  9. 浅谈Python爬虫(五)【网易云热评爬取实例】

    浅谈Python爬虫(五) 目的:爬取网易云歌单所有歌曲的信息及热评 Python环境:3.7 编译器:PyCharm2019.1.3专业版 存储格式:JSON 1.分析网页 进入网易云音乐首页,点击 ...

最新文章

  1. 把Lumia 610C作为3G路由器
  2. ibm服务器imm管理方式简介
  3. Python中表示偶数_蒙特卡洛模拟(Python)深入教程
  4. angular中的表单验证
  5. Apache Tomcat 7 Configuration BIO NIO AIO APR ThreadPool
  6. Android调用系统照相机
  7. python学习第25天
  8. Selenium隐藏“Chrome is being controlled by automated test software”
  9. 苹果审核状态为Metadata Rejected下的问题
  10. 1837:Balance
  11. html5 游戏制作教程,【整理】一步一步学做HTML5游戏教程
  12. 陪审团的人选(Python)
  13. HTML生日快乐代码 HTML5七夕情人节表白【告白模板】 HTML5七夕情人节表白网页源码 html css javascript
  14. 英才学院计算机与技术学院院长,信息工程学院计算机应用技术研究院副院长
  15. char变量能不能存储一个汉字
  16. 华为 P30 发布,售价近万元:感谢苹果提前暖场
  17. ps 设计神器,一键生成配色方案!
  18. 辣鸡打印机出现需要注意/用户干预怎么办
  19. Android APK+Dex文件反编译及回编译工具 v.1.8.0 测试版
  20. 币圈丨行情或将持续震荡,三月能走出新的牛市吗?

热门文章

  1. 想参加IT培训,了解到达内、蜗牛学院、优就业、黑马、善知教育等机构,哪家比较好?
  2. XCTF-mobile app3
  3. android 保存图片到手机相册,并通知相册刷新
  4. ECU BootLoader and programming implementation specification
  5. Django实训-学生管理系统
  6. Android 反编译资料整理
  7. Kafka启用SASL_PLAINTEXT动态配置JAAS文件的几种方式
  8. 我跳过的坑-解决linux的输入法问题。
  9. abb式c语言,ABB机器人是用什么语言编程的? ——ABB机器人
  10. XMLHttpRequest cannot load 的解决方法