一、概述

最近学院组织安排大面积实习工作,今天刚刚发布了喜马拉雅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抓包之旅的更多相关文章

  1. Android逆向之旅---爆破一款资讯类应用「最右」防抓包策略原理分析

    一.逆向分析 首先感谢王同学提供的样本,因为王同学那天找到我咨询我说有一个应用Fiddler抓包失败,其实对于这类问题,我一般都会这么回答:第一你是否安装Fiddler证书了,他说他安装了.第二你是否 ...

  2. [HMLY]5.模仿喜马拉雅 FM

    项目介绍: 文:HansRove(github)XiMaLaYa-by-HansRove- 仿做喜马拉雅, 对AVFoundation框架的一次尝试   软件环境: iOS9.1硬件环境: Mac O ...

  3. 抓包工具 - Fiddler(如何捕获Android数据包)

    如何捕获Android数据包 一.移动设备访问网络原理 先看看移动设备是怎么去访问网络,如图1所示,可以看到,移动端的数据包是从wifi出去的. 图1(移动设备访问网络) 所以我们可以把自己的电脑开启 ...

  4. 【bb平台刷课记】wireshark结合实例学抓包

    [bb平台刷课记]wireshark结合实例学抓包 背景:本校形势与政策课程课需要在网上观看视频的方式来修得学分,视频网页自带"播放器不可快进+离开窗口自动暂停+看完一集解锁下一集(即不能同 ...

  5. python socket+tcp三次握手四次撒手学习+wireshark抓包

    Python代码: server: #!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:server.py import socket # 导入 socke ...

  6. socket和抓包工具wireshark

    socket和抓包工具wireshark 最近在学习Python代码中的socket和抓包工具wireshark,故又将socket等概念又学习了一遍,温故而知新: Python代码如下: serve ...

  7. Security基础(二):SELinux安全防护、加密与解密应用、扫描与抓包分析

    一.SELinux安全防护 目标: 本案例要求熟悉SELinux防护机制的开关及策略配置,完成以下任务: 将Linux服务器的SELinux设为enforcing强制模式 在SELinux启用状态下, ...

  8. Nmap扫描与Tcpdump抓包分析

    扫描与抓包分析 3.1 问题 本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作: 使用NMAP扫描来获取指定主机/网段的相关信息 使用EtterCAP截获明文通信的密码.检测非加密通 ...

  9. android http 抓包

    有时候想开发的时候想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些“坏事”... 需要工具: Fiddler2 抓包(点击下载) Android ...

随机推荐

  1. java--连接SQL数据库获取验证码

    1.导入SQL相关的包: 可以下载:mysql-connector-java-5.1.39-bin.jar 将包导入到工程的方法:project(在工程名上点鼠标右键) -> Build Pat ...

  2. Django~待解决的问题

    1.一个Model.py中简单调用多个数据库,不写数据库路由

  3. [iOS] 为文本加上横线方法

    _oldPriceLabel.text = "; _oldPriceLabel.textColor = [UIColor lightGrayColor]; NSMutableAttribut ...

  4. css的relative和position探究

    在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之. CSS position 属性值: absol ...

  5. pip install Error - ReadTimeoutError: HTTPSConnectionPool

    pip install Error OSX 终端更新pip出错 sudo pip install --upgrade pip : 1.ReadTimeoutError: HTTPSConnection ...

  6. axis2 调用webservice

    maven配置:主要引用包及plugins <properties> <axis2.version>1.6.1</axis2.version> </prope ...

  7. 编译osgEarth2.8+VS2013+CMake3.4.0在Release版本的问题

    1>LINK : fatal error LNK1181: 无法打开输入文件"optimized.lib" 可以到http://forum.osgearth.org搜索相关帖 ...

  8. iOS UIAlertController跟AlertView用法一样 && otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法

    今天写弹出框UIAlertController,用alertView习惯了,所以封装了一下,跟alertView用法一样,不说了,直接上代码: 先来了解一下otherButtonTitles:(nul ...

  9. WPF 变量转换的实现

    有时候,我们传入的是一个值,但是真正显示的需要是另一个值,这时候就需要转换.比如我们传入一个枚举值,而不同的枚举值对于的图片是不一样的. 这时候就需要一个转换规则.WPF里面给我们提供了一个接口IVa ...

  10. css实现容器垂直水平居中的七中方法

    方法一:position加margin 方法二: diaplay:table-cell 方法三:position加 transform 方法四:flex;align-items: center;jus ...