喜马拉雅FM抓包之旅
一、概述
最近学院组织安排大面积实习工作,今天刚刚发布了喜马拉雅FM实习生招聘的面试通知。通知要求:公司采用开放式题目的方式进行筛选,申请的同学须完成如下题目
写程序输出喜马拉雅FM上与“卓老板”相关(相关指用“卓老板”作关键词可以在喜马拉雅上搜索到)的所有专辑的信息,按总播放量倒序排列,每行是一个字符串,形如{"title" : "该专辑的名称", "anchorman" : "该专辑所属的账号名称", "info" : "该专辑的简介", "totalPlayCount" : 该专辑的总播放量}。可以只输出信息,不用下载专辑中的音频mp3文件。可以用C/C++、JavaScript、Java、Python、Go等语言编写。
二、分析
2.1 题目分析
数据要求就是JSON数据,很容易想到:要么去写爬虫,从喜马拉雅的官网页面上爬取数据;要么在app上进行抓包,分析接口。
2.2 说干就干
首先,我去了喜马拉雅的官网进行了操作。发现,在第一个页面上可以搜索,也能查看到一些数据,但是数据并没有按照播放量排序以及数据中无播放量这一数据。同时,对整个页面访问的过程进行抓包分析,发现好像并没有类似Json数据的传输。因此,解决方案只有进入每个专辑页面的详情页去获取播放量,再把这些数据汇总。
使用到的技术:用Python语言解析html页面;用Java语言可以使用Jsoup框架解析html页面。
2.3 使出杀手锏
android端抓包
根据以往写app的经验,如果项目有app端,则服务器通常要向app端暴露一些数据交互接口,以保证app端的正常使用。对于某些安全级别较高的或者对交互数据有隐私保护需求的公司,通常会对交互的数据进行编码、加密等处理,以增加信息的安全性。
抱着试一试的心态,我下载了喜马拉雅app,简单试用了这款app后,确实找到了查找专辑(按播放量,相关度、最新上传可选排序)的操作。通过对app抓包分析,发现整个交互的Json没有进行特殊的编码或者加密,甚至没有登陆验证。
2.4 编码前的分析
经过前面三个过程,明确了解决问题的方向。那就开始写代码吧。
之前使用到Json数据的场合大多都是使用java语言写Android端程序,此次为了锻炼、学习一下(之前也没有投该公司),决定使用Python语言请求并解析Json数据。
三、编码
python解析jsonhttp://www.cnblogs.com/neillee/p/6207996.html
喜马拉雅FM抓包之旅的更多相关文章
- Android逆向之旅---爆破一款资讯类应用「最右」防抓包策略原理分析
一.逆向分析 首先感谢王同学提供的样本,因为王同学那天找到我咨询我说有一个应用Fiddler抓包失败,其实对于这类问题,我一般都会这么回答:第一你是否安装Fiddler证书了,他说他安装了.第二你是否 ...
- [HMLY]5.模仿喜马拉雅 FM
项目介绍: 文:HansRove(github)XiMaLaYa-by-HansRove- 仿做喜马拉雅, 对AVFoundation框架的一次尝试 软件环境: iOS9.1硬件环境: Mac O ...
- 抓包工具 - Fiddler(如何捕获Android数据包)
如何捕获Android数据包 一.移动设备访问网络原理 先看看移动设备是怎么去访问网络,如图1所示,可以看到,移动端的数据包是从wifi出去的. 图1(移动设备访问网络) 所以我们可以把自己的电脑开启 ...
- 【bb平台刷课记】wireshark结合实例学抓包
[bb平台刷课记]wireshark结合实例学抓包 背景:本校形势与政策课程课需要在网上观看视频的方式来修得学分,视频网页自带"播放器不可快进+离开窗口自动暂停+看完一集解锁下一集(即不能同 ...
- python socket+tcp三次握手四次撒手学习+wireshark抓包
Python代码: server: #!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:server.py import socket # 导入 socke ...
- socket和抓包工具wireshark
socket和抓包工具wireshark 最近在学习Python代码中的socket和抓包工具wireshark,故又将socket等概念又学习了一遍,温故而知新: Python代码如下: serve ...
- Security基础(二):SELinux安全防护、加密与解密应用、扫描与抓包分析
一.SELinux安全防护 目标: 本案例要求熟悉SELinux防护机制的开关及策略配置,完成以下任务: 将Linux服务器的SELinux设为enforcing强制模式 在SELinux启用状态下, ...
- Nmap扫描与Tcpdump抓包分析
扫描与抓包分析 3.1 问题 本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作: 使用NMAP扫描来获取指定主机/网段的相关信息 使用EtterCAP截获明文通信的密码.检测非加密通 ...
- android http 抓包
有时候想开发的时候想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些“坏事”... 需要工具: Fiddler2 抓包(点击下载) Android ...
随机推荐
- 关于Vue vuex vux 文档
01. vue 链接 http://vuejs.org.cn/guide/ 02. vuex ----->>状态管理模块儿<<------- https://vuex.vue ...
- fabric
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # fab test [root@192.168.85.99:22] Executing ...
- Object-c 内存管理
内存管理 主要内容 1.内存管理的概念 2.引用计数 3.如何持有对象所有权 4.自动释放池 5.@property的使用 什么是内存管理 内存管理是关于如何管理对象生 ...
- MySQL--InnoDB索引原理详解
1 各种树形结构 本来不打算从二叉搜索树开始,因为网上已经有太多相关文章,但是考虑到清晰的图示对理解问题有很大帮助,也为了保证文章完整性,最后还是加上了这部分. 先看看几种树形结构: 1 搜索二叉树: ...
- WPF 如何绘制不规则按钮,并且有效点击范围也是不规则的
最近在做一个东西,如地图,点击地图上的某一区域,这一区域需要填充成其他颜色.区域是不规则的,而且点击该区域的任一点,都能够变色.普通的按钮只是简单的加载一幅图肯定是不行的.查了很多资料,终于把它搞定了 ...
- Android语录
1. application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期.因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象.因此在 ...
- 模拟提交API数据Pyqt版
其实这个模拟提交数据之前已经写过篇: Python requests模拟登录 因为现在在做的项目中需要一个debug请求调试API,用PHP的CURL写了一个,又因Pyqt更能直观灵活的显示请求的参数 ...
- 2017年第1贴:EXT.JS使用MVC模式时,注意如何协调MODEL, STORE,VIEW,CONTROLLER的关系
也调了快一天,死活找不到窍门. MODEL, STORE,VIEW的调置测试了很久,试了N种方法,不得其果. 最后,试着在APPLICATION里加入CONTROLLER, 在CONTROLLER里加 ...
- UnrealScript语言基础
总体特征 (1)大小写不敏感.关键字.宏.变量名.函数名以及类名不区分大小写:变量名可以与关键字同名 (2)局部变量.成员变量未初始化时,会被编译器初始化 (3)没有全局变量.全局函数,所有东西必须写 ...
- ZooKeerper学习之Watcher
ZooKeeper为我们提供了用于监视结点变化的Watcher机方法制: 1.可以注册Watcher的方法:getData().exists().getChildren().我们可以通过查看ZooKe ...