You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Shell脚本使用cUrl获取iframe内的响应数据

问题解答

问题1:仅通过Shell中的curl是否可以获取到iframe内的数据?如果无法通过Shell实现,请问有什么解决方案?

可以实现,不需要额外工具。
你当前单次curl请求拿到的是父页面内容,iframe的内容是浏览器加载完父页面后,单独请求iframe对应的URL才返回的,所以只要抓到iframe对应的请求地址,用curl分两步请求即可:

  1. 打开Chrome开发者工具的「网络」面板,过滤「文档」类型,手动在页面提交一次命令,找到除scpictrl.htm之外的另一个文档请求,就是iframe的请求地址(通常为类似/response.htm的路径)。
  2. 请求时需要携带Cookie关联你的命令提交请求和结果查询请求,因为示波器接口会通过Session匹配同一用户的操作。

如果抓包发现页面是通过JS动态向iframe写入内容、没有单独的iframe请求,你可以直接抓JS调用的后端数据接口地址,用curl直接请求该接口即可,比解析页面更简单。
如果确实需要渲染JS才能拿到数据,也可以在Shell中安装无头浏览器工具(比如phantomjs、playwright-cli)实现,无需图形界面即可拿到渲染后的内容。

问题2:如果可以正常获取该数据,要如何从curl的返回结果中提取目标数据?

步骤1:用curl分两步请求获取完整数据

示例命令如下,先提交命令并保存Cookie,再请求iframe地址拿结果:

# 提交SCPI命令,保存Cookie到本地文件
curl -c osc_cookie.txt -X POST "http://192.xxx.xx.xxx/scpictrl.htm" --data "request=MEAS%3ARES%3AACT%3F%20RMS&cmd=Send" > /dev/null 2>&1

# 携带Cookie请求iframe地址,替换为你实际抓到的iframe路径
curl -b osc_cookie.txt "http://192.xxx.xx.xxx/替换为你的iframe路径" > response.tmp

步骤2:提取目标科学计数法数值

用grep正则匹配即可直接提取结果:

grep -oP '[+-]?\d+\.?\d*[Ee][+-]?\d+' response.tmp

直接输出的就是你需要的6.906319E-03这类数值。

如果是用无头浏览器的方案,直接在脚本中提取iframe的textContent输出即可,不需要额外解析。

内容的提问来源于stack exchange,提问作者Hsuan Chou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:54:03