抖音直播间数据采集

声明 
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!
常用协议:

常用通信协议有http/https, websocket/wss等等,常用的数据传输协议有json,xml,protobuf,本章内容讲解基于websocket协议和protobuf协议的数据抓取.

websocket与wss的关系类似http和https  websocket采用双向通信模式,客户端与服务器建立连接后,无论是客户端还是服务端都可以随时将数据发送给对方.

一 什么是websocket
1WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)

2它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的

3Websocket是一个持久化的协议

4在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

二 websocket的原理
1websocket约定了一个通信的规范,通过一个握手的机制,客户端和服务器之间能建立一个类似tcp的连接,从而方便它们之间的通信

2在websocket出现之前,web交互一般是基于http协议的短连接或者长连接

3websocket是一种全新的协议,不属于http无状态协议,协议名为"ws"

三 WebSocket 优点:
1较少的控制开销:只需要进行一次握手,携带一次请求头信息即可,后续只传输数据即可,相比 HTTP 每次请求都携带请求头,WebSocket 非常省资源。

2更强的实时性:由于服务器可以主动推送消息,这使得延迟变得可以忽略不计,相比 HTTP 轮询的时间间隔,WebSocket 可以在相同的时间内进行多次传输.

四 websocket与http的关系


相同点:
都是基于tcp的,都是可靠性传输协议

都是应用层协议

不同点:
WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息

HTTP是单向的

WebSocket是需要浏览器和服务器握手进行建立连接的

而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接

五 websocket解决的问题
http存在的问题
http是一种无状态协议,每当一次会话完成后,服务端都不知道下一次的客户端是谁,需要每次知道对方是谁,才进行相应的响应,因此本身对于实时通讯就是一种极大的障碍 http协议采用一次请求,一次响应,每次请求和响应就携带有大量的header头,对于实时通讯来说,解析请求头也是需要一定的时间,因此,效率也更低下 最重要的是,需要客户端主动发,服务端被动发,也就是一次请求,一次响应,不能实现主动发送

websocket的改进
一旦WebSocket连接建立后,后续数据都以帧序列的形式传输。在客户端断开WebSocket连接或Server端中断连接前,不需要客户端和服务端重新发起连接请求。在海量并发及客户端与服务器交互负载流量大的情况下,极大的节省了网络带宽资源的消耗,有明显的性能优势,且客户端发送和接受消息是在同一个持久连接上发起,实现了“真·长链接”,实时性优势明显。

WebSocket有以下特点:
是真正的全双工方式,建立连接后客户端与服务器端是完全平等的,可以互相主动请求。而HTTP长连接基于HTTP,是传统的客户端对服务器发起请求的模式。 HTTP长连接中,每次数据交换除了真正的数据部分外,服务器和客户端还要大量交换HTTP header,信息交换效率很低。Websocket协议通过第一个request建立了TCP连接之后,之后交换的数据都不需要发送 HTTP header就能交换数据,这显然和原有的HTTP协议有区别所以它需要对服务器和客户端都进行升级才能实现(主流浏览器都已支持HTML5)

六 案例:某音直播间数据采集
思路:本地建立websocket通信,通过在浏览器注入js代码实现浏览器端(客户端)与本地(服务端)的数据转发,从而达到采集直播间数据的功能.

python 代码接受浏览器端返回的数据

import websockets
import asyncio
# 发送  加密参数
async def echo(websocket):
    message = '我是发送给客户端的信息'
    # 发送数据
    await  websocket.send(message)
    return  True
 
# 接收  客户端返回的数据
async def recv_msg(websocket):
    while 1:
        # 接收
        resv_text = await websocket.recv()
        print(resv_text)
 
async def main_run(websocket):
    await echo(websocket)
    await recv_msg(websocket)
 
stat_sever = websockets.serve(main_run,'127.0.0.1',9999)
print('成功建立连接')
loop = asyncio.get_event_loop()
loop.run_until_complete(stat_sever)
# 保持长连接 需要不断的监听返回的数据
loop.run_forever()
重点:
重点是如何找到浏览器端返回的加密数据并且找到解密位置然后注入js代码进行数据转发,这里就不贴出具体位置了,提示,从这个入口进入

结果:

总结
出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来.

### 数据采集的方法与工具 作为一款流行的短视频平台,其数据采集需求广泛存在于学术研究、市场分析以及个人兴趣等领域。以下是关于数据采集的相关方法和工具: #### 1. 开源工具 TikTokDownloader 的功能概述 TikTokDownloader 是一个开源项目,旨在提供全面的数据采集解决方案[^1]。它支持多种数据获取方式,具体功能如下: - **无水印下载**:能够下载不带水印的视频或图集。 - **批量操作**:可以批量处理账号发布的视频、喜欢的作品或者收藏的内容。 - **持久化存储**:通过数据库或其他形式保存所采集到的数据。 - **动态封面提取**:支持下载视频对应的动态或静态封面图片。 - **直播推流地址抓取**:可获得直播间的真实播放地址,并调用 `ffmpeg` 实现录制。 运行该工具非常简单,只需双击 `main.exe` 文件启动程序并按照提示进入 Web UI 模式进行交互配置。 #### 2. 使用场景扩展说明 除了上述提到的功能外,此版本还优化了一些细节特性,在最新版 TikTokDownloader 5.3 中进一步提升了用户体验和服务稳定性[^2]。例如改进了多线程并发机制来提高效率;增强了错误日志记录以便于排查问题等。 #### 3. 注意事项 尽管这些工具有助于快速高效地完成特定任务,但在实际应用过程中仍需注意以下几点法律合规性和技术限制方面的要求: - 遵守目标网站的服务条款(SoT),避免因违规爬虫行为引发法律责任; - 对敏感个人信息采取适当保护措施防止泄露风险; - 定期更新依赖库以修复潜在漏洞从而保障整体安全性。 ```python import requests def fetch_douyin_data(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } response = requests.get(url, headers=headers) if response.status_code == 200: return response.json() else: raise Exception(f"Failed to retrieve data: {response.status_code}") ``` 以上代码片段展示了一个简单的 HTTP 请求函数用于访问公开接口获取JSON格式响应内容(仅作示范用途,请勿滥用)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值