将 curl 转换为 Lua

curl2code 使用 http 库将 curl 命令转换为 Lua 代码。转换过程通过 WebAssembly 在您的浏览器中运行,以确保完全的隐私。对于 Python,请查看我们的 curl 转 Python 转换器。对于 Ruby,请参阅 curl 转 Ruby。下方是实用的 Lua 示例。

如何从浏览器复制 curl

  1. 1

    打开开发者工具

    F12Ctrl+Shift+I 打开浏览器开发者工具。

  2. 2

    进入 Network 标签页

    点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。

  3. 3

    复制为 cURL

    右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。

常见问题解答

什么是 Lua http?

lua-http(或来自 LuaSocket 的 socket.http)是在 Lua 中发起 HTTP 请求的标准方式。它提供基础的 GET、POST 和自定义请求方法。如需更多功能,lua-resty-http 在 OpenResty/Nginx 环境中很流行。通过 luarocks install http 安装。curl2code 使用 http 模块生成代码。

socket.http 对比 lua-resty-http 对比 lua-curl —— 该用哪一个?

socket.http (LuaSocket) 是通用 Lua 的标准。lua-resty-http 用于具有非阻塞 I/O 的 OpenResty/Nginx。lua-curl 包装了 libcurl 以提供完整的协议支持。独立脚本使用 socket.http,Web 服务器使用 resty-http。有关类似的脚本编写,请参阅 curl 转 Pythoncurl 转 Ruby

如何在 Lua 中处理身份验证?

在 headers 表中设置 Authorization 请求头:headers = { Authorization = "Bearer token" }。对于 Basic 认证,使用 base64 库进行编码:"Basic " .. base64.encode(user .. ":" .. pass)。在请求选项表中传递 headers。curl2code 处理 -u 和请求头标志。

如何在 Lua 中发送多部分表单数据?

手动构建带有边界字符串的多部分主体,或使用 multipart-post 等辅助库。设置带有边界的 Content-Type 请求头。LuaSocket 的 http.request 接受一个用于流式传输大型上传的 source 函数。curl2code 将 -F 标志转换为 Lua 语法。

如何在 Lua 中处理 HTTP 错误?

LuaSocket 的 http.request 返回多个值:body, code, headers, status = http.request(url)。检查 code 获取 HTTP 状态(200、404 等),或在网络故障时检查其是否为 nil。使用 Lua 的 assert()if not body then 模式进行错误检查。

如何在 Lua 中解析 JSON?

使用 cjson 模块(快速,基于 C):local data = cjson.decode(json_string)。对于编码:cjson.encode(table)。在 OpenResty 中,cjson 是预装的。对于独立 Lua,通过 luarocks install lua-cjson 安装。或者使用纯 Lua 编写的 dkjson

如何在 Lua 中设置超时?

使用 LuaSocket:全局设置 http.TIMEOUT = 30,或创建一个自定义连接并调用 :settimeout(30)。在 lua-resty-http 中,使用 httpc:set_timeout(30000)(毫秒)。超时可以防止脚本在无响应的服务器上无限期挂起。

如何在 Lua 中使用代理?

使用 LuaSocket 时,在请求选项中设置 proxy 字段:http.request{ url = target, proxy = "http://proxy:8080" }。对于 lua-resty-http,直接连接到代理并使用 CONNECT 方法进行 HTTPS 隧道传输。curl2code 将 -x 标志转换为适当的 Lua 代理设置。

如何在 Lua 中发送带有 JSON 正文的 POST 请求?

使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 命令转换为 Lua。生成的代码使用 http.request(url, json_body, headers)。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 http 代码中设置相应的 Content-Type 请求头。

如何在 Lua 中添加 Bearer 令牌授权?

curl -H "Authorization: Bearer YOUR_TOKEN" URL 传递给 curl2code,它会生成带有认证请求头的 http 代码:headers['Authorization'] = 'Bearer YOUR_TOKEN'。curl2code 会从 -H "Authorization: Bearer ..."--oauth2-bearer 标志中检测 Bearer 令牌。对于 Basic auth,请使用 -u user:pass

如何在 Lua 中设置 Content-Type 请求头?

curl2code 将 curl -H "Content-Type: application/json" URL 转换为带有正确请求头的 http 代码:headers['Content-Type'] = 'application/json'。对于 -d 数据,curl 默认使用 application/x-www-form-urlencoded;对于 -F 表单上传,它使用 multipart/form-data。curl2code 会将每一项映射到正确的 http API。

有用链接

curl 指南

将 curl 转换为其他语言