陌陌直播間彈幕抓取發(fā)送 websocket協(xié)議 c#純源碼

網(wǎng)頁版陌陌直播彈幕協(xié)議抓取和發(fā)送
基于 websocket協(xié)議
具體分析過程就不說了 大家自己F12抓包分析下一目了然 沒有什么難度
我直接上源碼例程
socket協(xié)議連接
彈幕抓取
彈幕發(fā)送
心跳包
各個地方我都備注了

代碼塊
 static ClientWebSocket _webSocket = new ClientWebSocket();
        async static Task Main(string[] args)
        {
            _webSocket = new ClientWebSocket();
            Connect();
            Console.ReadLine();
        }

 /// <summary>
        /// WebSocket客戶端連接
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static async Task Connect()
        {
            CancellationTokenSource t = new CancellationTokenSource();
            try
            {

                Uri uri = new Uri("wss://live-ws.immomo.com/ws/im");
                //var config=new ServerConfig
                await _webSocket.ConnectAsync(uri, t.Token);
                Thread.Sleep(300);
                Console.WriteLine($"鏈接websocket:[{uri}] 完成");
                Task s1 = new Task(Receive, t, t.Token, TaskCreationOptions.LongRunning);
                s1.Start();
                var client_time = "1666113617240";//時間戳 毫秒級
                var momoid = "256654841";//自己的陌陌ID
                var roomid = "1476810196216";//直播間ID
                var token = "236a4f4899725a8e63dc70babfacb936";//登陸憑證 登陸完成在 cookie的 live_web_session_im
                var data = "{\"msg_id\":1,\"client_time\":" + client_time + ",\"type\":\"Sauth\",\"data\":{\"momoid\":\"" + 256654841 + "\",\"roomid\":\"" + roomid + "\",\"role\":6,\"isVisitor\":false,\"token\":\"" + token + "\",\"ua\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36\"}}";
                var bs = Encoding.Default.GetBytes(data);
                await _webSocket.SendAsync(new ArraySegment<byte>(bs), WebSocketMessageType.Text, true, CancellationToken.None);

                //{"msg_id":3,"client_time":1666196718270,"type":"Ping","data":{}} 心跳包內(nèi)容
                //{"msg_id":2,"client_time":1666196713852,"type":"Bili","data":{"text":"6666666666666666666666666666666666666"}} 發(fā)送彈幕包 內(nèi)容
                Console.WriteLine("Send Hello");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"鏈接websocket:[] 失敗", ex.Message);

            }
        }
        private static void Receive(object obj)
        {
            CancellationTokenSource ts = obj as CancellationTokenSource;
            byte[] bs = new byte[1024];
            while (!ts.Token.IsCancellationRequested)
            {
                try
                {
                    ArraySegment<byte> buff = new ArraySegment<byte>(bs, 0, bs.Length);
                    Task<WebSocketReceiveResult> res = _webSocket.ReceiveAsync(buff, ts.Token);
                    if (ts.Token.IsCancellationRequested)
                    {
                        return;
                    }
                    if (WebSocketCloseStatus.NormalClosure == res.Result.CloseStatus)
                    {
                        Console.WriteLine($"websocket:與服務(wù)器斷開鏈接:{res.Result.CloseStatus} --> Desc :{res.Result.CloseStatusDescription}");
                        ts.Cancel();
                        return;
                    }
                    string strData = Encoding.UTF8.GetString(bs, 0, res.Result.Count);
                    Console.WriteLine("收到消息=>" + strData);

                }
                catch (Exception ex)
                {
                    Console.WriteLine("解析或執(zhí)行 websocket:命令失敗", ex);
                }
            }
        }
image.png

代碼一目了然 大家可以自己試試
如果不是用c# 大家用自己會的語言實現(xiàn)即可 代碼格式基本都差不多

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容