接入Websocket,自动接收CSDN短消息

news/2024/12/23 1:37:04/

最近在研究Websocket功能,本来想接入抖音和快手的弹幕功能,以及短消息功能。

在了解的过程中,也开发了一些测试项目。

这不是,就把CSDN的短消息项目给弄出来了。

直接上代码:

# !/usr/bin python3
# -*- encoding=utf-8 -*-
# Description : 
# Author  : 
# @Email : 
# @File : csdn.py
# @Time : 2023-09-05 15:18:58
# @Project : live_coreimport requests
import websocket
import threading
import time
import json
import logging
import reclass CSDN(object):user_name = ''device_id = ''cookie = ''def init_wws(self, cookie):try:self.cookie = cookieself.user_name = re.search('UserName=(.*?);', cookie).group(1)self.device_id = re.search('uuid_tt_dd=(.*?);', cookie).group(1)except Exception as e:logging.error('错误'.format(e.args))def _connect_data(self):_url = 'https://bizapi.csdn.net/im-manage/v1.0/dispatch/do'_h = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36','Cookie': self.cookie}_d = {'appId': "CSDN-PC",'channelType': "privateMsg",'deviceId': self.device_id,'groupId': "CSDN-private-MSG",'linkType': 1,'token': "",'userId': self.user_name}_req = requests.post(_url, headers=_h, json=_d)return _req.json()def _on_open(self, ws):_body = self._connect_data()# print(_body.get('data'))_body_data = _body.get('data')_data = {'body': {'userId': self.user_name,'appId': 'CSDN-PC','imToken': _body_data.get('imToken'),'groupId': 'CSDN-private-MSG'},'cmdId': 2,'isZip': 0,'ver': '1.0'}ws.send(json.dumps(_data))threading.Thread(target=self._keep_heart_beat, args=(ws,), daemon=True).start()def _keep_heart_beat(self, ws: websocket.WebSocketApp):while True:time.sleep(5)_payload = {'cmdId': 1}ws.send(json.dumps(_payload))def _on_message(self, ws: websocket.WebSocketApp, message):logging.info(message)def _on_error(self, ws: websocket.WebSocketApp, error):logging.error(error)def _on_close(self, ws):logging.info('close')def wss_start(self):websocket.enableTrace(False)ws = websocket.WebSocketApp('wss://im-linkserver-66.csdn.net/', on_message=self._on_message, on_error=self._on_error, on_close=self._on_close,on_open=self._on_open)ws.run_forever()if __name__ == '__main__':LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT)# cookies 这里填CSDN的Cookies_c = ''_csdn = CSDN()_csdn.init_wws(_c)_csdn.wss_start()

 运行结果如下:


http://www.ppmy.cn/news/1099306.html

相关文章

MyBatis数据库操作

文章目录 前言一、MyBatis的各种查询功能1.查询一个实体类对象2.查询一个List集合3.查询单个数据4.查询一条数据为map集合5.查询多条数据为map集合方法一方法二 6.测试类 二、特殊SQL的执行1.模糊查询2.批量删除3.动态设置表名5.添加功能获取自增的主键6.测试类 三、自定义映射…

More Effective C++学习笔记(6)

目录 条款32:在未来时态下发展程序条款33:将非尾端类设计为抽象类条款34:如何在同一个程序中结合C和C条款35:让自己习惯于标准的C语言 条款32:在未来时态下发展程序 “事情总是会改变”是一个事实,因此我们…

基于STM32F103 实现按键状态机

文章目录 开发板开发环境前言按键消抖按键硬件原理图软件延时实现思路 实验目的代码按键状态按键信息按键相关定义按键底层配置及状态获取 总结 开发板 正点原子STM32F103ZET6战舰 开发环境 stm32cubeMX Clion 前言 在单片机使用按键时,为了消除按键的抖动&…

Linux使用docker安装elasticsearch-head

一、elasticsearch-head的安装启动 #下载镜像 docker pull alivv/elasticsearch-head #启动 docker run -d --name eshead -p 9100:9100 alivv/elasticsearch-head 查看日志 docker logs -f eshead 出现如下证明启动成功 浏览器访问9100端口,出现以下页面也说明…

js对象转json文件

目录 需求1.首先寻找类似需求的数据2.对数据进行转换3.将转换后的数据转为json文件4.完整代码 需求 需求:在做项目时,遇到了需要制作地址列表的功能,这一般都会用到一些开源的组件库,但是有个问题是不同组件库之间的城市列表数据结…

【Linux】网络编程网络基础(C++)

目录 一、计算机网络背景 二、认识 "协议" 三、网络协议初识 【3.1】协议分层 【3.2】OSI七层模型 【3.3】TCP/IP五层(或四层)模型 四、网络传输基本流程 【4.1】网络传输流程图 【4.2】数据包封装和分用 五、网络中的地址管理 一、计算机网络背景 【独立…

C++11新特性⑤ | 仿函数与lambda表达式

目录 1、引言 2、仿函数 3、lambda表达式 3.1、lambda表达式的一般形式 3.2、返回类型说明 3.3、捕获列表的规则 3.4、可以捕获哪些变量 3.5、lambda表达式给编程带来的便利 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...&a…

【送书活动】全网超50万粉丝的Linux大咖良许,出书了!

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…