【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)

发布时间:2024年01月01日

App抓包

1. App爬虫原理

Application(以下称App)主要指安装在智能手机上的应用程序。APP 运行在相应的操作系统上,如苹果公司的 iOS 系统或谷歌公司的 Android 系统。

App 和网站都是 Web 应用,它们与服务器通信时使用的协议是相同的。

与网站不同的是,App 的网络传输和数据收发相对隐蔽,用户既无法直接查看客户端发出的请求信息和服务器端返回的响应内容,也无法直接查看 App 的代码。

为了能像使用浏览器开发者工具一样对APP数据进行抓包,就必须先要一个能够对app数据进行抓取的开发者工具。
在这里插入图片描述

2. reqable 的安装与配置

reqable是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一 。它能够记录客户端和服务器之间的所有 请求,可以针对特定的请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

看到这么多的应用,是不是就迫不及待的想要开始你的抓包之旅呢,不要急,俗话说的好:工欲善其事,必先利其器,我们先来安装reqable吧。

官网下载地址:https://reqable.com/

在这里插入图片描述

reqable 安装教程

安装教程如下:
双击安装包,如下所示,选择想要存放的目录,如果不需要修改,使用默认的即可,然后点击Next
在这里插入图片描述
会出现以下界面,继续点击 Next
在这里插入图片描述
点击Install,等待几秒即可安装
在这里插入图片描述
安装后双击运行,如下所示到这里我们就初步安装成功了
在这里插入图片描述

reqable 的配置

如果想要对手机上的app进行抓包怎么办呢,那么你还需要进行以下操作:

首先你的reqable所在的电脑和手机必须处在同一个局域网内(即连着同一个路由器)。
其次需要修改reqable监听的ip和端口号,如下所示:
终端 ipconfig 查看IP地址
在这里插入图片描述

  • 这个ip和端口号就是手机app设置的代理,后续在手机端我们会设置

最后就是需要配置证书,没有证书就会导致手机没网络。配置证书在本教程中需要配置到模拟器,后续在配置模拟器的再详细介绍。证书配置的教程在reqable中也有教程,如下所示:
在这里插入图片描述

3. 模拟器的安装与配置

为了能像使用浏览器开发者工具一样对APP数据进行抓包,就必须要一个能运行APP的环境。目前主流的是使用模拟器进行抓包,原因有以下几点:

  • Android8.0 以上安卓系统有些数据抓取不到
  • 虚拟机环境配置相对简单,容易root之后获取更高的权限

当然也可以选择使用真机进行调试。但是实际采用真机会有很多不必要的麻烦,必须重做系统、获取root权限多多少少会影响到正常的使用,如果专门购买一个真机专门用于app调试,也免不了要多踩很多坑(国内的厂商都有自己的优化,并且手机型号、系统版本等等都会影响到调试)。

夜神模拟器的安装

官网下载地址:https://www.yeshen.com/
在这里插入图片描述
双击安装包,选择安装路径,点击安装即可:
在这里插入图片描述

夜神模拟器的配置

配置代理

工具中找到设置,在设置页面下拉找到WLAN点击
在这里插入图片描述
长按WiredSSID,选择修改网络
在这里插入图片描述
点击高级选项下拉框
在这里插入图片描述
代理模式选择手动,填写代理服务器主机名代理服务器端口,点击保存
在这里插入图片描述

注意:reqable中显示监听的ip和端口是什么,那么在这里就填写什么

配置证书

reqable中,找到证书安装中的Android,复制证书下载地址
在这里插入图片描述
在这里插入图片描述
将复制的证书地址,在模拟器中的浏览器打开下载证书并且安装

  • 打开浏览器会提示证书安全警告,大家可以点击继续,直到警告提示框消失为止

在这里插入图片描述
在地址导航栏粘贴之前复制过来的证书下载地址 : http://reqable.proxy/ssl
在这里插入图片描述
拖动导航栏,点击下载好的证书安装
在这里插入图片描述
在这里插入图片描述
证书命名,任意名字都行,比如咱们这里取名 reqable
在这里插入图片描述
设置锁屏密码
在这里插入图片描述
在这里插入图片描述
设置锁屏通知,随便选,设置好后即可配置好证书
在这里插入图片描述

4. 内联调试及注意事项

软件启动顺

因为在模拟器中配置了代理服务器主机名代理服务器端口,对应的就是reqable监听的ip和端口,所有的模拟器网关都会走这里。因此当我们单独启动模拟器的时候是没有网络的。

