2019年最后一篇技术类文章,写作耗时2h,全文1600字,全文阅读需要3分钟,且读且珍惜,哈哈!
一、本文目的
1.Charles 在实际开发过程中必须会得几点实操
2.获取ttjj app 两个维度的数据
3.分析一个抓包过程全貌
二、ttjj app 两维度数据获取
上文我们已经介绍过如何去配置手机来通过Charles 进行数据获取,若还不是很清楚请参照上篇文章。这里就不详细的介绍了。
我们先在手机上打开app 、电脑端打开Charles。我们可以在app中进行随机的选择一些自己感兴趣的点一点,就会出现如下类似的:
OK,恭喜你,你现在的状态已经做好了获取数据准备了,让我们在海量的数据中翱翔吧。然后你就找啊找,我要找的连接在哪儿了呢?找了半天你一脸懵逼,找不到啊,这是什么鬼?
第一个技巧:设置一下和你要抓包的域名(很重要!很重要!很重要!重要的事情强调三遍)
why? 在你抓包的过程中有网络异动其数据就会被这个抓包工具捕获,但很多对于你来讲都是无效的,so 为了提高效率,排除干扰你得屏蔽一下不要的,重点关注自己想要研究的域名的包,如何设置呢,请按照下图来操作就可以解决你的烦恼。
第二个技巧:不忘Ctrl + F (做查找使用)
why? 我们在寻找到请求的连接后,需要完成的工作就是需要看我们发送数据是如何组成的,有些是你搜索特定条件时候输入的条件数据,有些是固定的你猜猜就可以搞定的,但是有些神数据你发现很难猜出,这个时候就需要全局搜索这个参数了,看哪些请求中会携带或出现过这些数据,然后顺藤摸瓜再进行下一步的分析。所以你说重要否。
就我们今天要说的这个case,使用以上两条基本就可以结束战斗了。
我们今天的task:
重点说一下第一个task 如何操作,task2 大家有兴趣的可以自己尝试。
我们先看一下最终的数据是什么样子的,作为我们最后比对的基准数据,如下图:
OK,我们通过尝试发现其我们要获取的数据位于:fundmobapi.eastmoney.com 按照之前说的把这个域名进行一下过滤,完成之后我们再次请求数据可以看到一下的结果:
通过图片我们发现 Charles 把请求数据包分成了目标域名下的数据和other这种方式对于我们来说就很nice 很是友好,接下来我们点击到我们请求回的资源查看一下:
通过图篇展示我们很清楚的看到本次获取数据的请求request数据部分和返回的response部分,我们仔细看一下其连接发送的get请求,但是你会发现其数据是带在url的后面的。分析完整个过程下一步的操作就是写代码来实现了。
写代码之前可以看一下返回的报文信息:
我仅给出demo级别的代码,大家可以参照进行完善,和拓展。至此你已在吃基的路上向前迈进了一步了。吃基我们永远在路上。
# -*- 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'])
结果展示:
好了,本期的分享到此结束,未完待续......
当你发现自己的才华撑不起野心时,请安静的坐下来学习吧。
------还是牛
本文分享自 python编程从入门到实践 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!