首页 > 技术文章 > Python3 采集APP数据及相关配置

54sen 2018-04-18 22:28 原文

 

第一次搞APP,咱就找个简单的先入个门,这里我就以追书神器为例吧

 

我采用的工具,如下:

夜神模拟器(安装APP)、Fiddler(抓包)、Pycharm(敲代码)

 

前期配置方面我是以这几位前辈的经验来进行的,贴它:

  https://www.jianshu.com/p/724097741bdf

  https://blog.csdn.net/qq_37275405/article/details/81181439

  https://www.cnblogs.com/zengxuejie/p/11526152.html

  这仨可以综合借鉴下,完成配置不成问题

 

如果不想看上面的,那配置这一块儿咱就简单说下,我这给分为三步

 第一步、电脑上下载安装 Fiddler,安装完成后打开修改如下设置:

Capture HTTPS CONNECTs(捕获 HTTPS 连接)
Decrypt HTTPS traffic (HTTPS 请求解密)
安装证书(首次使用无证书,会弹出是否信任fiddler证书和安全提示,直接点击yes就行)

 

Allow remote computers to connect(允许其他设备连接)

Fiddler listens on port:8888(端口号,默认:8888)

   上述两处都设置好后重启 Fiddler 生效!

 

第二步、电脑上下载安装 夜神模拟器,安装完成后打开修改如下设置:

可以先通过Fiddler 的 Online 查看IP地址,也可以 cmd -> ipconfig 查看

 

   然后就是配置桥接,实现网络互通(在同一个IP段上)

我这里用的是台式机,笔记本的也一样,最终网络互通即可

 

 配置完网络后,接下来安装证书,在夜神模拟器上通过浏览器访问电脑的IP+端口(默认8888),结果如下图:

 

 第三步、安装证书,设置代理

点击下载证书

 

下载完成后,双击安装

 

 

 

 

 

保存重启模拟器

 

在模拟器上安装APP,模拟器上的请求都会被Fiddler抓取到!!!

 

 

 

 

 

 

 

 

 

到这里已经配置完了,其实APP的具体采集代码与web端采集并无明显区别

咱们先看看Fiddler上的响应连接,如下图:

 

 贴代码,瞅瞅是不是挺简单的

 1 #!/usr/bin/python
 2 # -*-coding:utf-8 -*-
 3 import json, requests
 4 
 5 
 6 def info_get(url):
 7     head = {
 8         'X-Device-Id': '863254010188612',
 9         'X-User-Agent': 'ZhuiShuShenQi/4.55.1 (Android 5.1.1; Xiaomi Sagit / Xiaomi MI 6; CHINA MOBILE)[preload=false;locale=zh_CN;clientidbase=]',
10         'x-android-id': 'bc3d85bb2fa34378',
11         'User-Agent': 'ZhuiShuShenQi/4.55.1 (Android 5.1.1; Xiaomi Sagit / Xiaomi MI 6; CHINA MOBILE)[preload=false;locale=zh_CN;clientidbase=]',
12         'Host': 'b01.zhuishushenqi.com',
13         'Connection': 'Keep-Alive',
14         'Accept-Encoding': 'gzip',
15     }
16     res = requests.get(url=url, headers=head, timeout=3, verify=False)
17     return res
18 
19 
20 if __name__ == '__main__':
21     item = {}
22     url = "http://b01.zhuishushenqi.com/category/fuzzy-search?alias=ns_xuanhuan&packageName=com.ushaqi.zhuishushenqi&sort=1&cat=东方玄幻&start=0&limit=30"
23     res = info_get(url).json()
24     print(json.dumps(res, ensure_ascii=False))

 

推荐阅读