所以每次软件的启动的顺序如下,这样启动模拟器才会有网络:

  • 先打开reqable
  • 再打开夜神模拟器

开启抓包功

如果reqable需要抓取模拟器的请求,需要在软件界面启动抓包功能,如下所示:
在这里插入图片描述
但是如果直接这样启动会抓取到很多系统代理,我们不需要分析这类系统代理请求,可以关闭此功能,如下所示:
在这里插入图片描述

reqable面板功

完整的面板功能介绍请参考官方文档:http://reqable.com/docs/overview

列表部件功能

在这里插入图片描述

列表数据

选中一个列表项,双击可以打开详情:
在这里插入图片描述

快捷操作栏

在这里插入图片描述

夜神模拟器设置

在这里插入图片描述

注意事项

系统浏览器会显示证书安全警告

证书在模拟器配置好以后在系统浏览器请求页面任然会提示证书安全警告,此现象仅出现在系统浏览器应用中,可以安装其他浏览器App,那么就不会有此类警告弹出。
在这里插入图片描述

安装App应用

系统应用无法安装App应用,如需安装可以在豌豆荚下载App应用安装包

豌豆荚官网地址:https://www.wandoujia.com/
在这里插入图片描述
选择普通下载
在这里插入图片描述

下载的文件尾缀是apk,此格式也是安卓应用安装包格式

将下载的apk安装包拖入到模拟器即可安装应用
在这里插入图片描述
在这里插入图片描述

案例练习
import csv
import requests

url = 'http://mapi7.dangdang.com/index.php?page_version=new2&access-token=&time_code=38a2af8629a8657119656d2e6a4ec9cc&img_size=e&client_version=10.12.4&pageSize=10&union_id=537-100998&timestamp=1689771977&province_id=111&permanent_id=20230719210103107521432505121491489&a=all-search&global_province_id=111&page_action=search&c=search&sort_type=default_0&keyword=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C&udid=1ac073189a158030f2c050f1bcf23f27&user_client=android&page=1'
# url = 'http://mapi7.dangdang.com/index.php?passback=c5e4133e68646b00c9dfb764fe0100009e44c800c9dfb764&page_version=new2&access-token=&time_code=ef9523739c8dd3da26e8c9faa25a6ed8&img_size=e&client_version=10.12.4&pageSize=10&union_id=537-100998&timestamp=1689772443&province_id=111&permanent_id=20230719210103107521432505121491489&a=all-search&global_province_id=111&page_action=search&isKeepTrace=1&c=search&sort_type=default_0&keyword=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C&udid=1ac073189a158030f2c050f1bcf23f27&user_client=android&page=2'
headers = {
    'Content-type': 'application/json',
    'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 7.1.2; SM-G988N Build/NRD90M)',
    'Host': 'mapi7.dangdang.com',
    'Connection': 'Keep-Alive',
    'Accept-Encoding': 'gzip',
}

response = requests.get(url=url, headers=headers)
json_data = response.json()
# print(json_data)

# 数据提取
data_list = json_data['data']['product']

for data in data_list:
    productName = data.get('productName')  # 书名
    """数据包中包含了 '为您推荐' 和 '您是不是想找' 类目的数据, 可以通过判断逻辑过滤掉"""
    if not productName:  # 如果productName没数据就跳过这次循环
        print(None)
        continue

    author = data.get('author')  # 作者
    price = data.get('price')  # 价格
    commentCount = data.get('commentCount')  # 评价数量
    goodCommentRate = data.get('goodCommentRate')  # 好评率
    print(productName, author, price, commentCount, goodCommentRate, sep=' | ')
    with open('当当.csv', mode='a', encoding='utf-8', newline='') as f:
        csv_write = csv.writer(f)
        csv_write.writerow([productName, author, price, commentCount, goodCommentRate])

"""
说明:
    1. 模拟器安装app有的会检测应用环境- root -其他环境
    2. app请求的数据会被加密  js加密  安卓加密 --> 安卓逆向
        java 汇编语言(c++)  算法<app会加壳>  各种逆向工具的使用
        开发是正向
    3. 有的app会检测证书, 安卓逆向
    
    wx, 代理走的自定义代理协议, 逆向wx
"""
文章来源:https://blog.csdn.net/weixin_43612602/article/details/135323031
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。