33 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取WebSocket数据包( 二 )

4.3具体代码实现实现功能:通过while实现循环接收客户端发送的数据,并对客户端发送的数据进行显示并返回给客户端数据,返回给客户端的数据信息后加入时间戳 。新建一个文件server.py 。
import socketimport sysimport timeserversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=socket.gethostname()#获取本地主机名port=9999#绑定端口号serversocket.bind((host,port))#设置最大连接数serversocket.listen(5)while True:print('服务器启动,监听客户端链接')clientsocket,addr=serversocket.accept()print('链接地址:%s' % str(addr))while True:try:data=https://www.huyubaike.com/biancheng/clientsocket.recv(1024)except Exception:print('断开的客户端:',addr)breakprint('客户端发送内容:',data.decode('utf-8'))reply=input('回复:').strip()if not reply:breakmsg=time.strftime('%Y-%m-%d %X')#获取结构化时间戳msg1='[%s]:%s'% (msg,reply)clientsocket.send(msg1.encode('utf-8'))clientsocket.close()serversocket.close()4.4客户端创建一个客户端用来连接以上服务的的服务,使用socket.connect()方法打开一个TCP连接到主机,连接后可以从服务端获取数据,在操作完成后关闭连接 。
具体步骤为:
#创建客户端的套接字client=socket()#尝试连接服务器client.connect()#发送并接收数据client.send()client.recv()#关闭客户端套接字client.close()4.5具体代码实现新建一个文件client.py 。
import socketimport syss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=socket.gethostname()port=9999s.connect((host,port))while True:data= https://www.huyubaike.com/biancheng/input('>>').strip()if not data:breaks.send(data.encode('utf-8'))msg=s.recv(1024)if not msg:breakprint(msg.decode('utf-8'))s.close()4.6测试使用cmd命令行中打开到代码所在文件目录,执行python 服务端文件名.py,再另打开一个cmd命令界面执行 python 客户端文件名.py 。
1.在cmd中运行服务端代码,运行结果,如下图所示:

33 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取WebSocket数据包

文章插图
2.在cmd中运行客户端代码,运行结果,如下图所示:
33 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取WebSocket数据包

文章插图
好了到此就实现了,但是宏哥抓不到包,不知道是不是因为服务端和客户端都在宏哥本地一台电脑的原因,算了宏哥直接网上找了一个在线的演示给大家 。
5.实战抓WebSocket包由于时间关系,宏哥没有尝试将客户端和服务器分开看看是否可以抓到包,然后在网上找了一个地址:http://coolaf.com/tool/chattest   演示给大家 。具体操作步骤如下:
1.Fiddler V4.5以上版本,rules>customize rules,加入如下代码,把websocket通信日志加入log,如下图所示:
33 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取WebSocket数据包

文章插图
2.class Handler 类中添加,添加的代码如下:
static function OnWebSocketMessage(oMsg: WebSocketMessage) {// Log Message to the LOG tabFiddlerApplication.Log.LogString(oMsg.ToString()); }
33 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取WebSocket数据包

文章插图
3.打开PC版的聊天室(宏哥提供的演示地址),并刷新Fiddler,会看到一个WS图标的请求,双击该请求,右边会出现websocket的tab页,如下图所示:
PC版在线聊天,如下图所示:
33 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取WebSocket数据包

文章插图
Fiddler抓的WebSocket包,如下图所示:
33 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取WebSocket数据包

经验总结扩展阅读