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

Python网络爬虫基础

  • App抓包
    • 1. App爬虫原理
    • 2. reqable 的安装与配置
      • reqable 安装教程
      • reqable 的配置
    • 3. 模拟器的安装与配置
      • 夜神模拟器的安装
      • 夜神模拟器的配置
        • 配置代理
        • 配置证书
    • 4. 内联调试及注意事项
      • 软件启动顺
      • 开启抓包功
      • reqable面板功
        • 列表部件功能
        • 列表数据
        • 快捷操作栏
      • 夜神模拟器设置
      • 注意事项
        • 系统浏览器会显示证书安全警告
        • 安装App应用
        • 案例练习

App抓包

1. App爬虫原理

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

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

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

为了能像使用浏览器开发者工具一样对APP数据进行抓包,就必须先要一个能够对app数据进行抓取的开发者工具。
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第1张图片

2. reqable 的安装与配置

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

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

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

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

reqable 安装教程

安装教程如下:
双击安装包,如下所示,选择想要存放的目录,如果不需要修改,使用默认的即可,然后点击Next
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第3张图片
会出现以下界面,继续点击 Next
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第4张图片
点击Install,等待几秒即可安装
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第5张图片
安装后双击运行,如下所示到这里我们就初步安装成功了
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第6张图片

reqable 的配置

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

首先你的reqable所在的电脑和手机必须处在同一个局域网内(即连着同一个路由器)。
其次需要修改reqable监听的ip和端口号,如下所示:
终端 ipconfig 查看IP地址
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第7张图片

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

最后就是需要配置证书,没有证书就会导致手机没网络。配置证书在本教程中需要配置到模拟器,后续在配置模拟器的再详细介绍。证书配置的教程在reqable中也有教程,如下所示:
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第8张图片

3. 模拟器的安装与配置

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

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

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

夜神模拟器的安装

官网下载地址:https://www.yeshen.com/
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第9张图片
双击安装包,选择安装路径,点击安装即可:
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第10张图片

夜神模拟器的配置

配置代理

工具中找到设置,在设置页面下拉找到WLAN点击
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第11张图片
长按WiredSSID,选择修改网络
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第12张图片
点击高级选项下拉框
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第13张图片
代理模式选择手动,填写代理服务器主机名代理服务器端口,点击保存
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第14张图片

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

配置证书

reqable中,找到证书安装中的Android,复制证书下载地址
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第15张图片
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第16张图片
将复制的证书地址,在模拟器中的浏览器打开下载证书并且安装

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

【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第17张图片
在地址导航栏粘贴之前复制过来的证书下载地址 : http://reqable.proxy/ssl
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第18张图片
拖动导航栏,点击下载好的证书安装
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第19张图片
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第20张图片
证书命名,任意名字都行,比如咱们这里取名 reqable
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第21张图片
设置锁屏密码
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第22张图片
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第23张图片
设置锁屏通知,随便选,设置好后即可配置好证书
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第24张图片

4. 内联调试及注意事项

软件启动顺

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

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

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

开启抓包功

如果reqable需要抓取模拟器的请求,需要在软件界面启动抓包功能,如下所示:
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第25张图片
但是如果直接这样启动会抓取到很多系统代理,我们不需要分析这类系统代理请求,可以关闭此功能,如下所示:
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第26张图片

reqable面板功

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

列表部件功能

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

列表数据

选中一个列表项,双击可以打开详情:
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第28张图片

快捷操作栏

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

夜神模拟器设置

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

注意事项

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

证书在模拟器配置好以后在系统浏览器请求页面任然会提示证书安全警告,此现象仅出现在系统浏览器应用中,可以安装其他浏览器App,那么就不会有此类警告弹出。
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第31张图片

安装App应用

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

豌豆荚官网地址:https://www.wandoujia.com/
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第32张图片
选择普通下载
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第33张图片

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

将下载的apk安装包拖入到模拟器即可安装应用
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第34张图片
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)_第35张图片

案例练习
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×tamp=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×tamp=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++)  算法  各种逆向工具的使用
        开发是正向
    3. 有的app会检测证书, 安卓逆向
    
    wx, 代理走的自定义代理协议, 逆向wx
"""

你可能感兴趣的:(【基础】Python网络爬虫,python,爬虫,开发语言)