文章总结: 本文介绍了如何在无官方API支持下,通过逆向分析网络流量实现IBMDataRefinery工作流的自动化。作者详细阐述了利用浏览器开发者工具捕获隐藏API接口、构建数据精炼流程、创建作业及触发运行的具体步骤,并提供了curl示例代码与GitHub参考脚本。该方法适用于CI/CD集成场景,虽非官方支持但具备实际操作价值,解决了手动UI操作的局限性,实现了端到端的零人工干预自动化流程。 综合评分: 87 文章分类: 实战经验,逆向分析,解决方案,安全开发
使用隐藏 API 解锁 IBM Data Refinery 自动化
haidragon haidragon
安全狗的自我修养
2026年2月26日 14:55 湖南
官网:http://securitytech.cc
我最近的一位客户需要在不依赖 Web UI 的情况下自动化 IBM Data Refinery 工作流。他们的目标是将 Data Refinery 集成到一个 CI/CD 流水线中,使其能够以脚本方式端到端运行,实现零人工干预。
除了 CI/CD 之外,还有许多其他场景也适合通过 API 访问 Data Refinery,例如:实现平台之间的无缝通信、提取结构化的 JSON 响应用于下游处理,或者仅仅是为了避免渲染完整 Web 界面所带来的额外开销。
但问题在于,IBM 仅官方支持通过 Web UI 使用 Data Refinery。它没有公开文档化的 API。
那么,该如何绕过这个限制?
答案是:打开浏览器开发者工具,在执行 Data Refinery 作业时观察网络流量。通过对后台请求进行逆向分析,你可以梳理出支撑 Data Refinery UI 的 API。本指南将一步步带你完成整个过程。
在开始之前的提醒: 这种方法并非 IBM 官方支持。这些 API 未文档化,可能会在没有通知的情况下发生变化。请自行承担风险,并始终根据你所使用的 IBM Cloud Pak for Data 版本进行验证。
话虽如此,如果你必须完成任务,那我们开始吧。整个过程分为三步:创建 Flow、创建 Job、运行 Job。
第一步:捕获并创建 Data Refinery Flow
这是主要步骤:创建一个数据精炼流程(flow),作为一组有序操作来塑造数据。该 flow 通过多个步骤来执行清洗、转换和增强操作。
由于没有 API 文档,你需要依赖浏览器开发者工具。
- 首先,在 Web UI 中复现完整的 refinery 步骤并保存,同时监控网络流量。
- 查找
/shaper/api/dataflows这个 API 调用。 - 找到该 API 后,
- 打开 “Payload” 选项卡。
按 Enter 键或点击以全尺寸查看图片
在 Network 选项卡中查找高亮的 /shaper/api/dataflows 调用,这就是你需要的那个。
- 接下来,在
Request Payload下,你会看到以 JSON 格式传递给该 API 的负载数据。这是 Web 浏览器在 HTTP 请求体中发送到服务器的核心信息。
在使用 API 复现数据精炼操作时,你需要原样使用这个 payload 数据。在没有文档的情况下从零构建 payload 是非常困难的。因此,请保存这个 payload,用于后续 API 调用。
按 Enter 键或点击以全尺寸查看图片
(注意 Network 选项卡中 /shaper/api/dataflows 调用所使用的 payload,这就是你在 API 调用中需要使用的内容。)
/v2/data_flow_spark API 允许你使用刚才捕获的 payload 创建 flow 步骤。关于该 API 的更多信息,可以通过 IBM Data Refinery 的 Swagger Web UI 访问:
https://<ROUTE of CPD URL>/v2/data_flow_spark/docs/swagger/index.html#/Data_Flow/_createDataFlow
以下是创建数据精炼 flow 的 API 示例。请确保使用与生成 payload 相同的项目(project)。
curl-k-X POST -H "Authorization: Bearer <AUTH_TOKEN>"--location "https://<ROUTE>/v2/data_flow_spark?project_id=<PROJECT>" \
--header 'Content-Type: application/json'\
--data-raw '{
<PAYLOAD fromStep1>
}'
第二步:将 Flow 包装为一个 Job
使用 /v2/jobs API 创建一个 job 来执行你的 flow。这是一个已文档化的 API,详细信息可以在 IBM 官方文档中找到:
https://cloud.ibm.com/apidocs/data-ai-common-core-cpd/data-ai-common-core-cpd-5.3.0#jobs-create
你需要在 payload 中提供“Flow Reference Number(Flow 引用编号)”,它可以在第一步中使用的 payload 里找到,标签为“ref”。
“configuration.env_id” 和 “configuration.env_name” 的值可以在官方文档中找到。
curl-k-X POST -H "Authorization: Bearer <AUTH_TOKEN>"--location "https://<ROUTE>/v2/jobs?project_id=<PROJECT>" \
--header 'Content-Type: application/json'\
--data ‘{
{
"job": {
"name": "genz-customer-flow-job",
"description": "Data flow job for GenZ-Customer",
"asset_ref": "<FLOW Reference Number>",
"configuration": {
"env_id": "shaper_rruntime",
"env_name": "Default Data Refinery XS"
}
}
}’
第三步:触发 Job 运行
使用 /v2/jobs/<JOB_ID>/runs API 运行该 flow job。这也是一个已文档化的 API,详情见 IBM 官方文档:
https://cloud.ibm.com/apidocs/data-ai-common-core-cpd/data-ai-common-core-cpd-5.3.0#job-runs-create
你只需在 API 中传入第二步创建的 <JOB_ID>。
curl-k-X POST -H "Authorization: Bearer <AUTH_TOKEN>"--location "https://<ROUTE>/v2/jobs/<JOB_ID>/runs?project_id=<PROJECT>" \
--header 'Content-Type: application/json'\
--data '{
"job_run": {}
}'
执行后,该 job 会对你的数据集应用所有定义的转换步骤,并生成一个新的 CSV 文件(或你所配置的输出资产类型),其中包含精炼后的数据。
你可以查看这个示例 bash 脚本,了解如何通过 API 端到端运行 Data Refinery:
https://github.com/sanjitc/dataAI/blob/master/dr-api.sh
这种方法使我的客户能够完全自动化 Data Refinery 操作。通过逆向分析 Data Refinery 的网络流量,你可以获得自动化 flow、集成 CI/CD 流水线、通过 API 全程运行 Data Refinery 作业、避免手动 UI 操作的能力。
虽然这种方法不是 IBM 官方支持的,但只要你根据自己的 Cloud Pak for Data 环境验证 API,它就可以稳定运行。
- 公众号:安全狗的自我修养
- vx:2207344074
- http://gitee.com/haidragon
- http://github.com/haidragon
- bilibili:haidragonx
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全狗的自我修养 haidragon haidragon《使用隐藏 API 解锁 IBM Data Refinery 自动化》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论