zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

浅析 curl 命令用法及反向思维(服务器请求应用)的应用场景

服务器应用命令 用法 请求 场景 浅析 思维
2023-09-11 14:19:54 时间

  curl 是常用的命令行工具,用来请求 Web 服务器,它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。

  可以看下阮一峰的博客:curl网站开发指南curl 的用法指南

一、curl 常用开发总结

1、直接在curl命令后加上网址,就可以看到网页源码:curl www.sina.com

  如果要把这个网页保存下来,可以使用`-o`参数,这就相当于使用wget命令了:curl -o [文件名] www.sina.com

2、自动跳转:有的网址是自动跳转的。使用`-L`参数,curl就会跳转到新的网址:curl -L www.sina.com

3、显示头信息:`-i`参数可以显示http response的头信息,连同网页代码一起:curl -i www.sina.com

4、显示通信过程:`-v`参数可以显示一次http通信的整个过程,包括端口连接和http request头信息:curl -v www.sina.com

  如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。

curl --trace output.txt www.sina.com
curl --trace-ascii output.txt www.sina.com

5、发送表单信息

// 发送表单信息有GET和POST两种方法。
// GET方法相对简单,只要把数据附在网址后面就行。
curl example.com/form.cgi?data=xxx

// POST方法必须把数据和网址分开,curl就要用到--data参数。
curl -X POST --data "data=xxx" example.com/form.cgi

// 如果你的数据没有经过表单编码,还可以让curl为你编码,参数是`--data-urlencode`。
curl -X POST--data-urlencode "date=April 1" example.com/form.cgi

6、HTTP动词:curl 默认的HTTP动词是GET,使用`-X`参数可以支持其他动词。

curl -X POST www.example.com

curl -X DELETE www.example.com

二、curl 常用用法总结

-A 参数指定客户端的用户代理标头,即User-Agent

-b 参数用来向服务器发送 Cookie

-c 参数将服务器设置的 Cookie 写入一个文件

-d 参数用于发送 POST 请求的数据体

--data-urlencode 参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码

-e 参数用来设置 HTTP 的标头Referer,表示请求的来源

-F 参数用来向服务器上传二进制文件

-G 参数用来构造 URL 的查询字符串

-k 参数指定跳过 SSL 检测

-L 参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向

-o 参数将服务器的回应保存成文件,等同于wget命令

-O 参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名

-s 参数将不输出错误和进度信息

-S 参数指定只输出错误信息,通常与 -s 一起使用

-u 参数用来设置服务器认证的用户名和密码

-v 参数输出通信的整个过程,用于调试

--trace 参数也可以用于调试,还会输出原始的二进制数据

-x 参数指定 HTTP 请求的代理

-X 参数指定 HTTP 请求的方法

  命令详解有很多,确实难以记住,网上一搜也大把资料,所以不多介绍了,需要用到的时候去查即可。我们需要知道的是应用场景方案

三、应用场景

1、应服务器安全限制,我们可以反过来让服务器去请求应用

  今天遇到个需求,linux 上将 txt 文件导入数据库,需要监测 txt 中的数据是否完全导入了数据库,即 txt 中的行数是否和数据库中的行数是否一致的问题。

  问题是获取 txt 行数需要执行 linux 指令,需要 java 代码知道 IP 端口 用户名 密码;线上安全问题,根本不允许java应用有这么大的权限。

  经过指点,可以反过来,让 linux 上使用指令调用我的 java 应用即可,即使用 curl 指令调用java接口。

  参考文章:linux通过curl方式调用接口  ——  https://blog.csdn.net/h2604396739/article/details/83856711

  评论:虽然不知道作者具体需求,但是这种反向思维的考虑,确实是值得学习了解的一种解决方案。