python 爬取fcoin比特币交易市场 上文

爬取环境
  • 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)更好的压缩效果
python 爬取fcoin比特币交易市场 上文_第1张图片
image.png
(三)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比特币交易市场爬取思路
python 爬取fcoin比特币交易市场 上文_第2张图片
image.png

这是Fcoin官网交易市场的ft_usdt交易币的实时刷新数据截图

因为fcoin每次进行刷新一次都要反应半天,很容易造成卡死。特别慢(24H交易,坐拥很多炒币大佬)

python 爬取fcoin比特币交易市场 上文_第3张图片
image.png

卡不卡,拼配置或者宽带或者人少的时间段

这就是WebSocket协议,一般ws开头


python 爬取fcoin比特币交易市场 上文_第4张图片
image.png

框柱的数据便是WebSocket协议下的数据
数据实时,数据量小。

python 爬取fcoin比特币交易市场 上文_第5张图片
image.png

查看步骤:选中上面的ws,再选中左侧的ws,选择Frame栏,方形框住的便是,箭头标的带框的红色箭头向下表示服务器发送的数据。

剩下的便是通过查找WebSocket的几个方法进行数据的通信

更多资源请访问:
https://blog.csdn.net/xudailong_blog/article/details/78762262

欢迎光临我的小网站:http://www.00reso.com
陆续优化中,后续会开发更多更好玩的有趣的小工具

你可能感兴趣的:(python 爬取fcoin比特币交易市场 上文)