10 个 cURL 命令的使用方法及实时示例
cURL是一个使用URL语法来获取或发送数据的命令行工具。
如果您是开发人员或从事支持工作,您必须了解<cURL命令的用法来 troubleshoot web applications。cURL 是一个跨平台实用工具,可以在Windows、MAC和UNIX上使用。
以下是一些最常用的语法及其示例,以帮助您。
验证是否可以连接到URL
如果您在UNIX系统上工作并尝试连接到外部URL,您首先希望做的是检查是否可以通过curl访问URL。
curl yoururl.com
它不会产生任何输出。然而,如果服务器无法连接,您将遇到错误,例如无法解析主机。
[root@gf-lab tmp]# curl helloitdoesntexist.com
curl: (6) Could not resolve host: helloitdoesntexist.com; Unknown error
[root@gf-lab tmp]#
将URL/URI输出保存到文件中
如果您需要将URL or URI的内容保存到特定文件中,您可以使用以下语法
curl https://yoururl.com > yoururl.html
示例:
[root@gf-lab tmp]# curl https://gf.dev > /tmp/gfhtml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 18557 0 18557 0 0 72565 0 --:--:-- --:--:-- --:--:-- 72772
[root@gf-lab tmp]#
上面的示例将gf.dev的所有内容保存到/tmp/gf.html
显示请求和响应头
如果您遇到问题并希望验证是否获得了预期的请求和响应头。
curl -v yoururl.com
示例:
[root@gf-lab tmp]# curl -v https://yaoweibin.cn
* About to connect() to yaoweibin.com port 443 (#0)
* Trying 104.25.134.107...
* Connected to yaoweibin.com (104.25.134.107) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=ssl371609.cloudflaressl.com,OU=PositiveSSL Multi-Domain,OU=Domain Control Validated
* start date: Nov 07 00:00:00 2019 GMT
* expire date: May 15 23:59:59 2020 GMT
* common name: ssl371609.cloudflaressl.com
* issuer: CN=COMODO ECC Domain Validation Secure Server CA 2,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: yaoweibin.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sat, 09 Nov 2019 19:41:37 GMT
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: __cfduid=d2ce6cd359ebc0b6eb5ff3a454ed042021573328497; expires=Sun, 08-Nov-20 19:41:37 GMT; path=/; domain=.yaoweibin.com; HttpOnly; Secure
< Vary: Accept-Encoding
< Link: ; rel="https://api.w.org/"
< Link: ; rel=shortlink
< X-SRCache-Fetch-Status: HIT
< X-SRCache-Store-Status: BYPASS
< X-Frame-Options: SAMEORIGIN
< X-Powered-By: EasyEngine v4.0.12
< Via: 1.1 google
< CF-Cache-Status: DYNAMIC
< Strict-Transport-Security: max-age=15552000; preload
< X-Content-Type-Options: nosniff
< Alt-Svc: h3-23=":443"; ma=86400
< Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< Server: cloudflare
< CF-RAY: 533243e4bcd4bbf4-LHR
<
以限速下载
如果您正在进行优化,并且想要查看以特定速度下载所需的时间,可以使用以下命令:
curl –-limit-rate 2000B
示例:
curl –-limit-rate 2000B https://gf.dev
使用代理进行连接
非常方便,如果您正在使用需要使用代理连接到外部世界的DMZ服务器。
curl --proxy yourproxy:port https://yoururl.com
使用注入头测试URL
您可以通过插入带有您的数据的头来使用curl来测试或排除故障特定问题。让我们看一个请求Content-Type的示例。
curl --header 'Content-Type: application/json' http://yoururl.com
通过这样做,您要求curl在请求头中将Content-Type设置为application/json。
仅显示响应头
如果您正在进行一些故障排除并且希望快速检查响应头,可以使用以下语法。
curl --head http://yoururl.com
示例:
[root@gf-lab tmp]# curl --head https://chandan.io
HTTP/1.1 200 OK
Date: Sat, 09 Nov 2019 19:51:23 GMT
Content-Type: text/html
Connection: keep-alive
Set-Cookie: __cfduid=d3cb2c7b8e566ad99c870b0af12b0f1eb1573329083; expires=Sun, 08-Nov-20 19:51:23 GMT; path=/; domain=.chandan.io; HttpOnly
X-GUploader-UploadID: AEnB2Uo96JhvJmR2zYUL-Ndh2ta3UD_ykQAB5C7O8cjZQhCf-GxHQ0MsodSzRnl3guSN3ywAYNjtWcPXfwDXjLg3bQ-P5vQMOA
Expires: Sat, 09 Nov 2019 20:51:23 GMT
Cache-Control: public, max-age=3600
Last-Modified: Mon, 06 Aug 2018 10:45:47 GMT
x-goog-generation: 1533552347482034
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 24620
x-goog-hash: crc32c=DpDPAQ==
x-goog-hash: md5=cIP/3rusdUx12Zla1kf1yA==
x-goog-storage-class: MULTI_REGIONAL
Accept-Ranges: bytes
CF-Cache-Status: DYNAMIC
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 53325234dc2fbb9a-LHR
[root@gf-lab tmp]#
连接HTTPS/SSL URL并忽略任何SSL证书错误
当您尝试访问SSL/TLS证书保护的URL并且证书错误或CN不匹配时,您将收到以下错误。
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
好消息是,您可以使用--insecure
标志指示cURL忽略证书错误。
curl --insecure https://yoururl.com
使用特定协议(SSL/TLS)连接
非常方便的是测试特定SSL/TLS协议是否可以握手。
使用SSL v3进行连接
curl --sslv3 https://yoururl.com
和不同的TLS版本
curl --tlsv1 https://example.com
curl --tlsv1.0 https://example.com
curl --tlsv1.1 https://example.com
curl --tlsv1.2 https://example.com
curl --tlsv1.3 https://example.com
从FTP服务器下载文件
您也可以使用curl通过指定用户名和密码来下载文件。
curl -u user:password -O ftp://ftpurl/style.css
您可以始终将“-v”与任何语法一起使用以以详细模式打印。
使用主机头
当要求的内容仅在主机头匹配时,主机头对于通过IP测试目标URL非常有用。或者,如果您想使用负载均衡器IP/URL测试应用程序。
curl --header 'Host: targetapplication.com' https://192.0.0.1:8080/
使用在线cURL如何?
是的,使用以下工具是可能的。您可以远程执行cURL。
Online CURL – 一个轻量级的在线获取URL的工具,可以添加以下选项。
--connect-timeout
--cookie
--data
--header
--head
--location
--max-time
--proxy
--request
--user
--url
--user-agent
cURL command line builder – 这个工具不同。它帮助您构建curl命令,您可以在漂亮的用户界面中输入信息,在底部您将得到curl命令。
cURL是一个有用的工具,可用于解决实时连接问题,希望上述内容对您有所帮助。如果您想进一步了解,我建议参加在线课程Linux Command Line Basics。