所有文章 > 学习各类API > 如何查找和使用隐藏的API来实现流程自动化
如何查找和使用隐藏的API来实现流程自动化

如何查找和使用隐藏的API来实现流程自动化

我偶然发现了网络中的秘密通道,我所学到的知识让我实现了从未想过的自动化流程。

 让我来解释一下。

在我们大多数人的印象中,API 要么是网络应用程序拥有的,要么是没有的。但事实并非如此。每个存储数据的网络应用程序都与后台有一定的连接,而且基本上在界面上可以做的任何事情也都可以用代码完成。

您使用的工具没有公共 API,但这并不意味着您不能将其自动化。您不必总是采用困难而乏味的网络搜索技术。

在本篇文章中,我将向您介绍如何找到 “隐藏 “的 API、为什么要了解它们以及如何使用它们。我还将分享一些使用案例,比如从 Loom 视频中获取文字记录,以及将网站上原本需要大量点击的任务自动化。

什么是隐藏 API?

“隐藏 “是一个有用的误称。与其说它们是隐藏的,不如说它们是没有记录的,并不打算真正供公众使用。

开发人员使用它们在您看到的网站(前端)和保存所有数据的服务器(后台)之间来回发送信息。
例如,当您加载 Loom 视频时,页面会向 Loom 的后台 GraphQL API 发送多个请求,以加载页面上显示的信息。
当您点击查看记录时,浏览器会发送另一个 API 请求来加载这些信息,而无需重新加载页面。

很多时候,这些应用程序接口需要用户登录后才能使用。它们通过用户的浏览器 cookie 进行身份验证。其他时候,它们使用传统的 API 身份验证,如 Bearer 令牌。有时它们根本不需要验证。
根据经验,如果不需要登录就能查看页面,则 API 不需要验证。

使用这些应用程序接口所能做的许多事情也可以通过网络刮擦技术来完成。但使用 puppeteer 或 selenium 构建机器人会带来额外的复杂性和不稳定性。
事实上,大多数经验丰富的网络刮擦人员都会建议你直接使用 API(如果有的话)!

 查找隐藏的应用程序接口

一旦掌握了方法,发现隐藏的 API 就会变得出奇简单。进入你好奇的应用程序–我们将打开一个视频示例

打开 “检查元素”:右键单击网页并选择 “检查 “或按 Ctrl+Shift+I 键(Mac 用户按 Cmd+Option+I)。这将打开开发者工具。

打开 “网络 “选项卡:点击 “网络 “选项卡,查看网页发出的所有数据请求。打开后,按 F5 键刷新页面。只有当你打开它时,它才会记录网络请求。

选中 “保存日志 “和 “禁用缓存”:

这样就可以捕捉到在更换页面前发生的请求,这在提交表单时很常见。禁用缓存可以避免浏览器保存数据而不再执行请求的情况。

筛选 Fetch/XHR 和 Doc: 获取数据的请求总是 Fetch/XHR 请求,单击此按钮有助于缩小列表范围。按住 CTRL 键可选择多个选项。”Doc “请求通常是加载 .html 页面,偶尔会有一些有趣的内容。

点击一些东西,看看有什么要求(如果有的话):做任何你兴趣发现如何自动完成的事情。例如,让我们点击 “成绩单 “按钮查看成绩单,看看它是否做了什么。

在这种情况下,会出现多个请求,但没有一个请求包含有关记录誊本的数据。这是因为页面加载时已经加载了。

创建评论如何?

输入评论并点击创建,就可以了 🤩

 找到你了

对于任何请求,您都会对一些细节感兴趣:

  • 请求 URL 和方法(GET、POST 等)。可在标题 选项卡中找到。
  • 请求的标头(尤其是任何身份验证标头或 cookie 标头)。也可在 “标头“选项卡上查看。
  • 有效载荷选项卡显示与请求正文一起发送的数据。
  • 显示服务器响应的 “响应“选项卡。

有两种方法可以搜索网络请求,找到您要找的内容。

首先是使用这个 “筛选器 “框:

但这只能根据请求名称进行过滤。

点击放大镜或 CTRL/CMD + F,即可进行强大的全方位搜索。

通过使用该搜索功能,我很快就找到了获取成绩单的请求。

如果您提交的是表单,您可以尝试搜索您提交的文本,看看它是如何发送到服务器的。

好吧,但如何使用隐藏的应用程序接口?

一旦找到了隐藏的 API,下面介绍如何让它为你所用:

