curl 使用指北&实战

8,000 阅读2分钟

curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,同时支持文件上传和下载,所以是综合的请求传输工具。

查看网页

查看网页源码

curl https://juejin.cn
curl https://juejin.im:8888

-L 查看网站存在重定向

curl -L https://juejin.cn

-o 保存网页源码

curl -o [文件名] https://juejin.cn		# -o:将文件保存为命令行中指定的文件名的文件中
curl -O URL1 -O URL2				# -O:使用URL中默认的文件名保存文件到本地。 同一站点下多个文件,curl会尝试重用链接(connection)

-C 断点传输

curl -O http://www.gnu.org/software/gettext/manual/gettext.html			# 当文件在下载完成之前结束该进程

curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html    # 通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载

-i 显示响应头部信息

curl -i https://juejin.cn		# `-i` 显示http response的头部信息

抓包调试

-v 显示整个通信过程,用于调试

curl -v https://juejin.cn

--trace 请求抓包,输出原始的二进制数据

curl --trace output.txt https://juejin.cn      		# 原始数据
curl --trace-ascii output.txt https://juejin.cn      # 经过 ascii 编码的原始数据

-s 隐藏、显示错误信息

curl -s https://juejin.cn 不输出错误信息、进度信息
curl -S https://juejin.cn 只输出错误信息

--limit-rate 限制请求响应带宽,模型网络环境

curl --limit-rate 100k https://juejin.cn    	#模拟带宽100k/s
curl --limit-rate 200b https://juejin.cn    	#模拟带宽200b/s

模拟请求

发送GET请求

curl https://juejin.cn

发送POST请求 --data [参数]

curl -X POST --data "data=xxx" https://juejin.cn
curl -X POST --data "@data.json" https://juejin.cn				# 读取data.json数据,发送请求
curl -X POST --data-urlencode "data=xxx" https://juejin.cn		# 参数经过表单编码,避免符号被转义

发送RESTful请求

curl -X GET     https://juejin.cn 		# 默认GET
curl -X POST    https://juejin.cn
curl -X PUT     https://juejin.cn
curl -X DELETE  https://juejin.cn

--form上传文件

curl --form upload=@[local_filepath] --form press=OK    https://juejin.cn
curl -F 'file=@[local_filepath]'                        https://juejin.cn									# 与 --form upload=@[local_filepath] --form press=OK 等效
curl -F 'file=@[local_filepath];type=image/png'         https://juejin.cn					# MIME 类型 默认为 application/octet-stream

--header 添加请求头部信息

curl --header "Content-Type:application/json" https://juejin.cn

--proxy 代理

curl --proxy 'https://juejin.cn' https://juejin.cn

--referer 表明来源[防盗链]

curl --referer https://juejin.cn https://juejin.cn

--user-agent 用户设备信息

curl --user-agent "[User Agent]" https://juejin.cn

# window chrome代理 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'

--cookie 请求带上cookie

curl --cookie "name=xxx" https://juejin.cn


curl -D cookieFile https://juejin.cn			# 保存 服务器返回的cookie 到 文件cookieFile
curl -c cookieFile https://juejin.cn		# 保存 服务器返回的cookie 到 文件cookieFile

curl -b cookieFile https://juejin.cn			# `-b cookieFile` 使用之前保存的cookie文件 用作请求

-k 参数跳过 SSL 检测

curl -k https://juejin.cn

水了那么多终于水到“猪脚”出场

后台的童鞋,经常会遇到线上接口请求报错需要重现修bug的情况。这时候正常打日志不仅麻烦,还容易打不准。

但如果学了curl命了,我们就可以把出问题的请求,以curl命令形式保存下来(如下图)。

需要重现的时候,我们执行性命令就可以重现 bug 啦,peace&love❤️

如果觉得我的文章对你有用,请点赞鼓励