wanxu 发表于 2023-5-10 10:27

今天分享一下某Bo的登录参数超简单获取方法

本文章没有任何排版,请各位食客将就使用,还请各位大佬指教我这小白首先放上登录地址,大家都知道地址的,其次推荐大家使用Chrome在保存到本地JS时依旧可以打断点
aHR0cHM6Ly93ZWliby5jb20vbG9naW4ucGhw
我们先抓包

这个请求发起了一个post请求

这是带参数的一个请求名字也刚好叫Login.php
我们分析一下这个参数,在这里参考了一下网上的教程
全局搜索

看到搜索到了一些信息,我们挨个点击去分析,第一个点进去后,我们格式化文档一下,在点一次刷新

可以看到第一个41行是=null了,直接在267和788行打上断点,然后

在点登录时断点卡在了788上,往下跟了两步发现请求的参数全部出现了,(用的微信截图,没办法截鼠标放上的参数,各位自己跟着做到这里然后仔细观察一下吧)
现在我们知道参数是从这里取到加密后的了,往上滑一下找到这个方法

看到我们输入的账号和密码了,a账号,b密码,(c是固定数,d是固定值)这两个参数一直没变假设他们是固定值
参数很多补环境是很恶心的事情,就像我用的C#想补js环境不出问题,还是比较麻烦的,
这样根据网上的参考,我们直接返回到没格式化的JS文件中,替换一下JS,他这个JS文件会每隔一小时重命名一次,也是比较麻烦的
我们对着没格式化的JS文件右键有一个Save for overrides
如果你的没有,首先在资源这个选项卡中切换到Overrides然后添加一个文件夹上,点了2选择文件夹以后会在上边弹出一个通知,获取完整访问权,点击允许

这个时候在点Save for Overrides ,然后我们打开我们保存下来了,格式化一下,然后切换到刚刚 767行,在这一行上我们创建一个WebSocket客户端连接

JS代码
!function()
{
    if(window.flagLx){}
    else{
      window.weiboLX=makeRequest;
      var ws=newWebSocket("ws://127.0.0.1:9998");
      window.flagLx=true;
      ws.open=function(evt){};
      ws.onmessage=function(evt){
            var lx=evt.data;
            var result=lx.split(",");
            var res=window.weiboLX(result,result,7,false);
            ws.send(JSON.stringify(res));
      }
    }
}();


这个时候我们在创建一个服务端,各位根据自己的喜好来使用不同的语言吧,我比较中意C#,现在使用C#来写了
用的第三方Nuget包是Fleck,代码有点潦草我从我代码里抠出来拼装的,各自根据自己顺手的编程语言来写就行
WebSocketServer _server = new WebSocketServer("ws://127.0.0.1:9998");
_server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                  _sockets.Add(socket);
                };

                socket.OnClose = () =>
                {
                  _sockets.Remove(socket);
                };

                socket.OnMessage = message =>//接受消息处理
                {
                  Console.WriteLine(message)
                };

                socket.OnError = error =>
                {
                  
                  throw error;
                };
            });
public void Send(string message)
      {
            foreach (var socket in _sockets)
            {
                socket.Send(message);
            }
      }
//上边这一段放到窗机加载事件或者你看着给一个触发事件了,

//按钮点击发送
private void button2_Click(object sender, EventArgs e)
      {
            socket?.Send("123123,123");
      }






然后我们需要先刷新页面,在网页输入账号密码点登录这样会连接上我们写的服务端了,然后用我们写好的服务端给客户端发送一个(账号,密码)因为我们的JS是根据,来分割的

这个我就随便打一下码了,这样我们就获得到了Post请求的参数,同理可用于某音的直播消息类




wanxu 发表于 2023-5-11 14:30

feiyu361 发表于 2023-5-11 11:31
写了,但连接不上
index.py:46: DeprecationWarning: There is no current event loop
asyncio.get_ev ...

import Asyncio
import websockets
import timeAsync
def check_permit (websocket ) :
#账号列表
for send text in ['111111111111,111','111111111112,112','1111111111113,113','1111111111114,114']
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',9998)
Asyncio.get event_loop() .run_until_complete(start_server)
Asyncio.get_event_loop().run_forever()


代码差不多就这意思,我复制来的,多少可能缺标点符号,需要你自己补充一下了

feiyu361 发表于 2023-5-11 11:31

wanxu 发表于 2023-5-11 11:22
写一个websocket连接JS上这一段就可以了啊

写了,但连接不上
index.py:46: DeprecationWarning: There is no current event loop
asyncio.get_event_loop().run_forever()
就在这里一直等待,我wb的页面也刷新,点击登录,但不行

zjh889 发表于 2023-5-11 00:34

太好了,谢谢大师分享,学习一下!

feiyu361 发表于 2023-5-11 11:05

有没有python版本的呢?

sdieedu 发表于 2023-5-11 11:15

Python脚本 需要

wanxu 发表于 2023-5-11 11:22

feiyu361 发表于 2023-5-11 11:05
有没有python版本的呢?

写一个websocket连接JS上这一段就可以了啊

lihailong123 发表于 2023-5-11 15:24

感谢,很有帮助{:1_893:}

bingG 发表于 2023-5-11 18:54

厉害👍

feiyu361 发表于 2023-5-11 19:01

wanxu 发表于 2023-5-11 14:30
import Asyncio
import websockets
import timeAsync


不错,可以了,谢谢
页: [1] 2
查看完整版本: 今天分享一下某Bo的登录参数超简单获取方法