Python实现websocket连接服务器报rejected WebSocket connection: HTTP 401

1. websockets报HTTP 401解决办法

代码如下:

#!/usr/bin/env python
import asyncio
import websockets
import requestsuri = 'ws://192.168.20.167/websocket'
msg = '''{"type":6,"param":{"businessType":3,"cmd":1,"frequency":200}}'''def login():log_data_dic = {"userName": 'admin', "password": 'admin', "rememberMe": 0}header = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}login_url = 'http://192.168.20.167/login'session = requests.Session()response = session.post(login_url, data=log_data_dic, headers=header)print('response = ', response)async def test():login()async with websockets.connect(uri) as websocket:await websocket.send(msg)while True:response = await websocket.recv()print('response = ', response)asyncio.run(test())

执行后报如下错误:

解决办法:连接服务器时带上cookie,代码如下:

#!/usr/bin/env python
import asyncio
import websockets
import requestsdef login():log_data_dic = {"userName": 'admin', "password": 'admin', "rememberMe": 0}header = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}login_url = 'http://192.168.20.167/login'session = requests.Session()response = session.post(login_url, data=log_data_dic, headers=header)cookie = response.cookiesprint('cookie = ', cookie)return cookieasync def test():cookie = login()uri = 'ws://192.168.20.167/websocket'msg = '''{"type":6,"param":{"businessType":3,"cmd":1,"frequency":200}}'''async with websockets.connect(uri, extra_headers={'Cookie':cookie}) as websocket:await websocket.send(msg)while True:response = await websocket.recv()print('response = ', response)asyncio.run(test())

运行结果:

2. websocket报HTTP 401解决办法

代码如下:

#!/usr/bin/env python
import asyncio
import websocket
import requestsuri = 'ws://192.168.20.167/websocket'
msg = '''{"type":6,"param":{"businessType":3,"cmd":1,"frequency":200}}'''def login():log_data_dic = {"userName": 'admin', "password": 'admin', "rememberMe": 0}header = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}login_url = 'http://192.168.20.167/login'session = requests.Session()response = session.post(login_url, data=log_data_dic, headers=header)cookies = response.cookies.get_dict()access_token = cookies.get('access_token')cookie = f'access_token={access_token}'return cookieasync def test():cookie = login()cookie = f'{cookie}; userName=admin; role=ADMIN; isAuthenticated=true; devType=ue'ws = websocket.WebSocket()ws.connect(uri)ws.send(msg)while True:ret = ws.recv()print(ret)asyncio.run(test())

解决办法:连接服务器是带上cookie,代码如下:

#!/usr/bin/env python
import asyncio
import websocket
import requestsuri = 'ws://192.168.20.167/websocket'
msg = '''{"type":6,"param":{"businessType":3,"cmd":1,"frequency":200}}'''def login():log_data_dic = {"userName": 'admin', "password": 'admin', "rememberMe": 0}header = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}login_url = 'http://192.168.20.167/login'session = requests.Session()response = session.post(login_url, data=log_data_dic, headers=header)cookies = response.cookies.get_dict()access_token = cookies.get('access_token')cookie = f'access_token={access_token}'return cookieasync def test():cookie = login()cookie = f'{cookie}; userName=admin; role=ADMIN; isAuthenticated=true; devType=ue'ws = websocket.WebSocket()ws.connect(uri, cookie=cookie)ws.send(msg)while True:ret = ws.recv()print(ret)asyncio.run(test())

运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性代数|机器学习-P25线性规划和两人零和博弈

文章目录 0. 概述1. 线性规划问题1.1 定义1.2 举例 2. 线性规划中的对偶问题3. 最大流 - 最小割问题4. 两人零和博弈 MIT教授教学视频,讲得比较泛,需要另外学习很多知识补充 0. 概述 线性规划[LP]问题 线性规划是问题为线性求最值,约束也是求…

自动驾驶-机器人-slam-定位面经和面试知识系列01之常考公式推导(01)

李群李代数扰动bundle adjustment 这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。在知乎和牛客也会同步更新,全网…

【SpringBoot】参数传递

1.定义URL变量 RequestMapping("/user/{username}") ResponseBody public String userProfile(PathVariable String username){ return "user:"username; } 2.定义多个URL变量 RequestMapping("/user/{username}/blog/{blogId}") Response…

《计算机网络》(学习笔记)

目录 一、计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络的概念 1.1.2 计算机网络的组成 1.1.3 计算机网络的功能 1.1.4 电流交换、报文交换和分组交换 1.1.5 计算机网络的分类 1.1.6 计算机网络的性能指标 1.2 计算机网络体系结构与参考模型 1.2.1 计算机…

STM32F0-寄存器ADC配置指南

目录 输入方式: 模拟看门狗功能: ADC中断 配置一个Demo 设置时钟 自校准 通道选择 采样时间选择 转换模式选择 断续模式 启动转换 软件触发 外部触发 转换结束 关于DMA 模拟看门狗 ​编辑ADC数据位置​编辑 在STM32F中,ADC可…

