Playground
Playground (侧边栏 > Playground) 允许您使用真实的密钥运行实时 API request,而无需编写任何代码。这是尝试新目标网站,调试棘手 response,或并排比较 Auto,Single,Proxy 和 Browser 的最快方法。
在 foura.ai/dashboard#playground 打开它。
功能介绍
一个表单。四个引擎。真实流量。
- Auto: 智能获取。您传递 URL 以及
validate规则,FourA 会选择最有效且成本最低的路径。 - Single: 具有类似浏览器真实网络特征的直接 HTTP 获取
- Proxy: 托管的轮换 proxy 获取,可选择限制在目标可见的国家/地区
- Browser: 在 Chrome 浏览器实例中打开 URL 以处理 JS 渲染的网站
Request 使用您在页面顶部选择的 API 密钥运行。使用量会像生产调用一样计入该密钥的配额,因此请不要在测试中耗尽您的计划。
选择密钥
API 密钥下拉列表显示您范围内的所有活动密钥: 个人密钥,您管理的组织密钥以及您可以访问的团队共享密钥。选择您希望用于 request 计费的密钥。如果您还没有任何活动密钥,内联提示会将您链接到 API Keys 页面以创建一个。
选择模式
顶部的 Mode 行在 Auto 和手动引擎之间切换。选中 Auto 时,表单会切换到最小的 Auto 界面 (URL 加上 validate 以及一些旋钮)。当您关闭 Auto 时,会出现三个选项: Single,Proxy,Browser。切换选项会更改可见的字段以及 request 命中的引擎。重新加载页面时,当前选择将被保留。
| Mode | 何时使用 |
|---|---|
| Auto | 新目标或混合保护的网站。Auto 选择成本最低的路径并记住有效的方法。 |
| Single | 快速 HTTP 获取。已知主机的最佳首选。 |
| Proxy | 带有自动 proxy 轮换的相同获取。当您需要目标可见的国家/地区时设置 exitCountries。 |
| Browser | 在 Chrome 浏览器实例中加载页面。在数据仅在 JavaScript 运行后出现时使用。 |
构建 Request
URL 行
顶行包含 HTTP 方法 (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS),目标 URL 和 Send 按钮。Single,Proxy 和 Auto 支持每种方法。Browser 忽略该方法 (Chrome 始终为导航发出 GET) 以及正文。
Request 选项卡
在 URL 行下方,五个选项卡允许您填写其他所有内容:
| 选项卡 | 控制内容 |
|---|---|
| UI | 用于超时,重定向,标志,proxy,浏览器特定选项和验证规则的表单字段 |
| Body | 用于 POST / PUT / PATCH request 的自由格式正文 |
| Headers | 作为键值对的自定义 request header |
| Cookies | 与 request 一起发送的 cookie |
| Raw | 将发送的确切 JSON payload,可直接编辑 |
无论在 UI、Body、Headers 还是 Cookies 中进行修改,都会反映在 Raw 中。也可以直接编辑 Raw,其他选项卡会相应更新。任何包含非引擎默认值的选项卡或可折叠部分都会出现一个红点,方便一眼看出自定义的内容。
UI 面板部分
UI 选项卡将设置分组到可折叠部分。空字段将回退到引擎的 schema 默认值。不适用于当前 Mode 的部分会被隐藏。
- Timeouts:
timeout_ms,connect_timeout_ms,accept_timeout_ms,server_response_timeout_ms,dns_cache_timeout_sec。Auto 仅公开timeout_ms(总预算)。 - Redirects: 切换并设置
followRedirects(0-20)。适用于 Single、Proxy 和 Auto。Browser 会自行跟随重定向。 - Flags:
unblocker适用于 Single、Proxy 和 Browser(Browser 上的 unblocker 会触发自动防御求解器);tryJsonData和returnBuffer适用于 Single 和 Proxy。Auto 改为公开forceProxy和returnSession。 - Proxy: 为 Single 或 Browser 选择特定的 proxy ID,或为 Proxy 引擎设置
maxTries、Proxy 外部超时、exitCountries和ignoreProxies。Auto 还公开了ignoreProxies。 - Browser profile: 包含 os、browser 和 version 三个级联下拉列表,列出了 FourA 实际可呈现的内容。它们在 Single 和 Proxy 模式下显示。如果要使用最新的 Chrome,请将它们留空。每个选项都会缩小另外两个选项的范围,因此不会出现无匹配结果的组合。此部分需要开启 Web Unblocker,如果关闭,将不发送 browser headers,profile 只能部分应用,且 API 会拒绝 request。
- Browser: 仅限 Browser 的选项,例如
checkStatus和checkText。 - Validate:
validate.status(status codes)、validate.headers(header 键值规则)和validate.data(body accept / fail 子字符串,以|分隔的备选项)的 accept / fail 规则。适用于包括 Auto 在内的所有 Mode。
退出国家或地区作用域(Proxy 模式)
Proxy 上的 exitCountries 字段接受逗号分隔的两个字母组成的对目标可见的国家或地区代码列表(CZ, GB)。提交时会自动去除首尾空格、转换为大写并去重。该选择属于严格的 allowlist,即具有未知退出节点的 proxy 将被排除,且 request 绝不会回退到其他国家或地区。如果当前池中没有匹配项,response 将返回 code: "no_eligible_proxy",并在 details.exitCountries 中回显请求的作用域。请保留该作用域并稍后重试。
当在作用域限定下 proxy 调用成功时,response 条带会在 proxy ID 旁边显示 exit <CODE>,以便验证提供的国家或地区是否与请求的一致。
工具栏重置
工具栏上的 Reset 按钮(位于 History 和 Saved 旁边)可将 playground 清理为初始状态。由于该操作具有破坏性,它会打开一个确认对话框,准确列出将被清除的内容:所有三种产品表单(Single、Proxy、Browser)、cookie jar 中保存的任何 cookie、任何携带的 proxy 以及当前的 response。保存的预设和选定的 API key 将被保留。点击 Reset everything 确认,其他任何操作都会取消。
Sending and Canceling
点击 Send 发送 request。当调用进行时,右侧栏会切换到带有旋转器和 Cancel 按钮的加载状态。点击 Cancel(或在移动设备上再次点击该按钮)即可中止。取消的 request 会恢复带有"Request canceled."的空闲占位符,而不是渲染错误。
request 完成(或失败)时,response 卡片会立即切换到结果。Auto 运行可能比手动引擎耗时更长,因为该阶梯在遇到冷目标时可能需要攀爬多个层级。
Reading the Response
response 列镜像 request 布局并具有自己的选项卡:
| 选项卡 | 显示内容 |
|---|---|
| Body | 解析后的 body。根据返回内容在 JSON、HTML 和 Text 视图之间切换。 |
| Headers | Response header,每行一个。 |
| Cookies | 目标返回的 cookie,提供解析(按主机分组)和原始(Set-Cookie 文本)视图。解析视图在仅主机 cookie 上显示 HO 徽章,域名 cookie 没有标记。 |
| Raw | API 返回的完整 JSON 封装。 |
选项卡上方的元数据条显示上游 HTTP 状态、总时间、处理该调用的 proxy ID,以及(对于作用域 Proxy 调用)两个字母的 exit <CODE>。对于 Auto 运行,该数据条还显示传递 response 的阶梯层级、子尝试次数以及消耗的积分。
Carry Values Between Runs
在返回可重用会话数据的任何运行之后,response 工具栏上的一个小型 Carry 控件会显示可用内容:
- Auto 运行提供完整的
session三元组(proxy、cookies、userAgent)。 - Browser 运行提供 response
userAgent,如果使用了 proxy 则加上 proxy ID。 - Proxy 运行提供返回的 proxy ID。
点击 Carry 并一键选择应用每个值的位置:userAgent 在 Single 或 Proxy 上变为 User-Agent header,而 proxy ID 则放入 Single 或 Browser 的 proxy 字段中。接收携带值的字段会显示“已修改”红点,以便您查看更改内容。
Expand to Full Screen
response 工具栏上的展开图标可将 response 卡片从分割布局中提升到全屏覆盖层中。对于较深的 JSON 树、较长的 Set-Cookie 转储或半宽列变得拥挤的宽 HTML body,请使用此功能。覆盖层打开时页面本身停止滚动。再次点击该图标(或按 Escape)即可折叠。
The curl Reproducer
在 response 下方,curl 代码块显示了刚刚构建的 request 的确切命令行等效代码。复制它即可从终端重现 request,将其分享给团队成员,或粘贴到 bug 报告中。
对于可显示的密钥,代码段旁边的 Reveal key 按钮会将真实的纯文本密钥直接插入 curl 中,以便您直接复制并运行。再次点击即可隐藏。旧密钥 (在显示功能发布之前创建) 会保留 PASTE_PLAINTEXT_FOR_<key-name> 占位符; 请从 API Keys 页面重新生成密钥以使其可显示。
每次显示操作都会在服务器上进行审计日志记录,且纯文本密钥仅存在于当前页面会话的内存中。
保存预设
如果您发现自己反复重新配置同一个目标,请将其保存。点击 request 选项卡行上的 Save,将当前配置保存为命名预设。
在工具栏中打开 Saved 以浏览、重命名或删除您的预设。点击任何预设将其重新加载到表单中。
| 预设字段 | 存储内容 |
|---|---|
| Name | 简短标签 (最多 100 个字符) |
| Description | 可选备注 (最多 500 个字符) |
| Endpoint | 预设适用的引擎 (auto / single / proxy / browser) |
| Config | 完整的 request payload,包含 UI 字段、headers、cookies 和 body |
预设的作用域仅限于您的用户帐户,不会与团队成员共享。
从历史记录中重放
运行的每个 request 都会被记录。在工具栏中打开 History 以查看您最近的 20 次运行,按最新排序。
每行显示 endpoint、目标 URL、状态和时间。点击任意行上的 Replay 将该 request 重新加载到表单中,然后点击 Send 再次运行。
历史记录自动将作用域限制于您的帐户: 您只能看到自己的运行记录。
从活动中打开
Activity Log 详情对话框有一个 Open in Playground 按钮。点击它,Playground 将加载已归档的 request 和已归档的 response。表单会从存储的 payload 中填充,response 卡片会显示 API 当时返回的内容,并在 proxy 元数据条上显示 "archived" 徽章 ("archived
在这里您可以更改参数并点击 Send 针对实时 API 运行新的 request,或者仅检查已归档的 payload 而不重新运行它。payload 会保留 24 小时,因此较早的 Activity 行不会有可重新加载的 response。
提示
- 在针对新目标编写代码之前,请先在 Playground 中进行测试。开启 Auto 后,您将在几秒钟内知道廉价的 fetch 是否足够,或者该网站是否强制要求 browser 解决。
- 对于限制国家/地区的目标,请运行一次设置了
exitCountries的 Proxy 调用,然后将返回的 proxy ID 带入 Browser 调用中,以便 JavaScript 渲染通过同一个出口进行。 - 为您定期抓取的每个目标保存预设。重放已保存的预设只需单击一次,而从头重构 request 则需要更长的时间。
- 使用 Cookies 选项卡来调试基于会话的抓取。原始的 Set-Cookie 视图会确切显示目标发送的内容。
- 当目标拒绝您时,请在尝试更重的引擎之前,尝试 Browser profile 选择中的其他条目。交换呈现的浏览器是免费的,而 browser 渲染则不是。
- Playground request 会计入您选择的密钥。如果您希望保持生产使用记录清晰,请使用专用的低配额密钥进行日常探索。
相关内容
- API Endpoints: 所有四个引擎的完整参数参考,包括
exitCountries和 browser profile 字段 - Smart Fetch (Auto): Auto 在底层的运行机制
- Choosing the Right Endpoint: 何时选择 Auto、Single、Proxy 或 Browser
- API Keys: 管理用于验证 Playground request 的密钥
- Activity Log: 直接在 Playground 中打开过去的 request
- Dashboard Overview: 所有侧边栏部分