加密方法远程调用–微博加密参数RPC
该文章以微博登录为案例,简单记录一下今日RPC远程调用成功
什么是RPC?
RPC(Remote Procedure Call) 是远程调用的意思。具体什么概念,在下也不太清楚啊👀
废话不多说,进入正题!
微博登录接口抓包
网站链接: https://weibo.com/login.php, 打开F12
通过rsakv参数,全局搜索
将代码格式化,局部搜索rsakv参数
到这里发现了加密位置,接下来对Js文件进行修改,添加一个WebSocket客户端,让我们可以RPC调用
替换JS文件
找到
点击》切换到Overrides,在本地新建一个文件夹,点击select folder for overrides
选择完文件夹,点击 learn more ,点击同意后,我们就能看到,记得勾选 √ enable local overrides
把未格式化的代码点击save for overrides,接下来我们就可以进行修改了,把格式化后的代码复制粘贴到test文件夹中保存的文件,Ctrl+s保存(微博的index.js文件,每隔一个小时都会进行重命名,所以需要重新覆盖)
!function (){
if(window.flagLX){}
else {
window.weiboLx = makeRequest;
var ws = new WebSocket("ws://127.0.0.1:9999");
window.flagLX = true;
ws.open = function (evt){};
ws.onmessage = function (evt){
var lx = evt.data;
var result = lx.split(",");
var res = window.weiboLx(result[0], result[1], 7, false);
ws.send(JSON.stringify(res));
}}
}();
注入js后,ctrl+s保存。
用python创建一个webSocket服务端
import asyncio
import websockets
import time
async def check_permit(websocket):
for send_text in ['111111111,222',
'222222222,111',
'333333333,444',
'444444444,333',
]:
await websocket.send(send_text)
return True
async def recv_msg(websocket):
while 1:
recv_text = await websocket.recv()
print(recv_text)
async def main_logic(websocket, path):
await check_permit(websocket)
await recv_msg(websocket)
start_server = websockets.serve(main_logic, '127.0.0.1', 9999)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
直接启动python服务
覆盖后js一定要保存刷新一下,调试一下。
调试成功,在点击登录,我们python服务端就会收到参数加密后的值