获取页面内容显示 HTTP 头将链接保存到文件同时下载多个文件使用 -L 跟随链接重定向使用 -A 自定义 User-Agent使用 -H 自定义 header使用`-c`保存`Cookie`使用 -b 读取 Cookie使用`-d`发送`POST`请求恢复中断下载从文件下载URLCURL设置代理上传文件到ftp修改名称解析限制下载率HTTP认证
目录
获取页面内容
> curl https://json.im显示 HTTP 头
> curl -I HTTP/1.1 200 OK Server: openresty Date: Fri, 04 Jun 2021 07:38:32 GMT Content-Type: text/html Content-Length: 12864 Last-Modified: Thu, 29 Apr 2021 01:39:01 GMT Connection: keep-alive Vary: Accept-Encoding ETag: "608a0e35-3240" Expires: Fri, 04 Jun 2021 08:38:32 GMT Cache-Control: max-age=3600 Accept-Ranges: bytes同时显示 HTTP 头和文件内容,使用 -i 选项
> curl -i https://json.im将链接保存到文件
我们可以使用 > 符号将输出重定向到本地文件中。
> curl https://json.im > index.html也可以通过 curl 自带的 -o/-O 选项将内容保存到文件中。
-o(小写的 o):结果会被保存到命令行中提供的文件名-O(大写的 O):URL 中的文件名会被用作保存输出的文件名> curl -o index.html https://json.im > curl -O https://json.im/index.html注意:使用 -O 选项时,必须确保链接末尾包含文件名,否则 curl 无法正确保存文件。如果遇到链接中无文件名的情况,应该使用 -o 选项手动指定文件名,或使用重定向符号
同时下载多个文件
我们可以使用-o 或-O选项来同时指定多个链接,按照以下格式编写命令:
> curl -O html https://json.im/1.html -O html https://json.im/2.html > curl -o p1.html https://json.im/1.html-o p2.html https://json.im/2.html使用 -L 跟随链接重定向
如果直接使用 curl 打开某些被重定向后的链接,这种情况下就无法获取我们想要的网页内容。例如:
> curl http://json.im <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>openresty</center> </body> </html>而当我们通过浏览器打开该链接时,会自动跳转到 。此时我们想要 curl 做的,就是像浏览器一样跟随链接的跳转,获取最终的网页内容。我们可以在命令中添加 -L 选项来跟随链接重定向:
> curl -L http://json.im使用 -A 自定义 User-Agent
我们可以使用 -A 来自定义用户***,例如下面的命令将伪装成安卓火狐浏览器对网页进行请求:
> curl -A "Mozilla/5.0 (Android; Mobile; rv:35.0) Gecko/35.0 Firefox/35.0" https://json.im使用 -H 自定义 header
当我们需要传递特定的 header 的时候,可以仿照以下命令来写:
> curl -H "Referer: " -H "User-Agent: Custom-User-Agent" https://json.imheader 中传递 Cookie
> curl -H "Cookie: JSESSIONID=xxx" https://json.im使用-c保存Cookie
使用 cURL 访问页面的时候,默认是不会保存 Cookie 的
> curl -c "cookie.txt" https://json.im使用 -b 读取 Cookie
> curl -b "cookie.txt" https://json.im使用-d发送POST请求
有一个登录页面 /login,只需要提交用户名和密码便可登录。我们可以使用 cURL 来完成这一 POST 请求,-d 用于指定发送的数据,-X 用于指定发送数据的方式
> curl -d "userName=rumenz&passwd=" -X POST https://json.im/login在使用 -d 的情况下,如果省略 -X,则默认为 POST 方式:
> curl -d "userName=rumenz&passwd=" https://json.im/login从文件中读取data.txt文本
> curl -d "@data.txt" https://json.im/upload恢复中断下载
> curl -C - -O https://json.im/jdk.tar.gz从文件下载URL
如果将curl与xargs结合使用,则可以从文件中的URL列表中下载文件。
> xargs -n 1 curl -O < urls.txtCURL设置代理
> curl /-U user:password-x 127.0.0.1:3128如果您的代理不需要身份验证,您可以跳过-U user:password 。
比如Nginx配置代理
server { listen 3128; resolver 8.8.8.8; proxy_connect; proxy_connect_allow443 563; proxy_connect_connect_timeout10s; proxy_connect_read_timeout 10s; proxy_connect_send_timeout 10s; location / { proxy_pass ; proxy_set_header Host $host; } }上传文件到ftp
> curl -u username:password -T jdk.tar.gz ftp://json.im修改名称解析
> curl --resolve json.im:443:127.0.0.1 https://json.im:443/对的查询将告诉curl从127.0.0.1请求该站点,而不是使用DNS或/etc/hosts文件。
限制下载率
> curl --limit-rate 100K /jdk.tar.gz -OHTTP认证
有些网域需要HTTP认证,这时curl需要用到--user参数。
> curl --user name:passwd https://json.im原文链接:/rumenbiji/linux-curl-skills.html :入门小站
回复【1001】获取 linux常用命令速查手册回复【10010】获取 阿里云ECS运维Linux系统诊断回复【10012】获取 Linux学习笔记【强悍总结值得一看】回复【10013】获取 shell简明教程