资讯专栏INFORMATION COLUMN

如何用Python抓抖音上的小姐姐

FingerLiu / 1534人阅读

摘要:比如分钟破译朋友圈测试小游戏文章里用的方法但有些根本就没有提供网页端,比如今年火得不行的抖音。所以常用的方式就是通过在电脑上装一些抓包软件,将手机上的网络请求全部显示出来。总结下,重点是的抓取,关键是配置代理证书,难点是对请求的分析。

爬虫的案例我们已讲得太多。不过几乎都是 网页爬虫 。即使有些手机才能访问的网站,我们也可以通过 Chrome 开发者工具手机模拟 功能来访问,以便于分析请求并抓取。(比如 3分钟破译朋友圈测试小游戏 文章里用的方法)

但有些 App 根本就没有提供网页端,比如今年火得不行的 抖音 。(网上有些教程也是用网页手机模拟的方法,但此法现已失效。)

对于这种情况,我们能不能抓取?要怎么抓取?今天就来分享一下。

手机抓包

本文的重点就在于 如何获取手机 App 发出的请求

手机 App 不像电脑上的网页能直接通过浏览器查看相关信息,在手机设备上也不方便使用工具一边流量一边调试。所以常用的方式就是通过在电脑上装一些 “抓包”软件 ,将手机上的网络请求全部显示出来。

那为什么电脑能看到手机上的网络请求?这里就要提下“ 代理 ”这个概念。我们之前的文章 听说你好不容易写了个爬虫,结果没抓几个就被封了? 中也讲过代理。形象的解释就是字面的理解: 所有你发出的请求不再是直接发到目的地,而是先发给这个代理,再由代理帮你发出 。所以通过代理,可以实现 隐藏 IP、进入专用网络、翻…咳咳那啥 等功能,也包括我们今天说的: 手机抓包

顺带说句,在公共场所别随便连不确定的免费 wifi,理论上来说,人家也可以抓你的包。

这里,我们要用的工具是 Fiddler 。它是一个较成熟的免费抓包工具。可以抓取网页、桌面软件、手机 App 的网络请求,并可以运行在 Windows、Mac、Linux 平台上,支持 iOS 和 Android。(虽说都支持,但强烈建议 Windows + Android ,后面我会有吐槽)

上周我们的送书活动收到不少同学的项目和代码,其中 @离岛 同学提交了一个 Fiddler 手机抓包的教程。  
https://segmentfault.com/a/1190000015571256
本文中部分内容和图片就转自她这篇文章。她的博客上还有不少文章和学习笔记,可以关注交流。也欢迎其他同学给我们投稿。
下载安装

搜索一下 fiddler 很容易找到它们的官网 https://www.telerik.com/fiddler,点击 download 下载即可(有个表格随便填下)。

Windows 下载后正常安装。如果是 Mac,还会有安装步骤提示,告诉你需要先安装一个叫做 Mono 的框架,以便可以执行 Fiddler.exe。另外 Mac 版还有几个小坑:

1. 运行 mono 命令用 sudo

2. 如果报一堆错闪退,请用 mono --arch=32 Fiddler.exe(这个参数还必须放在文件名前面)

3. 第一次正确运行时,程序 会卡住很长时间 ,以至于我以为还是挂了,这时请耐心等待。(我要不是正好有事走开,回来发现成功了,可能就放弃尝试了)

4. 即使正常运行了,Mac 上界面也会有各种显示的 bug,切记不要打开的弹窗的情况下切换程序,不然回来就找不到弹窗了……

5. 软件中无法复制……

6. 在 iOS 上无法抓取 HTTPS 请求(这基本就是废了),需要额外创建一个证书,但这个证书工具只能在 Windows 下运行……

所以可以的话,还是用 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, "
")
    urllib.request.urlretrieve(url_v, name + ".mp4")

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

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

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

下课!

════
其他文章及回答:
如何自学Python | 新手引导 | 精选Python问答 | 如何debug? | Python单词表 | 知乎下载器 | 人工智能 | 嘻哈 | 爬虫 | 我用Python | 高考 | requests | AI平台

欢迎微信搜索及关注: Crossin的编程教室

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42629.html

相关文章

  • 文章内容提取库 goose 简介

    摘要:是一个文章内容提取器,可以从任意资讯文章类的网页中提取文章主体,并提取标题标签摘要图片视频等信息,且支持中文网页。 爬虫抓取数据有两个头疼的点,写过爬虫的小伙伴们一定都深有体会: 网站的 防抓取 机制。你要尽可能将自己伪装成一个人,骗过对方的服务器反爬验证。 网站的 内容提取 。每个网站都需要你做不同的处理,而且网站一旦改版,你的代码也得跟着更新。 第一点没什么捷径可走,套路见得多...

    keithxiaoy 评论0 收藏0
  • 送你个情人节礼物:Python抖音同款表白神器

    摘要:又到了一年一度的情人节大家都准备送什么给自己心仪的对象呢鲜花巧克力都太俗套了,今天给大家带来一个抖音上看到的表白神器用写一个告白程序,让她看到你满满的爱意。 又到了一年一度的情人节!大家都准备送什么给自己心仪的对象呢? 鲜花、巧克力都太俗套了,今天给大家带来一个抖音上看到的表白神器 — 用Python写一个告白程序,让她看到你满满的爱(tao)意(lu)。 先上效果: showImg(...

    shiweifu 评论0 收藏0
  • 四步打造用户「上瘾」的抖音型 App

    摘要:第四步投入这是上瘾模型的最后一个阶段,也是需要用户有锁投入的一个阶段。这个阶段有助于提高用户以后再次进入上瘾循环的概率。慢慢的,你就转变为其他人上瘾的外部诱因。因此,习惯和适度上瘾不是坏事。 从大话西游到贪玩蓝月,从朋友圈到抖音,人们乐此不疲的将大把的时间和金钱砸向这些虚拟体验当中,这些用户的行为之中有一个最大的共性就是「刷」,刷副本、刷装备、刷图片、刷小姐姐/小哥哥……「刷」是一种会...

    bawn 评论0 收藏0
  • Python 顶级开源项目 Top 10

    摘要:可以说是每个程序每天必逛的网站,这里集聚了全球最顶级的程序员。有非常多的大公司在上面开源自己的项目。今天整理了个上顶级的开源项目。这是推出的一款性能类型检查工具。它的主要目标是快速轻松地分发应用程序。 showImg(https://segmentfault.com/img/remote/1460000015909645); 阅读文本大概需要 4.2 分钟。 GitHub 可以说是每个...

    cangck_X 评论0 收藏0
  • 我用Python爬取了女神视界,爬虫之路永无止境「内附源码」

    摘要:我发现抖音上很多小姐姐就拍个跳舞的视频就火了,大家是冲着舞蹈水平去的吗,都是冲着颜值身材去的,能刷到这篇文章的都是了,我就跟大家不一样了,一个个刷太麻烦了,我直接爬下来看个够,先随意展示两个。 我发现抖音上很多小姐姐就拍个跳舞的视频就火了,大家是冲着舞蹈水平去的吗,都是冲着颜值身材去的,能刷...

    niuxiaowei111 评论0 收藏0

发表评论

0条评论

FingerLiu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<