大家好,我是皮皮。前几天跟大家分享一下jsrpc的介绍,Python网络爬虫的js反向远程调用(rpc)不挖代码补充一下环境的介绍。感兴趣的朋友可以点击本文前往。今天给大家带来一个jsrpc实战教程,Jsrpc学习-换cookie网站破解教程,让大家不断加深对jsrpc的理解和理解。下面是具体的操作过程,不懂的朋友可以私信我。1、因为网易云音乐热评的加密不是在cookie上,而是参数加密,所以这里不需要hookcookie。2、之前知道网易云音乐热评的加密存在于下图的位置,也就是功能窗口。xp8h.md),bsR1x(["Love","Girl","Frightened","Laughing"]))3.找到AES加密的函数后,赋一个自己名字的全局变量,然后转发加密向上。然后可以在控制台输入命令window.dcpeng=window.asrsea,其中window.asrsea是加密函数。注意:这个地方很重要。很多时候我们会写ct.update(),这样会出问题!加括号就是赋值结果,不加就是给整个函数赋值!有千差万别。4.关闭网页调试模式。注意:这个地方很重要。很多情况下,不关闭是无法注入ws的!5、此时在本地双击编译好的文件win64-localhost.exe启动服务。6、之后,在控制台中注入ws,即将JsEnv.js文件的所有内容复制粘贴到控制台中(注意有时需要解除断点)。7、连接通讯,输入命令vardemo=newHlclient("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));varres=dcpeng(param,'010001','00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7','0CoJUm6Qyw8W8jud');resolve(JSON.stringify(res));})Theparameterparamisusedhere,paramisthejsonobjectthatneedstobepassedinvalue,becauseyoucan't得到一个固定的songid和pagenumber,所以在python中写成字典,在param中写成url编码。9、这里为什么不写成dcpeng(JSON.stringify(param)...)?因为get传过来的是字符串,不需要把json转成字符串。上图中第20行的位置是json到字符串的转换,因为只能返回字符串,如果返回对象,会显示“[object]”。这两步只是控制台打印,不用管。10、之后就可以在浏览器中访问数据了,打开网址http://127.0.0.1:12080/go?group={}&name={}&action={}?m={},这是callinginterfaceGroup和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=111,如上图所示,我们看到改变后的参数v的值,我们可以直接通过requests库发起get请求。12.现在我们可以模拟数据并发送请求了。整体代码如下。importrequestsimportjsonimporturllib.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).textresponse_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.至此,请求已经完美完成。如果想获取所有的网页,可以通过构造一个范围循环,改变请求参数中的pageNo来实现。14、如果要抓取不同的歌曲,只需要更换songid参数即可。Summary大家好,我是皮皮。本文主要介绍jsrpc的实战教程。在网页爬取过程中使用jsrpc工具可以事半功倍。无需仔细查看环境,一步步逆向。只用一个黑盒模型,我们就可以得到我们想要的。结果,它已经过尝试和测试。刚接触jsrpc的朋友可能不太理解。这是黑哥录制的视频。你可以从视频中学习。地址:https://www.bilibili.com/video/BV1EQ4y1z7GS,视频的BGM很大,建议大家可以静静播放,了解其中的含义。
