大家好,我是皮皮。前几天给大家分享jsrpc入门,python网络爬虫js逆向远程调用(rpc)不挖代码补环境,实战篇,jsrpc学习-网易云热点评加密函数逆向,Jsrpc学习——对cookie变化的网站破解教程感兴趣的小伙伴可以点此文章前往。今天给大家带来一份jsrpc实战教程,让大家加深对jsrpc的理解和理解。我们今天介绍的这个网站是一个cookie参数不变但是加密参数Sign变了的网站。让我们用jsrpc破解吧!1、这里使用的网址是87aed0b6bc8cb687d63dd7eee0f64d38,经过MD5加密。2、需要提取100个网页中的数字,然后求和。3、打开浏览器抓包,然后断点调试,点击右侧CallStack中的项,找到加密函数,里面的值对应请求参数即可确定。4.最后发现了一堆看不懂的东西。5.仔细搜索,发现加密函数在这里。6、之后可以在控制台输入命令window.dcpeng=window.get_sign,其中window.get_sign是加密函数。注意:这个地方很重要。很多时候我们会写ct.update(),这样会出问题!加括号就是赋值结果,不加就是给整个函数赋值!有千差万别。7.关闭网页调试模式。注意:这个地方很重要。很多情况下,不关闭是无法注入ws的!8、此时在本地双击编译好的文件win64-localhost.exe启动服务。9、然后在控制台中注入ws,即将JsEnv.js文件的所有内容复制粘贴到控制台中(注意有时候需要解除断点)。10.要连接到通信,请输入命令vardemo=newHlclient("ws://127.0.0.1:12080/ws?group=para&name=test");11.然后继续输入命令://注册一个方法一个参数get_v是方法名,//第二个参数是函数,resolve中的值是想要的值(发送到服务器)//param是一个可以传的参数,可以忽略demo.regAction("get_para",function(resolve){dcpeng();varres=window.signresolve(res);})可能有些朋友会觉得window.sign奇怪明明在变量列表里,为什么我们要用window.get_sign()就可以得到。会不会是window.get_sign()和window.sign返回的值一样?事实上,窗口就是整个世界。它只是声明列表对象中有一个签名等于全局符号。这个全局标志的值是通过window.get_sing()获取的。dcpeng()是一个函数,里面写的最终结果是window.sign=window.get_sign(),没有return。12、之后就可以在浏览器中访问数据了,打开网址http://127.0.0.1:12080/go?group={}&name={}&action={}?m={},这是callinginterface注入时填写上面的group和name,action为注册的方法名,param为可选参数。这里我们继续使用上面的例子。网页为:http://127.0.0.1:12080/go?group=para&name=test&action=get_para13。如上图所示,我们已经看到改变后的参数v的值,可以直接通过requests库发起get请求。14.现在我们可以模拟数据并发送请求了。15.把复制的内容丢在这里粘贴:http://tool.yuanrenxue.com/curl16。然后将右边的代码复制到Pycharm中使用即可,非常方便。17、之后就可以构造请求,添加一个整体循环,然后获取翻页的内容。整体代码如下。importrequestsimportjsoncookies={'session':'6c78df1c-37aa-4574-bb50-99784ffb3697.Qcl0XN6livMeZ-7tbiNe-Ogn8L4','v':'A7s8gqX6XgjWtmKFwCNKPNdQSpQgEM9-ySWTzq14lzDRLtVKNeBfYtn0IxW-',}headers={'Connection':'keep-alive','接受':'application/json,text/javascript,*/*;q=0.01','X-Requested-With':'XMLHttpRequest','User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/97.0.4692.99Safari/537.36Edg/97.0.1072.69','Content-Type':'application/x-www-form-urlencoded;charset=UTF-8','Origin':'http://spider.wangluozhe.com','Referer':'http://spider.wangluozhe.com/challenge/2','Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',}all_data=[]forpage_numinrange(1,101):sign_url='http://127.0.0.1:12080/go?group=para&name=test&action=get_para'sign=requests.get(url=sign_url).json()["get_para"]#print(sign)data={'page':f'{page_num}','count':'10','_signature':sign}print(f'Crawleringpage{page_num}')response=requests.post('87aed0b6bc8cb687d63dd7eee0f64d38',headers=headers,cookies=cookies,data=data,verify=False).json()foriteminresponse["data"]:all_data.append(item["value"])#print(item["value"])print(sum(all_data))运行结果如上图所示,与网页上呈现的数据完全一致。18、至此,请求已经完美完成。如果想得到所有的网页,可以构造一个范围循环来翻页。17.欢迎大家来挑战这个话题。我已经挑战成功了,等你来战!最后,大家好,我是皮皮。本文主要介绍jsrpc的实战教程。在网页爬取过程中使用jsrpc工具可以事半功倍。无需仔细查看环境,一步步逆向。只用一个黑盒模型,我们就可以得到我们想要的。结果,它已经过尝试和测试。
