
node.js + express + docker + mysql + jwt 实现用户管理restful api
我偶然发现了网络中的秘密通道,我所学到的知识让我实现了从未想过的自动化流程。
让我来解释一下。
在我们大多数人的印象中,API 要么是网络应用程序拥有的,要么是没有的。但事实并非如此。每个存储数据的网络应用程序都与后台有一定的连接,而且基本上在界面上可以做的任何事情也都可以用代码完成。
您使用的工具没有公共 API,但这并不意味着您不能将其自动化。您不必总是采用困难而乏味的网络搜索技术。
在本篇文章中,我将向您介绍如何找到 “隐藏 “的 API、为什么要了解它们以及如何使用它们。我还将分享一些使用案例,比如从 Loom 视频中获取文字记录,以及将网站上原本需要大量点击的任务自动化。
“隐藏 “是一个有用的误称。与其说它们是隐藏的,不如说它们是没有记录的,并不打算真正供公众使用。
开发人员使用它们在您看到的网站(前端)和保存所有数据的服务器(后台)之间来回发送信息。
例如,当您加载 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 页面,偶尔会有一些有趣的内容。
点击一些东西,看看有什么要求(如果有的话):做任何你有兴趣发现如何自动完成的事情。例如,让我们点击 “成绩单 “按钮查看成绩单,看看它是否做了什么。
在这种情况下,会出现多个请求,但没有一个请求包含有关记录誊本的数据。这是因为页面加载时已经加载了。
创建评论如何?
输入评论并点击创建,就可以了 🤩
找到你了
对于任何请求,您都会对一些细节感兴趣:
有两种方法可以搜索网络请求,找到您要找的内容。
首先是使用这个 “筛选器 “框:
但这只能根据请求名称进行过滤。
点击放大镜或 CTRL/CMD + F,即可进行强大的全方位搜索。
通过使用该搜索功能,我很快就找到了获取成绩单的请求。
如果您提交的是表单,您可以尝试搜索您提交的文本,看看它是如何发送到服务器的。
一旦找到了隐藏的 API,下面介绍如何让它为你所用:
复制请求:右键单击网络请求,将其复制为 cURL 或 JavaScript。这样就有了一个起点。
删繁就简:复制的请求会有很多你不需要的额外内容,比如浏览器发送的头信息。99% 的情况下,除了身份验证或 cookie 头信息外,你可以移除所有头信息。
向 ChatGPT 寻求帮助:您可以将 cURL 请求粘贴到 ChatGPT 中,并提出相关问题。例如,”格式化此 cURL 请求,删除不用于身份验证/cookies 的头”。
用 Postman 或你喜欢的 API 工具进行测试。 您可以将 cURL 请求直接粘贴到 URL 栏,将其直接导入 Postman(最好先用 ChatGPT 清理一下,我发现 bash cURL 语法比 cmd 更好用)。
现在是有趣的部分–让我们把学到的知识应用到几个用例中。可能性是无穷无尽的,但以下是我使用这些方法实现自动化的几个流程。
与 Zapier 不同,n8n 无法选择多个失败的执行并重新播放。
这可能是因为 Zapier 的基础架构可以同时处理数百个请求,而每个 n8n 实例都运行在独立的机器上,如果同时启动 100 个工作流,机器就会崩溃。
无论如何,我有 300 多次失败的执行需要重放,我当然不想手动重放。
N8N 有一个 “元 “应用程序接口(API),可以提取执行和工作流信息,但该应用程序接口没有重放失败工作流的方法。
因此,我使用浏览器检查找出了重播工作流的 API 调用,并将官方 API 与这个隐藏的 API 方法相结合来重播工作流(我使用延迟来分批重播,以避免服务器不堪重负)。
方法如下
我一边点击按钮,一边观看网络选项卡重放工作流程。
这个很好,也很明显:
工作流程也很简单:
我创建了一个自动化程序,可以根据工作流的 JSON 为工作流编写文档,但我还希望能够录制一段工作流的视频,并将我所说的内容用于编写文档。
因此,我创建了一个表单,允许我添加 Loom 视频链接以及其他一些细节。
当我点击提交时,它就会启动一个工作流,该工作流会抓取文字记录,并使用人工智能根据我所说的话对工作流进行总结。
方法如下
当我在浏览器中加载 Loom 视频时,我注意到了一系列 GraphQL 请求。点击转录按钮没有任何反应,所以我想一定是页面加载时已经提取了。
果然,就在那里:
当我检查有效载荷时,发现它有几个 URL。
经过测试,我发现可以访问 captions_source_url,它显示的是纯文本:
因此,只需两个请求,我们就能将任何公开的织布机视频转录到工作流程中!
我们需要的只是视频 ID,而这个 ID 恰好与视频 URL 中的 ID 相同。
此工作流程会提取记录并进行汇总:
第一步,我使用 Javascript 分割出 URL 的其余部分,从而提取视频 ID,并发出 GraphQL 请求以获取视频副本。
根据这一结果,第二步将抓取标题 URL 并执行 GET 请求以获取内容。
仅此而已!
如果有官方支持的应用程序接口,大多数自动操作最好还是使用它们,但如果遇到应该可以自动执行但没有合适应用程序接口的讨厌工作流,这种方法也是一个不错的选择。
node.js + express + docker + mysql + jwt 实现用户管理restful api
nodejs + mongodb 编写 restful 风格博客 api
表格插件wpDataTables-将 WordPress 表与 Google Sheets API 连接
手把手教你用Python和Flask创建REST API
使用 Django 和 Django REST 框架构建 RESTful API:实现 CRUD 操作
ASP.NET Core 打造一个”最安全”的API接口
ASP.NET Web API快速入门介绍
2024年在线市场平台的11大最佳支付解决方案
完整指南:如何在应用程序中集成和使用ChatGPT API