AV1技术学习:Loop Restoration Filter

环路恢复滤波器(restoration filter)适用于64 64、128 128 或 256 256 像素块单元,称为 loop restoration units (LRUs)。每个单元可以独立选择是否跳过滤波、使用维纳滤波器(Wiener filter)或使用自导滤波器&#…

pyenv-win | python版本管理,无需卸载当前版本

系统:windows,且已安装git。 使用 pyenv-win 在Windows中管理多个python版本,而无需卸载当前版本。安装步骤如下: 安装 pyenv-win 1. 安装 Git 和 pyenv-win: git clone https://github.com/pyenv-win/pyenv-win.git %USERPRO…

Word 导入导出

在实际的开发过程中,也会遇到导入导出的功能,今天就简单的做一下总结。 1.需求:将下面word 数据导入到数据库并进行存储 在Controller中 RequestMapping(value "/ImportWord")public RawResponseBodyObject ImportWord(HttpServl…

深入解析Linux目录结构及其功能

深入解析Linux目录结构 Linux 系统的目录结构采用层次化设计,从根目录 / 开始逐级扩展,了解和掌握这些目录的作用和内容有助于我们更好地管理和维护系统。本文将深入解析每个常见目录的功能,并提供相关命令和示例。 目录结构概览 根目录 / …

【BUG】已解决:ERROR: No matching distribution found for PIL

ERROR: No matching distribution found for PIL 目录 ERROR: No matching distribution found for PIL 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身&#xff0…

网络安全之扫描探测阶段攻防手段(二)

扫描探测 扫描探测阶段是攻击者对目标网络进行深入了解的关键步骤,同时也是防御者识别潜在威胁和加强安全防护的机会。 攻击端:技术原理和工具 端口扫描: 原理:攻击者使用端口扫描工具来识别目标网络中开放的端口,这…

css大屏设置中间元素四周渐变透明效果

css大屏设置中间元素四周渐变透明效果 四周透明效果: // 设置蒙版上下左右渐变显示mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 10%, rgba(0, 0, 0, 1) 90%, rgba(0, 0, 0, 0) 100%),linear-gradient(to bottom, rgba(0, 0, 0…

《Java初阶数据结构》----5.<二叉树的概念及使用>

前言 大家好,我目前在学习java。之前也学了一段时间,但是没有发布博客。时间过的真的很快。我会利用好这个暑假,来复习之前学过的内容,并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区…

6.6 使用dashboard商城搜索导入模板

本节重点介绍 : 模板商城中搜索模板导入模板修改模板 大盘模板商城地址 免费的 地址 https://grafana.com/grafana/dashboards 搜索模板技巧 详情 导入dashboard 两种导入模式 url导入id导入json文件导入 导入 node_exporter模板 https://grafana.com/grafana/dashboa…

流量录制与回放:jvm-sandbox-repeater工具详解

在软件开发和测试过程中,流量录制与回放是一个非常重要的环节,它可以帮助开发者验证系统在特定条件下的行为是否符合预期。本文将详细介绍一款强大的流量录制回放工具——jvm-sandbox-repeater,以及如何利用它来提高软件测试的效率和质量。 …

Redis常见的数据类型及操作方式

一、通用命令 1)获取redis中所有key keys * 2)删除一个或多个key del key1 key2 ... 3)判断key是否存在 exists key 4)给key添加过期时间 expire key time 5)查看key剩余过期时间 ttl key 6) 查看redis内存…

RuoYi-Vue 全新 Pro 版本:清除url地址栏路由参数

问题:当前页面保存数据后,要清空当前地址栏的参数。 页面A开始跳转到B //页面A跳转this.$router.push({path: "你的path",query: {id: id,},}); 页面B开始接收数据 //页面B,在你需要的地方进行接收 this.$route.query.id 当点…

Python | Leetcode Python题解之第283题移动零

题目&#xff1a; 题解&#xff1a; class Solution:def moveZeroes(self, nums: List[int]) -> None:n len(nums)left right 0while right < n:if nums[right] ! 0:nums[left], nums[right] nums[right], nums[left]left 1right 1

SpringCloud之@FeignClient()注解的使用方式

FeignClient介绍 FeignClient 是 Spring Cloud 中用于声明一个 Feign 客户端的注解。由于SpringCloud采用分布式微服务架构&#xff0c;难免在各个子模块下存在模块方法互相调用的情况。比如订单服务要调用库存服务的方法&#xff0c;FeignClient()注解就是为了解决这个问题的…

汽车免拆诊断案例 | 2014 款上汽名爵 GT 车发动机无法起动

故障现象 一辆2014款上汽名爵GT车&#xff0c;搭载15S4G发动机&#xff0c;累计行驶里程约为18.4万km。该车因左前部发生碰撞事故进厂维修&#xff0c;更换损坏的部件后起动发动机&#xff0c;起动机运转有力&#xff0c;但无着机迹象。用故障检测仪检测&#xff0c;发现无法与…