cURL全攻略:从浏览器复制到JMeter/Postman的一键导入
前言
在当今的数字化时代,cURL作为一款强大的命令行工具和数据传输库,已成为开发、调试和测试过程中不可或缺的利器。它支持多种协议,如HTTP、HTTPS等,能够轻松实现数据的上传与下载,发送各种HTTP请求,并灵活设置请求头和Cookies。本文旨在详细介绍cURL的基本概念、使用技巧以及在不同环境(如JMeter、Postman、Windows cmd、macOS终端)下的应用实例。
本文主要围绕以下几个方面阐述:
1、什么是cURL?
2、浏览器复制cURL的类型选择?
3、JMeter 如何导入cURL?
4、Postman 如何导入cURL?
5、Windows cmd 如何使用cURL调用接口?macOS 终端 如何使用cURL调用接口?
一、什么是cURL?
①、定义
cURL 是一个命令行工具和数据传输库,支持多种协议,如 HTTP、HTTPS、FTP、SFTP 等。它允许用户从服务器传输数据,或者在服务器上上传数据。cURL 是在开发、调试和测试过程中与各种 Web 服务进行交互的常用工具。
通过使用 cURL,用户可以发送 GET、POST 等 HTTP 请求,设置请求头,处理 Cookies,上传和下载文件等。cURL 提供了丰富的选项和参数,使得用户能够灵活地构建和发送自定义的网络请求。
②、cURL示例
下面提供的是一个使用 cURL 命令行的示例,该命令用于向百度搜索引擎发送一个 HTTP GET 请求。
curl ^"https://www.baidu.com/^" ^
-H ^"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7^" ^
-H ^"Accept-Language: zh-CN,zh;q=0.9,en;q=0.8^" ^
-H ^"Connection: keep-alive^" ^
-H ^"Cookie: BAIDUID=8A208B3897572E55E699B57CA320D62B:FG=1; PSTM=1729130390; BIDUPSID=5B5862AB47ABE7EDCC6B46F8D907587B; H_WISE_SIDS_BFESS=60852_60617_60885_60875; BD_UPN=12314753; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_WISE_SIDS=61027_61140_61149_61107_61206_61210_61213_61209_61244_61285; BAIDUID_BFESS=8A208B3897572E55E699B57CA320D62B:FG=1; H_PS_PSSID=61027_61140_61149_61206_61210_61213_61209_61244_61285; BD_HOME=1; delPer=0; BD_CK_SAM=1; PSINO=3; BA_HECTOR=ah0h80ah2l00a5810g202g8g954v3n1jkfl5q1u; ZFY=XyRRuL0DjV:AaqsaNODNUBh9WErQnvkDbbyw7VJqhthc:C; channel=baidusearch; baikeVisitId=73cdb1de-c9c4-4f19-857e-4252d06e1d6e; B64_BOT=1; COOKIE_SESSION=408_0_9_9_11_15_1_3_9_9_7_1_398_0_30_0_1731399049_0_1731399019^%^7C9^%^23769_28_1728697662^%^7C8; H_PS_645EC=6dbdpxQdFr4hdfLjDNbKkcW9iVwd4wIGXpecQYFu^%^2FJHzyG^%^2FLYzcCICCUJ8w; BDSVRTM=411; WWW_ST=1732761562908^" ^
-H ^"Referer: https://www.baidu.com/s?ie=utf-8^&f=8^&rsv_bp=1^&tn=baidu^&wd=^%^E5^%^93^%^88^%^E5^%^93^%^88^%^E5^%^93^%^88^&oq=^%^25E5^%^2593^%^2588^%^25E5^%^2593^%^2588^%^25E5^%^2593^%^2588^&rsv_pq=86c90b220062123d^&rsv_t=25de3bpWlx21NvcWcnzV5hj94jkJVhHKs^%^2F4XlP7uLq^%^2BNyPs9^%^2FJkqcKJFcZk^&rqlang=cn^&rsv_enter=0^&rsv_dl=tb^&rsv_sug3=1^&rsv_sug1=1^&rsv_sug7=100^&rsv_btype=t^&rsv_sug4=114570^&rsv_sug=1^" ^
-H ^"Sec-Fetch-Dest: document^" ^
-H ^"Sec-Fetch-Mode: navigate^" ^
-H ^"Sec-Fetch-Site: same-origin^" ^
-H ^"Sec-Fetch-User: ?1^" ^
-H ^"Upgrade-Insecure-Requests: 1^" ^
-H ^"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36^" ^
-H ^"sec-ch-ua: ^\^"Google Chrome^\^";v=^\^"131^\^", ^\^"Chromium^\^";v=^\^"131^\^", ^\^"Not_A Brand^\^";v=^\^"24^\^"^" ^
-H ^"sec-ch-ua-mobile: ?0^" ^
-H ^"sec-ch-ua-platform: ^\^"Windows^\^"^"
③、curl 常用案例
1、获取指定URL的网页内容,通过curl命令可以获取指定URL的网页内容,并将其输出到终端。
curl https://www.example.com
2、下载文件并保存到指定文件,使用-o参数可以从服务器下载文件并把响应的内容保存到指定文件中。
curl -o localfile.html https://www.example.com/page.html
3、下载文件并保持远程文件名,使用-O参数可以从服务器下载文件并保持与远程文件名相同的文件名。
curl -O https://www.example.com/file.zip
4、上传文件到服务器,使用-T参数可以把本地的文件上传到服务器上面。注意,这里使用的是FTP协议,需要指定用户名和密码(如果需要的话)。
curl -T localfile.txt ftp://user:password@www.example.com/upload/
5、发送POST请求并传递数据,使用-X指定请求的方法为POST,-d指定请求的数据。
curl -X POST -d "param1=value1¶m2=value2" https://www.example.com/api
6、设置HTTP请求头,使用-H参数可以设置多个HTTP请求头,这里设置了内容类型和授权头。
curl -H "Content-Type: application/json" -H "Authorization: Bearer token" https://www.example.com/api
7、通过代理服务器进行请求,使用-x参数可以通过指定的HTTP或SOCKS代理服务器进行请求。
curl -x http://proxy.example.com:8080 https://www.example.com
8、设置请求的超时时间,使用-m参数可以设置请求的超时时间(单位为秒),这里设置为30秒。
curl -m 30 https://www.example.com
9、自动跟随HTTP重定向,使用-L参数可以启用自动跟随HTTP重定向。
curl -L https://www.example.com
10、输出详细的调试信息,使用-v参数可以输出详细的调试信息,包括请求和响应头信息。
curl -v https://www.example.com
11、保存响应头到文件,使用-D参数可以将响应头信息保存到指定的文件中。
curl -D headers.txt https://www.example.com
12、指定用户代理,使用-A参数可以指定用户代理字符串,模拟不同的浏览器或设备。
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" https://www.example.com
13、发送带有JSON数据的POST请求,这里再次使用了-X POST和-H "Content-Type: application/json"来发送一个带有JSON数据的POST请求。
curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' https://www.example.com/api
14、使用cookie进行请求,使用-b参数可以发送带有cookie的请求。注意,这里的cookie值应该是经过适当编码的。
curl -b "sessionid=abcdefg123456" https://www.example.com
15、保存和加载cookie
# 保存cookie到文件 curl -c cookies.txt https://www.example.com # 从文件加载cookie并发送请求 curl -b cookies.txt https://www.example.com/anotherpage
二、浏览器复制cURL的类型选择?
在前后端开发或者测试时,很多时候我们会使用浏览器F12开发者工具进行抓包,来导出cURL,以便在Postman和JMeter以及CMD等环境上调用接口。那么我们来看一看,具体应该怎么操作?
①、下图是Windows电脑的谷歌浏览器,F12复制cURL的步骤。其中可以清楚的看到有4个cURL的选项,我们该如何选择呢?
1、copy as cURL(cmd)
- 这个选项会将请求复制为一个适用于Windows命令提示符(CMD)的cURL命令。
- 它会使用Windows风格的路径和引号,确保在Windows的CMD环境中可以正确执行。
2、copy as cURL(bash)
- 这个选项会将请求复制为一个适用于Unix/Linux shell(如bash)的cURL命令。
- 它不使用Windows特定的路径格式或引号,更适合在Linux或macOS的终端中执行。
3、copy all as cURL(cmd)
4、copy all as cURL(bash)
- 3和4格式与1和2一样,不一样的是,3和4,会把当前抓到的所有请求,全部复制。
三、JMeter 如何导入cURL
有很多测试小伙伴,喜欢用JMeter来调用接口,但是从请求头到信息头,一点点粘贴复制,也挺麻烦的,那么我们这里可以先在浏览器中直接把请求复制为cURL,然后再去JMeter一键导入接口,这样就可以事半功倍,提高效率,接下来我们一起走一遍具体流程。
1、先在浏览器中,把请求复制为cURL,如果有不会的小伙伴,参照上面的内容。
2、打开JMeter,在工具栏里边,就有一个import from cURL的选项。点击它。
3、详细步骤
①、将复制的cURL,粘贴到文本框中。
②、勾选Add cookie header to Cookie Manager,这里如果不勾选,请求就不带cookie。
③、点击create Test plan,导入
4、注意事项,因为导入时,JMeter会给各个参数设置默认值,如下图,这些默认值肯定都是我们不需要的,这一点算是唯一的美中不足吧,需要手动去改,暂时无法有效解决。
四、Postman 如何导入cURL
详细步骤如下:
1、先复制请求为:Copy as cURL(bash)
2、在postman中找到import,这个不同的postman版本位置可能存在差异,需要仔细看看,下面例举了两个版本的;
5、Windows cmd 如何使用cURL调用接口?macOS 终端 如何使用cURL调用接口?
通过浏览器开发者模式抓到的HTTP请求复制为cURL后,通常可以直接在Mac的终端上执行,也可以直接在Windows的cmd上直接执行。但请注意命令格式、网络权限和安全性等问题。
①、打开终端:在Mac上,你可以通过应用程序文件夹中的“实用工具”子文件夹找到“终端”应用程序,并双击打开它。
②、复制cURL命令:在浏览器开发者模式下,你可以将抓到的HTTP请求复制为cURL命令。这个命令通常包括请求方法、URL、请求头、请求数据等信息。
③、在终端中执行cURL命令:将复制的cURL命令粘贴到终端中,并按下回车键。终端将执行该命令,并显示执行结果。
④、示例:假设你通过浏览器开发者模式抓到了一个GET请求的cURL命令,如下所示:你可以将这个命令复制到Mac的终端中,并按下回车键执行它。终端将向http://example.com/api/data
发送一个GET请求,并显示服务器的响应结果。
curl 'http://example.com/api/data' -H 'Accept: application/json' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
结语
亲爱的朋友:
希望本文中描述的问题以及解决方案,可以帮助到您。当然,我们深知,问题和挑战总是层出不穷,新的情况也在不断涌现。如果读者朋友您有更好的方案,或者在实际应用中发现了文中的不足之处,请不吝分享您的宝贵建议。诚挚地邀请每一位读者加入我们的行列,共同完善这份教程。
感谢您的阅读与支持!
Dear frends,
We hope that the questions and solutions presented in this article can be of assistance to you. Of course, we are fully aware that problems and challenges are always emerging in an endless stream, and new situations are constantly arising. If you, our readers, have better solutions or have discovered any deficiencies in this article through practical application, please do not hesitate to share your valuable suggestions with us. We sincerely invite every reader to join us in continuously improving this tutorial.
Thank you for your reading and support!
See you,Parting is for better meeting!