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

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

一.配置好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()


代码

相关文章
|
安全 测试技术 数据库
OWASP ZAP 工具简介
OWASP ZAP 工具简介
751 0
OWASP ZAP 工具简介
|
存储 Android开发 Python
使用 MitmProxy 自动抓取微信公众号阅读数、点赞和再看数据(一)
某天接到一个需要抓取某某微信公众的所有历史文章的阅读数、点赞和再看数据的需求。 为了解放双手,就用 Python 代码撸一个,选择 MitmProxy 代理作为抓包工具,因为它可以使用 Python 代码监听抓取到的 url,用于自动获取 cookie 等场景。
1997 0
使用 MitmProxy 自动抓取微信公众号阅读数、点赞和再看数据(一)
|
数据采集 小程序 Python
搞定短视频!批量下载快手视频(附源码)
相信大家都接触了短视频平台,比如某音、某手等平台,竟然大家都熟悉了,那么今天辰哥分享的技术是:在某手上搜索视频,并实现下载!
1480 0
|
7月前
|
人工智能 JavaScript 前端开发
通义灵码极好
通义灵码是阿里云推出的一款AI编程助手,基于大模型技术,支持多种编程语言,提供智能代码补全、优化建议、Bug诊断等功能,显著提升编码效率和代码质量。本文详细评测其核心功能,对比GitHub Copilot,并推荐给国内开发者及阿里云生态用户。评分:4.5/5。
428 1
通义灵码极好
|
6月前
|
缓存 监控 搜索推荐
【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
本文介绍小红书官方API——`smallredbook.item_get_video`的功能与使用方法。该接口可获取笔记视频详情,包括无水印直链、封面图、时长、文本描述、标签及互动数据等,并支持电商场景分析。调用需提供`key`、`secret`和`num_iid`参数,返回字段涵盖视频链接、标题、标签及用户信息等。同时,文章提供了电商实战技巧,如竞品监控与个性化推荐,并列出合规注意事项及替代方案对比。最后解答了常见问题,如笔记ID获取与视频链接时效性等。
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之想要获取对应账号的阿里云账号id该如何操作
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
运维 网络协议 网络安全
干货 | USG配置端口映射图解&映射不通的排查
干货 | USG配置端口映射图解&映射不通的排查
678 9
|
SQL Oracle 关系型数据库
Navicat
【8月更文挑战第28天】Navicat
332 4
|
运维 持续交付 Docker
在Docker中,Docker可以用来做什么?
在Docker中,Docker可以用来做什么?
|
JavaScript 前端开发 程序员
Vue学习之--------Vue生命周期beforeCreate、created、beforeMount、mounted、beforeDestroy 。。。(图解详细过程)(2022/7/17)
这篇文章详细介绍了Vue的生命周期和各个阶段的钩子函数,包括`beforeCreate`、`created`、`beforeMount`、`mounted`、`beforeUpdate`、`updated`、`beforeDestroy`和`destroyed`。文章通过图解、方法说明、代码实例和测试效果,阐述了每个钩子函数的作用和使用场景,帮助读者深入理解Vue实例从创建到销毁的整个过程。
Vue学习之--------Vue生命周期beforeCreate、created、beforeMount、mounted、beforeDestroy 。。。(图解详细过程)(2022/7/17)