如何使用 Curl 发送 GET 和 POST 请求?

rak*_*ana 4 command-line curl syntax 14.04

如何使用命令行将带有参数gimmeflag和值的GET 和 POST 请求发送please到 URL ?http://103.200.7.150:7777/curl

Vid*_*uth 6

似乎您在学习教程或书籍,这是一种测试您是否掌握基础知识的厚颜无耻的方法。

通过 curl 或浏览器调用http://103.200.7.150:7777/ 会产生以下输出:

请向我发送带有参数“gimmeflag”和值“请”的请求方法 GET 和 POST

让我们把它分解成两个部分,因为你想知道它与如何做curl(见man 1 curl卷曲手动)。

使用 GET 发送您的请求:

如果你知道 a 的query-string样子,这很容易。

在万维网上,查询字符串是统一资源定位符 (URL) 的一部分,其中包含不适合分层路径结构的数据。查询字符串通常包括由 Web 浏览器或其他客户端应用程序添加到基本 URL 的字段,例如作为 HTML 表单的一部分。

Web 服务器可以通过基于 URL 路径从其文件系统读取文件或使用特定于资源类型的逻辑处理请求来处理超文本传输​​协议请求。在调用特殊逻辑的情况下,查询字符串将可供该逻辑用于其处理以及 URL 的路径组件。(来源

您想发送一个参数gimmeflag和一个值please。所以你要请求的行curl是:

curl -X GET http://103.200.7.150:7777/?gimmeflag=please
Run Code Online (Sandbox Code Playgroud)

从服务器返回的结果:

KSL{n0w_y0u_Know_How_To

使用 POST 发送您的请求:

鉴于 GET 行,POST 也很简单,只需用 POST 替换 GET:

curl -X POST http://103.200.7.150:7777/?gimmeflag=please
Run Code Online (Sandbox Code Playgroud)

从服务器返回的结果:

_S3nD_r3quesT_Meth0d_GET_AND_POST}

总结一下:

# Thanks to @pa4080 for this line
printf '%s%s\n' \
"$(curl -X GET http://103.200.7.150:7777/?gimmeflag=please 2>/dev/null)" \
"$(curl -X POST http://103.200.7.150:7777/?gimmeflag=please 2>/dev/null)"
Run Code Online (Sandbox Code Playgroud)

KSL{n0w_y0u_Know_How_To_S3nD_r3quesT_Meth0d_GET_AND_POST}