Python爬虫实践(五):抓包分析

论坛 期权论坛 期权     
数据PM的自我修养   2019-7-13 07:54   3577   0

        在之前的文章中,我们所讲解的爬虫都是基于PC网页的信息获取。现在,如果我们想获取APP的内容数据,又该如何处理呢?本期的内容抓包分析或许能解决你的疑问。不过在文章的开头,我们得从抓包的一些基础概念入手:

        抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。
        数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。
        每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址系统比较相似)。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单地忽略这些数据)。如果某个工作站的网络接口处于混杂模式,那么它就可以捕获网络上所有的数据包和帧。(引用自百度百科:抓包)


        说到这里,抓包到底是如何操作的?我们以安卓手机为例给大家讲一个具体CASE:有通过京东金融购买基金的朋友应该比较熟悉,京东金融提供了一个基金诊断功能。其主要逻辑是基于过去一段时间的基金盈利状态,来评估基金未来的盈利潜力,具体如下:



        现在,我们希望采用它的评分规则对所有基金进行一轮粗滤,然后再进行选择投资。那么如何批量获取所有基金的评分数据呢?(这里有一个背景需要说明:一般软件开发,很多格式化数据都是通过接口提供的,简单说就是一个问答器:用户在APP这端提交一些信息或者操作,然后系统会返回对应的结果,通过解析最终呈现在我们眼前。)

        首先我们需要安装抓包工具,这里我推荐大家使用Charles。安装完成后,我们进行如下操作:
  • 通过Proxy > Proxy Settings进入软件设置,Port填写任意值如8888,然后勾选Enable transparent HTTP proxying,点击OK确认;
  • 查看当前电脑的IP地址,比如MAC输入:ifconfig,然后查看en0的地址信息;


  • 将手机连入与电脑相同的无线网络并进入高级选项,将代理设置为:手动;代理服务器主机名设置为:电脑IP地址;代理服务器端口设置为:Port值,然后保存;
现在,我们可以通过手机访问目标APP了。第一次会在Charles上弹出一个窗口要求连接,点击Allow即可。
        通过在手机上点击诊断详情按钮,使APP产生跳转至上述评分页的动作,而后我们就可以看到在Charles左侧出现了一系列的信息。通过展开查看,我们定位到了如下链接:



可以看到在如图所示的地址中,我们找到了想要的目标信息。通过复制该地址(http://ms.jr.jd.com/gw/generic/jj/h5/m/queryRadarInfo?reqData=%7B%22fundCode%22%3A%22001632%22%7D&callback=__jp0),我们同样可以在浏览器中打开查看。

结合《Python爬虫实践(二):正则表达式》讲到分析方法,我们就可以很快完成对目标数据的爬取工作。

        以上是本篇的全部内容。下一篇,我们将对整个系列进行总结收尾,并简单介绍下当前的反爬虫机制。对了,操作完成记得取消手机的代理设置,否则上网会很慢!
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP