如何用Python抓抖音上的小姐姐(2)

所以可以的话,还是用 Windows 来做。Mac 上还有个比较知名的工具 Charles,有用过的可以留言评价下。

配置

安装好工具后,需要做一些必要配置才能抓包。

1. Fiddler 配置

设置允许抓取 HTTPS 信息包。打开下载好的 fiddler,找到Tools -> Options,然后在 HTTPS 的工具栏下勾选 Decrpt HTTPS traffic,在新弹出的选项栏下勾选Ignore server certificate errors。这样,fiddler 就会抓取到 HTTPS 的信息包。

设置允许外部设备发送 HTTP/HTTPS 到 fiddler。设置端口号,并在 Connections 选项栏下勾选 Allow remote computers to connect

配置好后需重启软件。

2. 设置手机代理

在抓包前,确保你的电脑和手机是在一个可以互访的局域网中。最简单的情况就是都连在同一个 wifi 上,特殊情况这里不展开讨论(有些商用 wifi 并不能互访)。

打开软件,鼠标放在右上角的 Online 上可以看到本机的 IP。或者也可以通过命令行中的 ipconfig 命令(Mac/Linux 是 ifconfig)查看。(截图仅为演示,以你自己的 IP 为准)

手机设置代理 IP。打开手机无线网络连接,选择已经连接的网络连接,点击一个小圆圈叹号进入可以看到下图(安卓也类似),选择配置代理,进入后把刚刚的 IP 地址输入进去,端口就是 fiddler 中设置的 8888。

3. 安装证书

获取HTTPS请求必须要验证证书。电脑端访问:http://localhost:8888/ 进行安装。

手机访问前面设置的电脑的 IP 地址加端口 8888 访问,比如图中例子是:http://192.168.23.1:8888

有些安卓需要手动从设置里进入并导入证书,否则无法生效。

4. 测试

开启 fiddler 的状态下,打开手机随便一个 APP,应对可以正常访问,并且在 fiddler 中看到所发出的网络请求。

如果能访问但看不到请求,确认下有没有代理有没有生效。如果不能访问,检查下证书是否都下载并验证。还是不行则按照上述步骤再仔细配置一遍。

分析请求

完成这一步之后,接下来的事情就和网页爬虫没太大区别了。无非就是从这些请求中,找到我们需要的那几个。

fiddler 里记录的是所有请求,比较多。在操作 App 前,记得清空已有请求,方便观察。然后再配合上 filter 筛选器,定义筛选规则,会较容易找你需要的内容。找到请求后,在软件里查看你要的信息,或者右键点击选择将请求导出。

经过操作+观察,可以定位到获取用户上传视频列表的请求是
https://api.amemv.com/aweme/v1/aweme/post/?…
从 WebForms 栏里可以查看请求的详细参数信息。返回值是一个组 JSON 数据,里面包含了视频的下载地址。

这是一个需要经验积累的活儿,不同的网站/App,规则都不一样,但套路是相似的。对网页爬虫还不熟悉的话,搜索文章 爬虫必备工具,掌握它就解决了一半的问题

代码抓取

得到地址之后,经过在浏览器和代码里的一番尝试,找到了此请求的正确解锁方式:

  1. 需要提供以下参数:max_cursor=0&user_id=94763945245&count=20&aid=1128,其中user_id是你要抓取的用户 ID,其他参数都可以固定不用改。

  2. 需要使用手机的 User-Agent,最简单的就是 {'user-agent': 'mobile'}

请求代码:

import requests as rs
uid = 94763945245
url = 'https://api.amemv.com/aweme/v1/aweme/post/?max_cursor=0&user_id=%d&count=20&aid=1128' % uid
h = {'user-agent': 'mobile'}
req = rs.get(url, headers=h, verify=False)
data = req.json()
print(data)

uid 替换成你想抓的用户 ID。获取用户 ID 有个简单方法:在用户页面选择分享,链接发到微信上,从网页打开就可以看到 user_id。

提取视频列表并下载:

import urllib.request
for video in data['aweme_list']:
    name = video['desc'] or video['aweme_id']    
    url_v = video['video']['download_addr']['url_list'][0]
    print(name, url_v, '\n')
    urllib.request.urlretrieve(url_v, name + '.mp4')

此方法截止中秋假期还是有效的,可以通过 Chrome 开发者工具进行模拟。之后能使用多久这就没法保证了,爬虫代码都不会是一劳永逸的。

总结下,重点是fiddler 的抓取,关键是配置、代理、证书,难点是 对请求的分析。最终代码只有简单两步,获取视频列表、下载视频

所有代码其实就上面两段,也上传了,获取地址请在公众号(Crossin的编程教室)回复关键字 抖音
想看其他十多个项目代码实例(电影票、招聘、贪吃蛇、代理池等),回复关键字 项目

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 18
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值