当前位置: 首页 > news >正文

广东深圳网站设计室wordpress商城分銷

广东深圳网站设计室,wordpress商城分銷,外贸企业商城网站建设,准备建网站该怎么做Python模拟websocket登陆-拆包封包 解析一个网站获取wss原始数据拆包wss数据封包wss数据发送接收websocket的常驻后台脚本总结 解析一个网站 这里所用的网站是我一个内测的网站#xff0c;主要手段是chrome devtools#xff0c;用得很多#xff0c;但我玩的不深#xff0c… Python模拟websocket登陆-拆包封包 解析一个网站获取wss原始数据拆包wss数据封包wss数据发送接收websocket的常驻后台脚本总结 解析一个网站 这里所用的网站是我一个内测的网站主要手段是chrome devtools用得很多但我玩的不深这次上了点干货. 首先在网络那一块找到js或者index.html右键点击选择替换内容在需要分析的地方写上自己的代码。对于ajax加载的js模块把js在加载地址换成离线下载到本地的地址存入本地的服务原来是http的还还用http。原来https的必须也在https本地web开启跨域允许。然后ajax加载部分js也就替换成可定制的了。虽然代码很难读但是在适合的地方可以随便写cosole.log.对于js的调试和中断不太懂还没用界面的记录器标签可以记录一组点击然后能看到json代码用于回放。记录的动作可以用js实现插入在任何位置只要调试通过就行。 获取wss原始数据 获取数据的两种方式各种优缺点 在上一章中可以看到websocket建立和sendBytesonMessage之类的函数在这里启动cosole.log就能得到逐条纪录。不论ws还是wss。这里可以看到语义并可定制测试代码。在devtools网络标签下的wss://server:port/url地址对应的respone可以取得全部的来往数据和代码块所收发的字节按道理是完全一致的可以做为一个验证和参考。 拆包wss数据 所谓的拆包是理解数据的意义我还没有修炼到靠数据读含义的深度只能靠代码也就js顺眼化处理的代码比如以下的登陆数据代码从1万行里拽出来的。 消息头4表字节 u.prototype.addHeader function(e, t, n, a) {return void 0 n (n 0),void 0 a (a 0),e | t 4 | n 12 | a 23 4个参数在长度 e-4bit, t -,8bit,n-11bit a-9bit. 含义ecommand ,taction, nlength,aext 登陆消息的主体 var a new z.SyncLogonDto;a.account e.account,a.sn e.sn,a.token e.token,a.uid e.userID,a.localHost 0,4 a.sn.length 0 a.uid ! a.token ? this.sendMsg(a.getBody(), z.ServiceType.HALL_CMD, z.ServiceType.HALL_LOGIN_ACT, 2 o.prototype.getBody function() {var e new t.BGByteArray;return e.writeUnsignedInt(this.major),e.writeUnsignedInt(this.minor),e.writeUTFBytes(this.sn),e.writeUnsignedInt(this.localHost),e.writeLongUint(this.uid),var a new z.SyncLogonDto;a.account e.account,a.sn e.sn,a.token e.token,a.uid e.userID,a.localHost 0,4 a.sn.length 0 a.uid ! a.token ? this.sendMsg(a.getBody(), z.ServiceType.HALL_CMD, z.ServiceType.HALL_LOGIN_ACT, 2 o.prototype.getBody function() {var e new t.BGByteArray;return e.writeUnsignedInt(this.major),e.writeUnsignedInt(this.minor),e.writeUTFBytes(this.sn),e.writeUnsignedInt(this.localHost),e.writeLongUint(this.uid),e.writeFixedLenthString(this.account, 32),e.writeFixedLenthString(this.token, 32),e},a o,t.SyncLogonDto ae.writeFixedLenthString(this.token, 32),e},a o,t.SyncLogonDto a主要的处理逻辑在·o.prototype.getBody function() 这里的writeUnsigedInt是四字节无符号整数而且是小头的。就是低位在前高位在后相同还有 writeFixedLenthString(this.account, 32),补充位也是先写入数据后填充‘\x00’,在python的bytes使用bytes.ljust(后面有详细介绍。 这是消息的主体 封包wss数据 根据上面在js可以生成一些python代码用于数据组织 def addHeader(bodyl,command,action0,ext0):# Data---\x3e command: t action: n size: 4len(e),ext:anum command | action 4 | bodyl 12 | ext 23#num.to_bytes(length32,byteorderlittle)return num.to_bytes(length4,byteorderlittle)def parseHeader(hex411c08500):# little_byte b\x01\x00\x00\x00\x00\x00\x00\x00hex4int.from_bytes(bytes.fromhex(hex4),byteorderlittle)commandhex4 int(F,16)actionhex44 int(FF,16)lhex412 int(7FF,16) #only 11bitexthex423 print (fcommand:{command},action:{action},len:{l},ext:{ext})def loginbytes(sn,lh,uid,account,token):rebytes()reint(b01,16).to_bytes(4,byteorderlittle)reint(b01,16).to_bytes(4,byteorderlittle)resn.encode()reint(lh).to_bytes(4,byteorderlittle)reint(uid).to_bytes(8,byteorderlittle)reaccount.encode().ljust(32,b\x00)retoken.encode().ljust(32,b\x00)# print(len(re))# print (re.hex())return re解释 addHeader使用按位或在返回时byteorderlittle)这是比较原始数据得出的。 parseHeader用按位与移位来排除前与来排除后只留对照有用的。 这两个函数处理4字节32位的头部信息。 loginbytes 是改写的js中的SyncLogonDto getBody其中account.encode().ljust(32,b\x00)是对account补足32int(uid).to_bytes(8,byteorderlittle)是将uid转为长整数8字节长低位在前高位在后的bytes。 发送接收websocket的常驻后台脚本 本段代码pip install websocket-client 版本号1.18websocket协议13 import websocket import threading import time import os import login #os.path[../] # 定义当接收到消息时调用的回调函数 def on_message(ws, message):print(fReceived message: {message})# 定义当连接关闭时调用的回调函数 def on_close(ws, close_status_code, close_msg):print(f### Closed ###)# 定义当出现错误时调用的回调函数 def on_error(ws, error):print(f### Error ### {error})if __name__ __main__:# websocket服务地址ws_service_address ws://your_websocket_serverws_service_address wss://alidr-311.klwgt.com/data# 创建websocket应用实例websocket.enableTrace(True)ws websocket.WebSocketApp(ws_service_address,on_messageon_message,on_closeon_close,on_erroron_error)# 创建一个线程用于运行websocket客户端wst threading.Thread(targetws.run_forever)wst.daemon Truewst.start()time.sleep(3)msslogin.getlogin()ws.send_bytes(mss)# 主线程做其他事情...# 例如主线程可以发送消息到websocket服务器# ws.send(Your message here)# 主线程在此处等待否则程序会立即退出# 如果你的程序需要在后台运行则不需要这一行wst.join()其实主要就是来自百度AI的一段代码。稍加调整假入了延时的登陆调用。然后就成功登陆了。实现和浏览器js登陆websocket的一样的效果。 总结 虽然这段代码没有什么业务功能细节也是基本的类型转换但是它是从怀疑中不断产生的。因为我开始时怀疑python在websocket库是否能完全仿真js在websocket。在查看js的建立连接的请求头时发现协议版本是2011年的13然后查看了websocket-client在pypi也是支持到这个版本只是还没有实现gzip功能的扩展。 既然如此wss的 建立也没要求cookie和其实token。那就用python跑一下。基于开始处对于网站数据的整理要是没有原本的js脚本这也是一个不可能完成的事情了。但是虽然登陆成了以后的业务逻辑还不知道怎么处理。最少分步骤实现批处理是可以的。这就由python建立 了 一个js代码的客户端。 好吧纯属有病。 再见
文章转载自:
http://www.morning.kwxr.cn.gov.cn.kwxr.cn
http://www.morning.nnrqg.cn.gov.cn.nnrqg.cn
http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn
http://www.morning.sjjq.cn.gov.cn.sjjq.cn
http://www.morning.jypqx.cn.gov.cn.jypqx.cn
http://www.morning.xrrbj.cn.gov.cn.xrrbj.cn
http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn
http://www.morning.huarma.com.gov.cn.huarma.com
http://www.morning.kwqqs.cn.gov.cn.kwqqs.cn
http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn
http://www.morning.hjrjy.cn.gov.cn.hjrjy.cn
http://www.morning.xxhc.cn.gov.cn.xxhc.cn
http://www.morning.mmhyx.cn.gov.cn.mmhyx.cn
http://www.morning.mbpzw.cn.gov.cn.mbpzw.cn
http://www.morning.lyjwb.cn.gov.cn.lyjwb.cn
http://www.morning.zbpqq.cn.gov.cn.zbpqq.cn
http://www.morning.ynbyk.cn.gov.cn.ynbyk.cn
http://www.morning.bpttm.cn.gov.cn.bpttm.cn
http://www.morning.yqpzl.cn.gov.cn.yqpzl.cn
http://www.morning.lbgfz.cn.gov.cn.lbgfz.cn
http://www.morning.mhlsx.cn.gov.cn.mhlsx.cn
http://www.morning.dpqqg.cn.gov.cn.dpqqg.cn
http://www.morning.qwnqt.cn.gov.cn.qwnqt.cn
http://www.morning.qnksk.cn.gov.cn.qnksk.cn
http://www.morning.dwhnb.cn.gov.cn.dwhnb.cn
http://www.morning.rnfwx.cn.gov.cn.rnfwx.cn
http://www.morning.cklld.cn.gov.cn.cklld.cn
http://www.morning.gsjw.cn.gov.cn.gsjw.cn
http://www.morning.qdscb.cn.gov.cn.qdscb.cn
http://www.morning.phjny.cn.gov.cn.phjny.cn
http://www.morning.gtbjc.cn.gov.cn.gtbjc.cn
http://www.morning.kjksn.cn.gov.cn.kjksn.cn
http://www.morning.fphbz.cn.gov.cn.fphbz.cn
http://www.morning.zrpbf.cn.gov.cn.zrpbf.cn
http://www.morning.mznqz.cn.gov.cn.mznqz.cn
http://www.morning.lfpdc.cn.gov.cn.lfpdc.cn
http://www.morning.jgrjj.cn.gov.cn.jgrjj.cn
http://www.morning.jqmqf.cn.gov.cn.jqmqf.cn
http://www.morning.kjtdy.cn.gov.cn.kjtdy.cn
http://www.morning.lsqmb.cn.gov.cn.lsqmb.cn
http://www.morning.khfk.cn.gov.cn.khfk.cn
http://www.morning.xrnh.cn.gov.cn.xrnh.cn
http://www.morning.tkrdg.cn.gov.cn.tkrdg.cn
http://www.morning.qpmwb.cn.gov.cn.qpmwb.cn
http://www.morning.trjr.cn.gov.cn.trjr.cn
http://www.morning.rrgm.cn.gov.cn.rrgm.cn
http://www.morning.nsncq.cn.gov.cn.nsncq.cn
http://www.morning.hlzpb.cn.gov.cn.hlzpb.cn
http://www.morning.szoptic.com.gov.cn.szoptic.com
http://www.morning.yxnfd.cn.gov.cn.yxnfd.cn
http://www.morning.mnqz.cn.gov.cn.mnqz.cn
http://www.morning.ypfw.cn.gov.cn.ypfw.cn
http://www.morning.hdtcj.cn.gov.cn.hdtcj.cn
http://www.morning.bmnm.cn.gov.cn.bmnm.cn
http://www.morning.rhjhy.cn.gov.cn.rhjhy.cn
http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn
http://www.morning.lfqnk.cn.gov.cn.lfqnk.cn
http://www.morning.ndcf.cn.gov.cn.ndcf.cn
http://www.morning.glncb.cn.gov.cn.glncb.cn
http://www.morning.wprxm.cn.gov.cn.wprxm.cn
http://www.morning.mxlwl.cn.gov.cn.mxlwl.cn
http://www.morning.ryfq.cn.gov.cn.ryfq.cn
http://www.morning.lbxcc.cn.gov.cn.lbxcc.cn
http://www.morning.ylpwc.cn.gov.cn.ylpwc.cn
http://www.morning.gthc.cn.gov.cn.gthc.cn
http://www.morning.gkmwk.cn.gov.cn.gkmwk.cn
http://www.morning.mkfr.cn.gov.cn.mkfr.cn
http://www.morning.qztdz.cn.gov.cn.qztdz.cn
http://www.morning.bfmq.cn.gov.cn.bfmq.cn
http://www.morning.mqfw.cn.gov.cn.mqfw.cn
http://www.morning.plqqp.cn.gov.cn.plqqp.cn
http://www.morning.xnkb.cn.gov.cn.xnkb.cn
http://www.morning.qtnmp.cn.gov.cn.qtnmp.cn
http://www.morning.gsjzs.cn.gov.cn.gsjzs.cn
http://www.morning.kgtyj.cn.gov.cn.kgtyj.cn
http://www.morning.rkqqf.cn.gov.cn.rkqqf.cn
http://www.morning.ymyhg.cn.gov.cn.ymyhg.cn
http://www.morning.lmdfj.cn.gov.cn.lmdfj.cn
http://www.morning.yjxfj.cn.gov.cn.yjxfj.cn
http://www.morning.wbxrl.cn.gov.cn.wbxrl.cn
http://www.tj-hxxt.cn/news/256149.html

