zoukankan      html  css  js  c++  java
  • 做直播能有多赚钱,Python告诉你

    前面我们介绍了APP爬虫环境的搭建和mitmproxy工具的简单使用,这次我们要来一个简单的APP爬虫,尝试一下APP爬虫的简单实用,顺便让我们看看喜马拉雅上的主播到底有多赚钱。

    APP爬虫一般分为两种方式,一种是直接分析破解应用的API,模拟API访问获取数据,另一种是设置代理,采用自动化操作,通过mitmproxy进行数据抓取。

    分析API接口

    这种方式爬取速度最快,但是分为初级和高级,初级是针对部分应用加密不严格,可以通过抓包软件抓包就能分析出一些接口,高级的就需要进行APP脱壳破解,阅读源码分析出接口。

    自动化操作

    这种方式比较慢,但是相对要简单一些,只要搞定了自动化操作工具,数据的抓取处理很方便。我目前了解了三种自动化工具:appium、Airtest、autoJS。针对这三种方式我们后面都会有文章来专门介绍。

    今天我们就先使用初级方式来抓取一下喜马拉雅APP的主播排行榜,来看看这些主播到底有多富有,他们的快乐你能想象到吗?下面开撸了。

    配置手机抓包环境

    抓包工具我们之前介绍过三个:Fiddler、Charles、mitmproxy,直接安装进行简单配置即可抓包,这里不做详述。网上有茫茫多的这种配置帖子,我贴两个在下面大家自行查看。如果对于工具用法有需求的同学,请上哔哩哔哩搜索相关视频,看一个小时基本上就可以使用了。
    Charles手机抓包配置
    Fiddler手机抓包配置

    操作抓包

    打开模拟器和抓包软件

    打开喜马拉雅APP,具体操作如下
    找到主播榜单
    找到主播榜单以后,默认是小时榜,我们先搜索一下有没有抓到需要的数据,小时榜第一名:夏春瑶。切换到Charles,Ctrl+F打开搜索框

    打开底下搜索到的内容,双击一下就会定位到对应的请求上,查看响应数据

    查看数据

    通过查看我们就确定了,这个请求就是小时榜的请求地址。根据以上方式我们依次查看日榜和周榜

    以同样的方式获取对应的接口url,以下为对应接口:
    小时榜:http://114.80.139.232/gift-rank/v1/gift/rank/anchor/hour?ts=1578831339526
    日榜:http://114.80.170.77/gift-rank/v1/gift/rank/anchor/daily?ts=1578831339526
    周榜:http://114.80.139.232/gift-rank/v1/gift/rank/anchor/week?ts=1578831339526
    PS:我在广电网络下抓取的接口和电信网络下不一样,主要是接口中IP地址不一样,不知道是IP变更了,还是和网络有关系,所以如果有同学使用我的代码不能正常抓取数据,请自己抓一下包

    接口分析

    已经拿到了接口,第一步我们就要尝试一下接口是否能正常抓取到数据

    import requests
    
    s = requests.session()
    r = s.get(url)
    print(r.text)
    

    一般情况下肯定没有这么简单,在headers或者cookies中肯定需要添加一下数据才行,那么我们怎么确定需要加哪些数据呢?Fiddler和Charles都有重复发送请求的功能,在Charles中选中要测试的请求,右键点击Compose,下面就会多出一个请求,前面是一个笔的标记,然后把上面请求的headers中的数据,添加到下面请求的headers中

    然后点击底下的Execute按钮,如果请求成功,下面会出现一个状态为200的请求

    如果请求不成功,那么就说明这个请求必须依赖上面的某个请求。成功以后呢,在回到带“笔”的那个请求上,删除headers中的部分内容,再次尝试发送请求,看是否能请求成功。反复尝试,直到剩下最少数据,并且可以请求成功。这样就能确定需要在headers或者cookies中添加哪些数据。

    通过以上调试,我们发现headers中只需要添加host数据即可,对于小时榜,我们定时在每小时的58分抓取一次,日榜在每天23:58抓取一次,周榜在每周日23:58分抓取一次,代码已经上传到我的GitHub上,数据存储在MongoDB数据库中。这篇我们抓取了一下数据:

    • 榜单数据
      • 喜爱值
      • 直播状态
      • 主播名
      • 排行
      • 用户UID
      • 房间ID
    • 直播间数据
      • 粉丝团名称
      • 粉丝数量
      • 直播间名称
      • 直播开始时间
      • 直播结束时间
      • 分组ID
      • 在线人数
      • 参与人数
      • 用户头像

    以上这些数据都是按照时段保存的,这样等抓取一段时间后,就可以把数据拿出来进行分析,这个等下次我们在进行分析处理。后面抓取的数据我也会导出上传到GitHub上,数据分析这块我不是很熟,只能做一些简单的分析。如果想要获取代码,请在公众号回复:ximalaya,获取代码地址。


    如果你觉得我的文章还可以,可以关注我的微信公众号,查看更多实战文章:Python爬虫实战之路
    也可以扫描下面二维码,添加我的微信公众号

    公众号


    如果你觉得我的文章还可以,可以关注我的微信公众号,查看更多实战文章:Python爬虫实战之路
    也可以扫描下面二维码,添加我的微信公众号

  • 相关阅读:
    Windows server 2016 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同。”
    Windows Server 2016 辅助域控制器搭建
    Windows Server 2016 主域控制器搭建
    Net Framework 4.7.2 覆盖 Net Framework 4.5 解决办法
    SQL SERVER 2012更改默认的端口号为1772
    Windows下彻底卸载删除SQL Serever2012
    在Windows Server2016中安装SQL Server2016
    SQL Server 创建索引
    C#控制台或应用程序中两个多个Main()方法的设置
    Icon cache rebuilding with Delphi(Delphi 清除Windows 图标缓存源代码)
  • 原文地址:https://www.cnblogs.com/small-bud/p/12398358.html
Copyright © 2011-2022 走看看