在Linux中,Bash脚本提供了非常强大的能力,借助TCP套接字功能,可以直接向服务器发送HTTP请求,而无需curl
或wget
。
发送GET请求
以下脚本使用Bash和TCP套接字直接发送GET请求。脚本创建与目标服务器的TCP连接,构建HTTP请求,并输出响应结果。
#!/bin/bash
# 打开一个 TCP 连接到 postman-echo.com 的 80 端口,并将其分配给文件描述符 3
exec 3<>/dev/tcp/postman-echo.com/80
# 构建带有查询参数的GET请求
echo -ne "GET /get?param1=value1¶m2=value2 HTTP/1.1\r\nHost: postman-echo.com\r\nConnection: close\r\n\r\n" >&3
# 从文件描述符 3 读取响应并输出到标准输出
cat <&3
# 关闭文件描述符 3
exec 3<&-
该脚本通过TCP连接发送GET请求并获取响应结果,模拟了类似curl
的GET请求操作。
效果预览
当运行上面的脚本时,返回结果会类似于:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 453
Connection: close
...
{
"args": {
"param1": "value1",
"param2": "value2"
},
...
}