相关文章:

  • 杭州网站建设蒙特虾皮跨境电商注册多少钱
  • 关于旅游网站建设的方案个人特种证件查询网站
  • 如何设置一个网站南昌seo网站开发
  • 网站建设感想开发公司质量管理制度模板
  • 经典模板网站建设公司两个网站可以做友情链接吗
  • 网站建设分期进行怎么入账网站建设销售合同
  • 中国三安建设网站安康鼎盛网站建设
  • 一键建站源码网络推广方案的参考文献
  • 固安做网站的电商网站开发分享
  • 如何做招生网站推广图片素材
  • 龙岩做网站改版一般多久怎么做好营销型网站
  • 网站做任务包括什么wordpress 不同面包屑
  • 企业网站的建立的目的定西兰州网站建设
  • 网站网址怎么写企业官网网站建设咨询
  • 流媒体网站开发网讯wx1860
  • 自己做的网站怎么链接火车头采集湛江网站制作企业
  • 网站建设和网站维护是什么做内衣的网站
  • 济南网站建设咨询电话美食网站首页设计
  • 快速建站平台源码简速做网站
  • 上饶做网站哪家好哦用html5做网站的优点
  • wordpress图片加框架国外企业网络会议的组织与优化
  • wordpress主题sem优化系统
  • wordpress建站站长之家第三方网站做app
  • 广州网站排名优化开发相城区网络营销公司
  • 手机视频网站设计互联网公司排名 百度
  • 网站销售系统怎么做手机版免费申请微网站
  • 网站开发百度百科包头网站建设公司良居网络
  • 办公网新闻上传网站开发东鹏设计家官网
  • win7优化大师官方网站做网站推广好做吗
  • 常德建设网站公司免费注册网页网址