前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第七篇 本周你吃基了吗

第七篇 本周你吃基了吗

作者头像
python编程从入门到实践
发布2019-12-18 15:20:16
4890
发布2019-12-18 15:20:16
举报

2019年最后一篇技术类文章,写作耗时2h,全文1600字,全文阅读需要3分钟,且读且珍惜,哈哈!

一、本文目的

1.Charles 在实际开发过程中必须会得几点实操

2.获取ttjj app 两个维度的数据

3.分析一个抓包过程全貌

二、ttjj app 两维度数据获取

上文我们已经介绍过如何去配置手机来通过Charles 进行数据获取,若还不是很清楚请参照上篇文章。这里就不详细的介绍了。

我们先在手机上打开app 、电脑端打开Charles。我们可以在app中进行随机的选择一些自己感兴趣的点一点,就会出现如下类似的:

OK,恭喜你,你现在的状态已经做好了获取数据准备了,让我们在海量的数据中翱翔吧。然后你就找啊找,我要找的连接在哪儿了呢?找了半天你一脸懵逼,找不到啊,这是什么鬼?

第一个技巧:设置一下和你要抓包的域名(很重要!很重要!很重要!重要的事情强调三遍)

why? 在你抓包的过程中有网络异动其数据就会被这个抓包工具捕获,但很多对于你来讲都是无效的,so 为了提高效率,排除干扰你得屏蔽一下不要的,重点关注自己想要研究的域名的包,如何设置呢,请按照下图来操作就可以解决你的烦恼。

第二个技巧:不忘Ctrl + F (做查找使用)

why? 我们在寻找到请求的连接后,需要完成的工作就是需要看我们发送数据是如何组成的,有些是你搜索特定条件时候输入的条件数据,有些是固定的你猜猜就可以搞定的,但是有些神数据你发现很难猜出,这个时候就需要全局搜索这个参数了,看哪些请求中会携带或出现过这些数据,然后顺藤摸瓜再进行下一步的分析。所以你说重要否。

就我们今天要说的这个case,使用以上两条基本就可以结束战斗了。

我们今天的task:

  1. 获取混合基金中最近一个月的数据排名(按照收益大小)
  2. 获取本周基民访问top10的各类基金数据

重点说一下第一个task 如何操作,task2 大家有兴趣的可以自己尝试。

我们先看一下最终的数据是什么样子的,作为我们最后比对的基准数据,如下图:

OK,我们通过尝试发现其我们要获取的数据位于:fundmobapi.eastmoney.com 按照之前说的把这个域名进行一下过滤,完成之后我们再次请求数据可以看到一下的结果:

通过图片我们发现 Charles 把请求数据包分成了目标域名下的数据和other这种方式对于我们来说就很nice 很是友好,接下来我们点击到我们请求回的资源查看一下:

通过图篇展示我们很清楚的看到本次获取数据的请求request数据部分和返回的response部分,我们仔细看一下其连接发送的get请求,但是你会发现其数据是带在url的后面的。分析完整个过程下一步的操作就是写代码来实现了。

写代码之前可以看一下返回的报文信息:

我仅给出demo级别的代码,大家可以参照进行完善,和拓展。至此你已在吃基的路上向前迈进了一步了。吃基我们永远在路上。

代码语言:javascript
复制
# -*- encoding: utf-8 -*-
# !/usr/bin/python
"""
@File    : fund_app.py
@Time    : 2019/12/7 18:53
@Author  : haishiniu
@Software: PyCharm
"""
import json

import requests
session = requests.session()
# 混合基金近一个月的排行情况
url = 'https://fundmobapi.eastmoney.com/FundMNewApi/FundMNRankNewList?' \
      'FundType=27&' \
      'SortColumn=SYL_Y&' \
      'Sort=desc&' \
      'pageIndex=1&' \
      'pageSize=30&' \
      'BUY=true&' \
      'CompanyId=&' \
      'LevelOne=&' \
      'LevelTwo=&' \
      'ISABNORMAL=false&' \
      'DISCOUNT=&' \
      'RISKLEVEL=&' \
      'ENDNAV=&' \
      'RLEVEL_ZS=&' \
      'ESTABDATE=&' \
      'TOPICAL=&' \
      'deviceid=6AF2EAA4-586E-44DA-984F-27244E9ECA50&' \
      'plat=Iphone&' \
      'product=EFund&' \
      'version=6.1.5&' \
      'GTOKEN=67727396FD5044E78FF9E368F21F87e1'

session.headers['Host'] = 'fundmobapi.eastmoney.com'
session.headers['Accept'] = '*/*'
session.headers['GTOKEN'] = '67727396FD5044E78FF9E368F21F87e1'
session.headers['User-Agent'] = 'app-iphone-client-iPhone6,2-55A5394B-FB2C-4702-9A8E-6C81D4F897CF'
session.headers['Accept-Language'] = 'zh-cn'
session.headers['Accept-Encoding'] = 'gzip'
session.headers['Accept-Language'] = 'zh-cn'
session.headers['Connection'] = 'keep-alive'

res = session.get(url=url, verify=False, timeout=60).text
res = json.loads(res)

for fund in res['Datas']:
    print(fund['SHORTNAME'])

结果展示:

好了,本期的分享到此结束,未完待续......

当你发现自己的才华撑不起野心时,请安静的坐下来学习吧。

------还是牛

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python编程从入门到实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档