技术心得:快手的小视频爬取

简介: 技术心得:快手的小视频爬取

一.配置好fiddler和手机


 让手机能够通过fiddler代理访问网络


二.抓包


  打开快手APP,Fiddler会快速显示很多信息,这些都是手机传送或者接收到的信息。可以逐个包点开,以json形式查看是否是我们需要的内容,如下图所示:


  这时可以看到,有一个包里显示了很多信息,包括视频的标题,发布者,再往下拉,发现里面包含很多叫做“main_mv_url"的标签,复制其中一个标签后的url到浏览器,发现浏览器下载了一个mp4格式的视频,点开视频,就是我们需要的。为了让列表中只显示我们需要的包,让视图更清晰,可以用过滤器,只显示URL中含/rest/n/feed/的内容


  回到Fiddler,看之前那个包的头(Fiddler右上窗口),上面有个url,可以复制到浏览器会发现打开的不是和Fiddler右下角一样的json界面,而是显示服务器繁忙,因为这个url是不完整的。注意右上窗口最后一行有个“type=......”这其实是完整url的后半部分,要把它拼接到第一行POST url的后面,并且以&连接。把完整的url再复制到浏览器,得到和Fiddler右下窗口类似的内容(不是完全一样,因为视频内容会更新),ok


  再观察“type=...”这串字符,可以多抓几个包对比一下,发现count后面跟着的数字是不一样的,即每个json里所含视频个数不一样。平均每个json中含有20个视频的下载链接。page后面的数字就代表页数,在快手界面不断的往下滑,隔一小段时间会有另一个包,可以发现page后的数字是递增的。NStokensig和sig后跟的一串数字是没有规律可循的,要破解快手APP的代码才能知晓。所以无法掌握每个json的url变化规律,所以若是要抓取20个以上的视频,只能通过在快手app页面上往下滑动,抓包,copy完整的url到文本文件再用程序进行下载。


代码:


#!/usr/bin/env python


# -- coding: utf-8 --


#author tom


import pprint


import requests


import json


import time


import random


class Kuaishouspider:


#这个是抓包抓到的数据请求url,要和后面的type用&拼接起来


def //代码效果参考:http://www.lyjsj.net.cn/wz/art_23482.html

init(self):

self.url=''


self.headers={


'Content-Type': 'application/x-www-form-urlencoded',


'Host': 'api.ksapisrv.com',


'Accept-Language': 'zh-Hans-CN;q=1'


}


#抓包里面的数据


self.data={


'client_key':'3c2cd3f3',


'coldStart':'false',


'count':'20',


'country_code':'cn',


'id':'25',


//代码效果参考:http://www.lyjsj.net.cn/wx/art_23480.html

'language':'zh-Hans-CN;q=1',


'pv':'false',


'refreshTimes':'2',


'sig': '518db63518ffba8fca5c70724750dc95',


'source':'1',


'type':'7'


}


self.count=0


def kuaishou_request(self):


while True:


#用来计数的


self.count+=1


#返回的json数据,我们从里面解析出视频的uerl


res=requests.post(self.url,data=self.data,headers=self.headers)


list=res.json()【'feeds'】


#list里面装着每一个视频的详细信息,包括我们所需要的视频url


for info in list:


pprint.pprint(info)


print('描述%s'%info【'caption'】)


print('视频连接%s'%info【'main_mv_urls'】【0】【'url'】)


print('作者%s'%info【'user_name'】)


print('id%s'%info【'user_id'】)


//代码效果参考:http://www.lyjsj.net.cn/wx/art_23478.html

print('第%s次抓取完成'%self.count)

time.sleep(random.randint(500,700))


if name == 'main__':


ks=Kuaishouspider()


ks.kuaishou_request()


代码

相关文章
|
存储 安全 机器人
如何下载阿里云视频点播数据
如何下载阿里云视频点播(VOD)数据
1285 0
|
12月前
|
供应链 监控 API
推荐几个好用的电商API接口(淘宝天猫丨京东1688商品详情数据接口)
本文推荐淘宝、京东、1688等电商平台官方商品详情API,涵盖功能、优势及Python调用示例,助力开发者高效实现价格监控、库存管理与数据分析,附使用注意事项,助你合规快速集成。
3068 0
|
7月前
|
人工智能 Linux API
保姆级图文教程!OpenClaw(阿里云/Win11/Mac/Linux)部署配置百炼API+内容创作自动化工作流搭建+FAQ
“跟风装了OpenClaw(小龙虾),结果玩了两天就吃灰”——这是很多新手的共同经历。作为开源AI Agent框架,OpenClaw本应是24小时待命的“全能员工”,能写文案、找热点、配图排版,但多数人装完后面对复杂界面和一堆技能,要么不会用,要么用不上,硬生生把开源神器用成了高级聊天框。
2218 1
|
SQL 前端开发 数据可视化
如何使用 Workbench 远程连接到 MySQL 数据库 -MySQL Workbench 使用教程
MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库 GUI 管理工具,我们可以在自己的计算机上,使用图形化界面(GUI)远程管理 MySQL 数据库。有关 MySQL 远程管理软件,你可以选择 Windows 下的 HeidiSQL,MacOS 下的 Sequel Ace 或者 MySQL 官方推出的跨平台客户端 MySQL Workbench
5079 1
短视频脚本,分镜头脚本插件,自动刷广告工具分享
支持多平台配置化操作(抖音/快手) 包含智能广告识别跳过模块
|
编解码
发现一款免费的网页视频下载神器
免费的网页视频下载神器
6668 0
|
数据可视化 开发者 Python
Python GUI开发:Tkinter与PyQt的实战应用与对比分析
【10月更文挑战第26天】本文介绍了Python中两种常用的GUI工具包——Tkinter和PyQt。Tkinter内置于Python标准库,适合初学者快速上手,提供基本的GUI组件和方法。PyQt基于Qt库,功能强大且灵活,适用于创建复杂的GUI应用程序。通过实战示例和对比分析,帮助开发者选择合适的工具包以满足项目需求。
1459 7
|
弹性计算 网络安全
阿里云服务器更换公网IP地址的两种方法
阿里云服务器更换公网IP地址的两种方法
2772 0
阿里云服务器更换公网IP地址的两种方法
|
监控 安全 Cloud Native
企业网络架构安全持续增强框架
企业网络架构安全评估与防护体系构建需采用分层防御、动态适应、主动治理的方法。通过系统化的实施框架,涵盖分层安全架构(核心、基础、边界、终端、治理层)和动态安全能力集成(持续监控、自动化响应、自适应防护)。关键步骤包括系统性风险评估、零信任网络重构、纵深防御技术选型及云原生安全集成。最终形成韧性安全架构,实现从被动防御到主动免疫的转变,确保安全投入与业务创新的平衡。
1274 2
|
存储 缓存 安全
Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?
Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?
1522 0