首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一站式API工程实践:从代理抓包到自动化测试的Reqable终极指南

以下是一份基于Reqable的详细实例教程,涵盖代理调试、请求测试、脚本自动化等核心功能,结合实战案例与代码示例,帮助开发者快速掌握这一现代化API工具的使用技巧。

一、Reqable 简介与安装

Reqable 是一款支持 HTTP/HTTPS/WebSocket/gRPC 的多协议调试工具,集成代理抓包、API 测试、脚本自动化等功能,适用于开发、测试、爬虫等场景。

安装步骤

访问官网下载对应平台的安装包(支持 Windows/macOS)。

双击安装包,默认路径安装即可。

首次启动需安装根证书(菜单栏证书 安装根证书),确保 HTTPS 流量可解密。

二、代理调试实战:抓取移动端 App 请求

目标:捕获 Android 模拟器中 App 的 HTTP 请求。

步骤

1、配置代理

在 Reqable 中查看本机 IP 和端口(顶部操作栏显示,如192.168.1.100:8866)。

在夜神模拟器中,进入WLAN 设置 修改网络 手动代理,填写上述 IP 和端口。

2、安装证书

在 Reqable 中点击证书 Android,复制证书下载地址。

在模拟器浏览器中打开该地址,下载并安装证书(命名如reqable)。

3、启动抓包

在 Reqable 中点击启动按钮,开启代理监听。

在模拟器中运行目标 App,所有网络请求将显示在调试列表中。

示例:抓取某电商 App 搜索接口数据,筛选productName和price字段(代码参考网页1案例)。

三、API 请求测试与自动化

1. 基础请求构建

目标:发送 GET/POST 请求并验证响应。

步骤

在 Reqable 中点击新建请求,选择 HTTP 方法(如 GET)。

输入 URL(如https://api.example.com/users)。

3.添加请求头(如Content-Type: application/json)和查询参数。

4.点击发送,查看响应状态码、头部和格式化内容(支持 JSON/XML 高亮)。

示例 POST 请求

POST https://api.example.com/loginHeaders: Content-Type: application/jsonBody: {"username": "test", "password": "123456"}

2. 脚本自动化:自动添加 Token

目标:登录后自动提取 Token 并附加到后续请求头。

步骤

登录脚本(捕获登录响应并存储 Token):

from reqable import *

def onResponse(context, response):   if response.url.endswith('/login'):       token = response.body.json().get('result', {}).get('token')       context.env['token'] = token  # 存储到环境变量   return response

请求脚本(自动附加 Token):

def onRequest(context, request):   if 'token' in context.env:       request.headers['Authorization'] = f'Bearer {context.env["token"]}'   return request

四、进阶功能:请求重写与 Mock 数据

1. 修改响应内容

目标:将某 API 响应替换为本地数据。

脚本示例

def onResponse(context, response):   if response.url == 'https://api.example.com/data':       response.body = '{"status": "mocked", "data": "Hello Reqable!"}'       response.headers['Content-Type'] = 'application/json'   return response

启动脚本后,访问目标 API 将返回自定义数据。

2. 动态签名计算

目标:为请求参数生成 MD5 签名并添加到头部3。

脚本示例

import hashlib

def onRequest(context, request):   params = sorted(request.queries.items())   query_str = '&'.join([f'{k}={v}' for k, v in params])   signature = hashlib.md5(query_str.encode()).hexdigest()   request.headers['X-Signature'] = signature   return request

五、实战案例:电商数据抓取

场景:抓取某电商平台商品列表(需绕过反爬机制)。

步骤

配置代理:通过 Reqable 代理手机或模拟器流量1。

脚本处理加密参数:若请求参数被加密,使用 Reqable 脚本动态计算签名(参考网页1中的加密处理说明)1。

数据解析与存储

import csvimport requests

response = requests.get('https://api.ecommerce.com/products', headers=headers)data = response.json()['data']for item in data:   with open('products.csv', 'a') as f:       writer = csv.writer(f)       writer.writerow([item['name'], item['price']])

六、常见问题与解决

其他详情见官方文档:https://reqable.com/docs

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OZ5mo450DqlT3kbqC_vrnqvg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券