爬取环境
- win10
- python3
- scrapy
爬取思路
首先你得先了解以下
- http(https)请求(百科)
- websocket通信协议
- python 模拟websoket客户端
(一)websocket简要介绍
WebSocket是一种在单个TCP连接上进行全双工通讯的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
(二)websoket比http好的优点
- (1)相对较少的控制开销
- (2)更强的实时性
- (3)保持连接状态
- (4)更好的二进制支持
- (5)可以支持扩展
- (6)更好的压缩效果
(三)websoket的应用场景
- 1 直播
- 2 实时聊天
- 3 实时交易平台
- 4 其他
(四)websoket协议
WebSocket 是独立的、创建在 TCP 上的协议。
Websocket 通过 HTTP/1.1 协议的101状态码进行握手。
为了创建Websocket连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为“握手”
(五)websoket握手
客户端请求:
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: example.com
Origin: http://example.com
Sec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==
Sec-WebSocket-Version: 13
服务器响应:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s=
Sec-WebSocket-Location: ws://example.com/
(六)与http字段不一样的地方
Connection必须设置为upgrade,表示客户端希望连接升级
Upgrade字段必须设置为WebSocket,表示希望升级到WebSocket协议
Sec-WebSocket-Key是随机的字符串,服务器端会用这些数据来构造出一个SHA-1的信息摘要。把“Sec-WebSocket-Key”加上一个特殊字符串“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”,然后计算SHA-1摘要,之后进行BASE-64编码,将结果做为“Sec-WebSocket-Accept”头的值,返回给客户端。如此操作,可以尽量避免普通HTTP请求被误认为Websocket协议。
Sec-WebSocket-Version 表示支持的Websocket版本。RFC6455要求使用的版本是13,之前草案的版本均应当弃用
Origin字段是可选的,通常用来表示在浏览器中发起此Websocket连接所在的页面,类似于Referer。但是,与Referer不同的是,Origin只包含了协议和主机名称。
http协议的user-agent,cookie都可以在websocket握手过程中使用
(六)websoket的事件
- on_open : 表示刚刚连接的时候
- onmessage : 表示接受到消息怎么做
- send: 表示给服务器发送消息
- on_close:表示关闭链接
知道这些事件,对于查找js文件中的WebSocket协议是很容易找到的。
(七)fcoin比特币交易市场爬取思路
这是Fcoin官网交易市场的ft_usdt交易币的实时刷新数据截图
因为fcoin每次进行刷新一次都要反应半天,很容易造成卡死。特别慢(24H交易,坐拥很多炒币大佬)
卡不卡,拼配置或者宽带或者人少的时间段
这就是WebSocket协议,一般ws开头
框柱的数据便是WebSocket协议下的数据
数据实时,数据量小。
查看步骤:选中上面的ws,再选中左侧的ws,选择Frame栏,方形框住的便是,箭头标的带框的红色箭头向下表示服务器发送的数据。
剩下的便是通过查找WebSocket的几个方法进行数据的通信
更多资源请访问:
https://blog.csdn.net/xudailong_blog/article/details/78762262
欢迎光临我的小网站:http://www.00reso.com
陆续优化中,后续会开发更多更好玩的有趣的小工具