复制请求:右键单击网络请求,将其复制为 cURL 或 JavaScript。这样就有了一个起点。

删繁就简:复制的请求会有很多你不需要的额外内容,比如浏览器发送的头信息。99% 的情况下,除了身份验证或 cookie 头信息外,你可以移除所有头信息。

ChatGPT 寻求帮助:您可以将 cURL 请求粘贴到 ChatGPT 中,并提出相关问题。例如,”格式化此 cURL 请求,删除不用于身份验证/cookies 的头”。

Postman 或你喜欢的 API 工具进行测试。 您可以将 cURL 请求直接粘贴到 URL 栏,将其直接导入 Postman(最好先用 ChatGPT 清理一下,我发现 bash cURL 语法比 cmd 更好用)。

测试 API 调用的技巧和窍门

  • 首先逐字复制 API 调用,并使其正常工作,然后再测试各种变化,如移除标头。
  • 有时,Postman 无法按预期处理 cURL 语法。例如,我不得不手动将正文格式从文本改为 JSON。
  • 如果 API 是 GraphQL 端点,我建议您学习GraphQL内省系统,在某些情况下,自省系统可以让您发现每个可用的 API 方法。(这就像是 API 的自生成文档)。
  • 在 Postman 中使用未注明 API 的 GraphQL 时,最好将 Body 类型切换为 GraphQL。这会为变量和查询提供单独的窗口。查询应为纯文本,变量应为有效的 JSON。
    要获取这些值,只需在浏览器中打开请求有效载荷,然后单击右键分别复制每个值。
  • 需要 cookie 进行身份验证的 API 调用最终会因 cookie 过期而失败。有时,偶尔更新一下 cookie 也是值得的。
    如果你特别热衷于此,你甚至可以创建一个 Chrome 浏览器扩展,抓取 cookie 并将其发送到数据库,供你的工作流程访问。

让我们学以致用

现在是有趣的部分–让我们把学到的知识应用到几个用例中。可能性是无穷无尽的,但以下是我使用这些方法实现自动化的几个流程。

批量重放失败的 N8N 工作流程

与 Zapier 不同,n8n 无法选择多个失败的执行并重新播放。
这可能是因为 Zapier 的基础架构可以同时处理数百个请求,而每个 n8n 实例都运行在独立的机器上,如果同时启动 100 个工作流,机器就会崩溃。

无论如何,我有 300 多次失败的执行需要重放,我当然不想手动重放。

N8N 有一个 “元 “应用程序接口(API),可以提取执行和工作流信息,但该应用程序接口没有重放失败工作流的方法。

因此,我使用浏览器检查找出了重播工作流的 API 调用,并将官方 API 与这个隐藏的 API 方法相结合来重播工作流(我使用延迟来分批重播,以避免服务器不堪重负)。

 方法如下

我一边点击按钮,一边观看网络选项卡重放工作流程。

这个很好,也很明显:

工作流程也很简单:

根据 Loom 视频 URL 提取脚本

我创建了一个自动化程序,可以根据工作流的 JSON 为工作流编写文档,但我还希望能够录制一段工作流的视频,并将我所说的内容用于编写文档。

因此,我创建了一个表单,允许我添加 Loom 视频链接以及其他一些细节。

当我点击提交时,它就会启动一个工作流,该工作流会抓取文字记录,并使用人工智能根据我所说的话对工作流进行总结。

 方法如下

当我在浏览器中加载 Loom 视频时,我注意到了一系列 GraphQL 请求。点击转录按钮没有任何反应,所以我想一定是页面加载时已经提取了。

果然,就在那里:

当我检查有效载荷时,发现它有几个 URL。

经过测试,我发现可以访问 captions_source_url,它显示的是纯文本:

因此,只需两个请求,我们就能将任何公开的织布机视频转录到工作流程中!

我们需要的只是视频 ID,而这个 ID 恰好与视频 URL 中的 ID 相同。

此工作流程会提取记录并进行汇总:

第一步,我使用 Javascript 分割出 URL 的其余部分,从而提取视频 ID,并发出 GraphQL 请求以获取视频副本。

根据这一结果,第二步将抓取标题 URL 并执行 GET 请求以获取内容。

仅此而已!

 总结

如果有官方支持的应用程序接口,大多数自动操作最好还是使用它们,但如果遇到应该可以自动执行但没有合适应用程序接口的讨厌工作流,这种方法也是一个不错的选择。

#你可能也喜欢这些API文章!