一、概述

最近学院组织安排大面积实习工作,今天刚刚发布了喜马拉雅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. Apache 服务器搭建 总结

    安装素材准备:<1>下载jdk <2>下载apache2.0.55 <3>下载tomcat5.5 <4>下载jk(mod_jk-apache-2.0.5 ...

  2. JS Date.parse() 函数详解

    Date.parse()函数用于分析一个包含日期的字符串,并返回该日期与 1970 年 1 月 1 日午夜之间相差的毫秒数. 该函数属于Date对象,所有主流浏览器均支持该函数. 语法 Date.pa ...

  3. 解决自定义Shiro.Realm扩展类不能用注解(@Resource或@Autowire)自动装配的问题

    问题产生原因:加载Realm时其他Spring配置文件(xml)尚未加载,导致注入失败. 解决方法:编写一个设置类把注入工作提前完成. package com.xkt.shiro import org ...

  4. MySQL--InnoDB索引原理详解

    1 各种树形结构 本来不打算从二叉搜索树开始,因为网上已经有太多相关文章,但是考虑到清晰的图示对理解问题有很大帮助,也为了保证文章完整性,最后还是加上了这部分. 先看看几种树形结构: 1 搜索二叉树: ...

  5. LeetCode 345. Reverse Vowels of a String

    Write a function that takes a string as input and reverse only the vowels(元音字母) of a string. Example ...

  6. 【React】启动dva脚手架

    开始前: 确保node版本为6.5以上. // 安装脚手架 npm i dva-cli -g // 自动安装新工程 dva new newProjectName // 导入antd包 npm i an ...

  7. Android 笔记 a+b day6

    独立写了自己第一个Android app -----------a+b!!!!! 自己手机Android版本4.2太低,安装时会出现解析失败,装到室友手机上就好了~~ happy~~ package ...

  8. [Idea] idea打不开项目,原因很莫名

    由于项目是gitlab上存储的,所以下下来之后,之前遇到过,以为是重新下载之后master上面没有内容导致无法正常打开,这种情况,切换一下master再打开即可: 但是这次遇到的问题不是这种情况, 使 ...

  9. 谈谈iOS中的屏幕方向

    众所周知,iOS中提供了[UIDevice currentDevice].orientation与[UIApplication sharedApplication].statusBarOrientat ...

  10. sql 语句

    INSERT 基本语法:INSERT INTO table_name VALUES(value1,value2,value3,...); 指定列:INSERT INTO table_name(colu ...