linux之curl命令 linux curl用法
xsobi 2024-12-23 14:20 1 浏览
curl命令 是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
命令语法
> curl (选项)(参数)
命令选项
-A/--user-agent <string> 设置用户代理发送给服务器
-b/--cookie <name=string/file> cookie字符串或文件读取位置
-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
-C/--continue-at <offset> 断点续转
-D/--dump-header <file> 把header信息写入到该文件中
-e/--referer 来源网址
-f/--fail 连接失败时不显示http错误
-o/--output 把输出写到该文件中
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名
-r/--range <range> 检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent 静音模式。不输出任何东西
-T/--upload-file <file> 上传文件
-u/--user <user[:password]> 设置服务器的用户和密码
-w/--write-out [format] 什么输出完成后
-x/--proxy <host[:port]> 在给定的端口上使用HTTP代理
-#/--progress-bar 进度条显示当前的传送状态
文件下载
- curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作
- curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用–silent选项。
> curl https://rumenz.com --silent
下载文件到指定的文件小写-o,大写 -O 保存文件和它的原始文件名
> curl https://rumenz.com/1.html -o 2.html
大写 -O 保存文件和它的原始文件名
> curl https://rumenz.com/1.html -O
--progress显示进度条
> curl https://rumenz.com/2.html -o 2.html --progress
断点续传
> curl -O -u 'rumenz':'test' ftp://rumenz.com/jdk.tar.gz
然后你的连接突然断开,你可以用以下命令继续下载
> curl -C - -O -u 'rumenz':'test' ftp://rumenz.com/jdk.tar.gz
注意断点续传的参数是-C, 要自动续传的话要使用 -C -, 否则需要手工指定断点的字节位置.
伪造请求来源
> curl -e https://json.im https://rumenz.com
参照页是位于HTTP头部中的一个字符串,用来表示用户是从哪个页面到达当前页面的,如果用户点击网页A中的某个连接,那么用户就会跳转到B网页,网页B头部的参照页字符串就包含网页A的URL。也可以使用--referer选项指定参照页字符串.
-H参数可以通过直接添加标头 Referer,达到同样效果
> curl -H 'Referer: https://json.im' https://rumenz.com
设置请求header
> curl -H "Host:rumenz.com" -H "accept-language:zh-cn" URL
curl的带宽控制
> curl --limit-rate 200k https://rumenz.com/1.html
用curl进行认证
使用curl选项 -u 可以完成HTTP或者FTP的认证,可以指定密码,也可以不指定密码在后续操作中输入密码:
> curl -u user:pwd https://rumenz.com
> curl -u user https://rumenz.com
只打印响应头
> curl -I https://rumenz.com
HTTP/1.1 200 OK
Server: openresty/1.19.3.1
Date: Wed, 02 Jun 2021 13:37:41 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
使用curl模拟get请求
直接显示网页内容
> curl https://json.im/1.txt
123
456
显示请求头和网页内容
> curl -i https://json.im/1.txt
HTTP/1.1 200 OK
Server: openresty
Date: Wed, 02 Jun 2021 14:02:30 GMT
Content-Type: text/plain
Content-Length: 8
Last-Modified: Wed, 02 Jun 2021 14:00:57 GMT
Connection: keep-alive
ETag: "60b78f19-8"
Accept-Ranges: bytes
123
456
直接显示网页内容
> curl -l https://json.im/1.txt
显示get请求全过程解析
> curl -v https://json.im/1.txt
·
使用curl模拟post请求
> curl -d "param1=value1?m2=value2" https://json.im/login
> curl -d'login=rumenz&password=123' -X POST https://json.im/login
> curl -d 'login=rumenz' -d 'password=123' -X POST https://json.im/login
--data-urlencode 参数等同于-d,发送 POST请求的数据体,区别在于会自动将发送的数据进行 URL 编码.
> curl --data-urlencode 'comment=hello world' https://json.im/login
上传文本文件
> curl -d '@data.txt' https://json.im/upload
post json格式的数据
> curl -l -H 'Content-type: application/json' -X POST -d '{"rumenz":"123"}' https://json.im/123.json
向服务器发送 Cookie
> curl https://json.im --cookie "user=rumenz&pass=123456"
Cookie写入到一个文件
> curl -c cookies.txt https://json.im
上传二进制文件
-F 参数用来向服务器上传二进制文件。
> curl -F "file=@123.png" https://json.im/uploadfile
上面命令会给 HTTP 请求加上标头 Content-Type: multipart/form-data ,然后将文件123…png作为file字段上传。
-F 参数可以指定MIME 类型。
> curl -F 'file=@123.png;type=image/png' https://json.im/uploadfile
上面命令指定 MIME 类型为image/png,否则 curl 会把 MIME 类型设为 application/octet-stream。
-F参数也可以指定文件名。
> curl -F 'file=@123.png;filename=rumenz.png' https://json.im/uploadfile
上面命令中,原始文件名为123.png,但是服务器接收到的文件名为rumenz.png。
请求跟随服务器的重定向
-L参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。
> curl -L -d 'rumenz=123' https://json.im/
调试参数
-v 参数输出通信的整个过程,用于调试。
> curl -v https://json.im/1.txt
* Trying 150.109.147.28...
* TCP_NODELAY set
* Connected to json.im (150.109.147.28) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/ssl/cert.pem
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use http/1.1
* Server certificate:
* subject: CN=json.im
* start date: Apr 27 14:50:23 2021 GMT
* expire date: Jul 26 14:50:23 2021 GMT
* subjectAltName: host "json.im" matched cert's "json.im"
* issuer: C=US; O=Let's Encrypt; CN=R3
* SSL certificate verify ok.
> GET /1.txt HTTP/1.1
> Host: json.im
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: openresty
< Date: Wed, 02 Jun 2021 14:31:36 GMT
< Content-Type: text/plain
< Content-Length: 8
< Last-Modified: Wed, 02 Jun 2021 14:00:57 GMT
< Connection: keep-alive
< ETag: "60b78f19-8"
< Accept-Ranges: bytes
<
123
456
* Connection #0 to host json.im left intact
--trace参数也可以用于调试,还会输出原始的二进制数据。
> curl --trace - https://json.im
原文链接:https://rumenz.com/rumenbiji/linux-curl.html
相关推荐
- 好用的云函数!后端低代码接口开发,零基础编写API接口
-
前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...
- 快速上手:Windows 平台上 cURL 命令的使用方法
-
在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...
- 使用 Golang net/http 包:基础入门与实战
-
简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
-
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...
- window使用curl命令的注意事项 curl命令用法
-
cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...
- Linux 系统curl命令使用详解 linuxctrl
-
curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...
- Tornado 入门:初学者指南 tornados
-
Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...
- PHP Curl的简单使用 php curl formdata
-
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
-
本章涵盖使用Actix提供静态网页...
- 我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些
-
这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...
- linux文件下载、服务器交互(curl)
-
基础环境curl命令描述...
- curl简单使用 curl sh
-
1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...
- 常用linux命令:curl 常用linux命令大全
-
//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...
- 三十七,Web渗透提高班之hack the box在线靶场注册及入门知识
-
一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)