监听网页请求
监听网页请求 用于在一段操作期间监听页面发出的网络请求,按资源类型和网址规则捕获请求与响应信息。它是一个「块」指令:把会触发请求的操作放进它的子节点里执行,块执行完成后监听会自动停止。
指令标识:WebRequestListener
指令类型:网页指令
指令描述:启动网络请求监听器,按过滤规则捕获请求信息,块执行完自动停止
先选使用方式
Section titled “先选使用方式”工作流支持「可视化编排」和「代码编排」两种创建方式。监听网页请求 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。
| 方式 | 怎么用 | 适合人群 |
|---|---|---|
| 可视化编排(推荐先学) | 拖入「监听网页请求」块节点,在块内放入触发请求的操作 | 大多数用户,零代码,适合快速搭建和调试 |
| 代码编排(Python) | 在脚本中调用 bots.webRequestListener(...) 配置监听 | 熟悉代码、需要复用脚本或批量生成流程的用户 |
第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。
什么时候用?
Section titled “什么时候用?”- 需要抓取页面在某个操作时发出的接口请求和返回数据。
- 想在点击、搜索、翻页时,捕获背后的 XHR / Fetch 接口响应。
- 需要把接口返回的数据提取出来供后续节点使用。
监听到的数据要通过 获取网页监听结果 在块内提取并保存到变量。
- 当前已经有打开的页面。
- 已经确认要捕获的资源类型(如
xhr、fetch)和网址过滤规则。 - 把会触发目标请求的操作(点击、翻页等)放进监听块内部。
- 提取结果的「获取网页监听结果」节点也要放在块内,因为监听只在块执行期间生效。
可视化编排:从 0 到跑通
Section titled “可视化编排:从 0 到跑通”下面用一个常见场景演示:点击查询按钮,捕获背后的接口响应。
- 确认页面已经打开并加载完成。
- 添加 监听网页请求 块节点,设置要捕获的资源类型(如
xhr,fetch)和网址规则。 - 在块内放入 点击元素,点击查询按钮触发接口请求。
- 在块内再放入 获取网页监听结果,按目标接口路径提取并保存到变量。
- 运行后查看变量是否得到对应接口的响应数据。
| 界面名称 | 代码属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| 筛选资源类型 | resourceTypes | List<Enum> | 否 | XHR | 要捕获的网络请求文件类型,多个用逗号分隔,默认 XHR。可选值:XHR、FETCH、JS、CSS、DOCUMENT(文档)、IMAGE(图片)、FONT(字体)、MEDIA(媒体)、TEXT_TRACK、EVENT_SOURCE、WEB_SOCKET、MANIFEST、OTHER(其他)、ALL(全部)。推荐用 XHR、FETCH 捕获接口数据。 |
| 资源路径Url | resourceUrls | List<String> | 否 | [] | 按网址过滤要捕获的请求,支持多个(逗号分隔),留空([])表示捕获全部请求。eg:/api/order/* |
| 根据通配符匹配 | isPattern | Boolean | 否 | false | 为 true 时对网址规则启用通配符(*)或正则表达式匹配;为 false 时按包含匹配。 |
监听本身不直接输出变量,捕获到的数据由块内的 获取网页监听结果 节点提取并保存。捕获内容包含请求的类型、网址、方法、请求头、请求体,以及响应状态、响应头和响应体(文本类资源会捕获响应体,二进制资源不捕获响应体)。
说明:为避免占用过多内存,监听对捕获数据总量有上限,超过后新请求不再缓存。
监听网页请求节点运行结束后状态为成功。- 运行日志中没有参数缺失、超时或执行失败等错误。
- 后续节点能够继续执行,流程没有因为该节点异常中断。
| 现象 / 报错原文 | 可能原因 | 处理建议 |
|---|---|---|
| 没有捕获到任何请求 | 触发请求的操作没放进块内,或过滤规则太严 | 把点击、翻页等操作放进监听块内部;放宽资源类型和网址规则 |
| 捕获到请求但没有响应体 | 资源是二进制类型,或响应体读取失败 | 仅 xhr、fetch、document 等文本类资源会捕获响应体 |
| 提取结果报「listener is not active」 | 「获取网页监听结果」放到了块外面 | 把提取结果节点放回监听块内部 |
Python 代码编排
Section titled “Python 代码编排”代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。
监听是一个「块」结构:触发请求的操作和提取结果要在监听生效期间执行。可视化编排里通过把它们放进监听块内部来实现,代码编排里同样需要按这个先后顺序组织:
# 配置监听:捕获 xhr / fetch,按网址包含匹配bots.webRequestListener( resourceTypes="xhr,fetch", resourceUrls="/api/order/query",)
# 触发请求的操作(块内)bots.clickElementMixed(selector="//button[text()='查询']")
# 提取监听结果(块内)result = bots.getWebListenerResult( resourceUrl="/api/order/query", outKey="orderApi",)print(result)如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。
Q1:监听什么时候停止?
Section titled “Q1:监听什么时候停止?”A: 监听块内的所有子节点执行完成后,监听会自动停止并清理。不需要手动关闭。
Q2:为什么一定要把操作放进块内?
Section titled “Q2:为什么一定要把操作放进块内?”A: 监听只在块执行期间生效。触发请求的操作如果在块外执行,监听已经停止,自然捕获不到。
Q3:网址规则按什么方式匹配?
Section titled “Q3:网址规则按什么方式匹配?”A: 默认按「包含」匹配;把「是否使用通配/正则」设为 true 后按模式匹配,可使用 *、? 等通配符。