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

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

一.配置好fiddler和手机


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


二.抓包


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


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


  回到Fiddler,看之前那个包的头(Fiddler右上窗口),上面有个url,可以复制到浏览器会发现打开的不是和Fiddler右下角一样的json界面,而是显示服务器繁忙,因为这个url是不完整的。注意右上窗口最后一行有个“type=......”这其实是完整url的后半部分,//代码效果参考:http://www.lyjsj.net.cn/wz/art_23681.html

要把它拼接到第一行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 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',


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


'pv':'false',


'refreshTimes':'2',


'sig': '518db63518ffba8fca5c70724750dc95',


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

'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 //代码效果参考:http://www.lyjsj.net.cn/wx/art_23677.html

list:

pprint.pprint(info)


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


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


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


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


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


if name == 'main__':


ks=Kuaishouspider()


ks.kuaishou_request()


代码

相关文章
|
存储 数据安全/隐私保护
RPMB说明与使用(Replay Protected Memory Block)
RPMB说明与使用(Replay Protected Memory Block)
4908 0
|
数据采集
24年整理! 各大代理商隧道代理IP价格对比,文末有总结
作为日常需要用到大量代理IP的爬虫从业者,分析各大代理商的价格及IP可用率等属于基操了,很多时候我们遵循自己的消费习惯购买产品,被当韭菜收割一波。 于是我打算分析了一下几家常用代理商的价格,顺便有一些日常小tip分享给大家,不能不明不白就当一颗绿油油的小韭菜。
|
缓存 达摩院 Kubernetes
数据缓存系列分享(六):通义千问Qwen-14B大模型快速体验
阿里达摩院近期对通义千问大模型 Qwen-14B 进行了开源(之前开源的是Qwen-7B模型),目前在ModelScope和HuggingFace上均可直接下载。关于Qwen-7B的搭建可以参考我们之前的文章:数据缓存系列分享(五):开源大语言模型通义千问快速体验版,本文将使用一样的方式打开Qwen-14B,快速体验一下。
2559 0
数据缓存系列分享(六):通义千问Qwen-14B大模型快速体验
|
Unix Linux 程序员
Py之curses:curses库的简介、使用、安装方法详细攻略
Py之curses:curses库的简介、使用、安装方法详细攻略
Py之curses:curses库的简介、使用、安装方法详细攻略
|
人工智能 文字识别 自然语言处理
阿里云百炼产品月刊【2025年6月】
阿里云百炼平台6月推出多项更新与活动,涵盖Agent市场、多模态交互开发套件、新模型上线及商业化调整。新增100+开箱即用Agent模板,支持多行业多场景应用;推出通义多模态交互开发套件,提升全场景适配能力;联合支付宝推出Agent赞赏功能,助力创意变现;新上架text-embedding-v4、deepseek-r1-0528、qvq系列视觉推理模型等,并对qwen-plus、qwen-turbo等模型进行迭代升级。同时,部分历史模型将于7月下线,建议用户及时调整应用。更多详情请查看官网公告。
724 0
|
安全 网络架构
|
8月前
|
安全 物联网 API
核验身份证的一致性API的实战指南
随着网络空间安全问题日益突出,实名制成为保障安全与秩序的重要手段。探数API的身份证实名认证工具通过姓名和身份证号核验用户身份真实性,并返回扩展信息,广泛应用于各行业。本文介绍了其实现功能、调用流程及代码示例,同时解答了关于个人信息安全等常见疑问。接入该API不仅满足合规要求,更能提升用户信任,降低运营风险,共同构建安全高效的数字未来。
742 1
|
10月前
|
数据采集 安全 调度
如何用Python搭建一个好用的海外代理IP池子?
本文介绍了如何通过Python构建一个高质量的海外代理IP池,解决全球化数据采集中的IP访问限制、速度瓶颈及资源稳定性问题。文章详细讲解了代理IP池的重要性,包括绕过地理限制、提高访问成功率和保障爬取效率,并推荐了青果网络作为可靠的海外代理IP服务提供商。随后,文章分步骤指导读者完成从安装必要库到整合爬虫任务的全过程,包括获取、验证海外代理IP以及构建动态调度管理的IP池。最后,作者建议使用企业级服务以简化基础设施搭建,专注于采集逻辑与数据分析,助力更高效的爬虫项目开发。
如何用Python搭建一个好用的海外代理IP池子?
|
数据采集 缓存 IDE
Go中遇到http code 206和302的获取数据的解决方案
文章提供了解决Go语言中处理HTTP状态码206(部分内容)和302(重定向)的方案,包括如何获取部分数据和真实请求地址的方法,以便程序员能快速完成工作,享受七夕时光。
1194 0
Go中遇到http code 206和302的获取数据的解决方案
|
机器学习/深度学习 自然语言处理 Ubuntu
OpenVoice一键部署
OpenVoice一键部署
1386 0