在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;

  curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传...

语法:curl [option] [url]

常见参数:

[root@localhost src]# curl www.baidu.com|iconv -fgb2312

执行后,www.baidu.com 的html就会显示在屏幕上了,这个用法经常用于测试一台服务器是否可以到达一个网站,如发现乱码,可以使用iconv转码

-I/--head 仅返回头部信息,使用HEAD请求:curl -I http://www.baidu.com

保存访问的网页

-o:将文件保存为命令行中指定的文件名的文件中
-O:使用URL中默认的文件名保存文件到本地,这里后面的url要具体到某个文件,不然抓不下来

[root@localhost src]# curl www.baidu.com >> baidu.com% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  2381  100  2381    0     0   100k      0 --:--:-- --:--:-- --:--:--  105k
[root@localhost src]# curl -o baidu.com www.baidu.com% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  2381  100  2381    0     0  81602      0 --:--:-- --:--:-- --:--:-- 82103
[root@localhost src]# curl -O www.baidu.com
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
[root@localhost src]# curl -O www.baidu.com/index.html% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  2381  100  2381    0     0   102k      0 --:--:-- --:--:-- --:--:--  105k
[root@localhost src]#

测试网页返回值

-s/--silent    静音模式。不输出任何东西

-w/--write-out [format]    什么输出完成后

[root@localhost src]# curl -o /dev/null -s -w "%{http_code}" www.baidu.com
200[root@localhost src]# curl -o /dev/null -s -w "%{http_code}\n" www.baidu.com
200
[root@localhost src]# curl -o /dev/null -s -w "time_total: %{time_total}\n" "http://www.baidu.com"
time_total: 0.024
[root@localhost src]#

在脚本中,这是很常见的测试网站是否正常的用法

指定proxy服务器以及其端口

-x/--proxy <host[:port]>    在给定的端口上使用HTTP代理

[root@localhost src]# curl -x 192.168.100.198:8888 http://www.baidu.com

cookie

  • -c/--cookie-jar <file>    把cookie写入到这个文件中

[root@Super ~]# curl -d"name=123&password=456" http://192.168.100.182/index.php -v -c ./cookie

使用用户名和密码登录系统,并将cookie信息存储在当前目录的cookie文件中

  • -D/--dump-header <file>   把header信息写入到该文件中

  • -b/--cookie <name=string/file>    cookie字符串或文件读取位置

[root@Super ~]# curl http://192.168.100.182/index.php -v -b ./cookie
  • ‘-cookie’直接指定cookie

[root@Super ~]# curl --cookie "name=123" http://192.168.100.182/index.php -v

模仿浏览器

-A/--user-agent <string>    设置用户代理发送给服务器

[root@localhost src]# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.baidu.com

服务器端就会认为是使用IE8.0去访问的

伪造referer(盗链)

-e/--referer    来源网址

很多服务器会检查http访问的referer从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的referer地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗连了

[root@localhost src]# curl -e "www.baidu.com" http://image.baiud.com

这样就会让服务器其以为你是从www.baidu.com点击某个链接访问image.baidu.com的

下载文件

[root@localhost src]# curl -o 51.png https://s1.51cto.com/wyfs02/M00/8D/49/wKioL1iV9-6wk8YsAACLSADynaw310.png
[root@localhost src]# curl -O https://s1.51cto.com/wyfs02/M00/8D/49/wKioL1iV9-6wk8YsAACLSADynaw310.png

循环下载

[root@localhost src]# curl -O http://www.51cto.com/justin[1-5].png

justin1.png-justin5.png全部下载下来

下载重命名

[root@localhost src]# curl -O http://www.51cto.com/{justin,peng}/justin[1-5].png
[root@localhost src]# curl -o #1_#2.png http://www.51cto.com/{justin,peng}/justin[1-5].png

第一条命令会先去下载justin下的justin1-justin5.png文件,然后再下载peng下的justin1-justin5.png文件,这样就会把之前下载的文件覆盖,

第二条命令下载时候重命名成justin_justin1.png justin_justin2.png的形式

分块下载

-r/--range <range>    检索来自HTTP/1.1或FTP服务器字节范围

有时候下载的东西会比较大,这个时候我们可以分段下载

[root@localhost src]# curl -r 0-100 -o justin_part1.png http://www.51cto.com/justin.png
[root@localhost src]# curl -r 1000-200 -o justin_part2.png http://www.51cto.com/justin.png
[root@localhost src]# curl -r 200- -o justin_part3.png http://www.51cto.com/justin.png
[root@localhost src]# cat justin_part* > justin.png

通过ftp下载文件

-u/--user <user[:password]>    设置服务器的用户和密码

-E 采用证书认证

[root@localhost src]# curl -O -u justin:peng ftp://www.51cto.com/justin.png
[root@localhost src]# curl -O ftp://justin:peng@www.51cto.com/justin.png
[root@localhost src]# curl -E cert.pem https://www.51cto.com/justin.png

下载进度条

-#/--progress-bar    进度条显示当前的传送状态

[root@localhost src]# curl -# -O http://www.baidu.com/justin.png

-s 不会显示下载进度信息

[root@localhost src]# curl -s -O http://www.baidu.com/justin.png

断点续传

-C/--continue-at <offset>    断点续转

[root@localhost src]# curl -C -O http://www.baidu.com/justin.png

上传文件

-T/--upload-file <file>    上传文件

[root@localhost src]# curl -T justin.png -u justin:peng ftp://www.baidu.com/img/

显示抓取错误

-f/--fail    连接失败时不显示http错误

[root@localhost src]# curl -f http://www.baidu.com/error

-F表单提交操作

-F命令以Content-Type:multipart/form-data的形式向serverpost数据,该命令允许提交二进制文件等。
    可以使用@前缀来制定提交的内容为一个文件,也可以使用<符号来提交文件中的内容

curl -F prefile=@portrait.jpg https://example.com/upload.cgi

向服务器上传一个图片,图片的表单域名为profile,内容为protrait.jpg的二进制

-B/--use-ascii    使用ASCII文本传输

-X 指定请求方式

在浏览器输入一个网址访问网站都是GET请求,在FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。    
HTTP定义了与服务器交互的不同方法,其中最基本的四种:GET,POST,PUT,DELETE,HEAD
GET和HEAD被称为安全方法,因为使用GET和HEAD的HTTP请求不会产生什么动作。不会产生动作意味着GET和HEAD的HTTP请求不会在服务器上产生任何结果。但是安全方法并不是什么动作都不产生,这里的安全方法仅仅指不会修改信息。
GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
POST请求会把请求的数据放置在HTTP请求包的包体中

POST请求

-d/--data <data>    HTTP POST方式传送数据,

[root@Super ~]# curl -X POST -d"name=123&password=456" http://192.168.100.182/index.php -v

-d选项为使用POST方式向server发送数据,因此在使用-d的时候,可以省略-X POST。使用-d时,将使用Content-type:application/x-www-form-urlencoded方式发送数据。使用JSON形式post数据,可以使用-H指定头部类型:

[root@Super ~]# curl -X POST -H "Content-Type:application/json" -d '{"data":"123","key":"456"}' http://192.168.100.182/index.php -v

当提交的参数值中有特殊字符就需要先转义,如空格时,就需要转义成%20;--data-urlencode可以自动转义特殊字符,无需人工事先转义

[root@Super ~]# curl --data-urlencode "value 1" http://192.168.100.182/index.php -v

--data-urlencode参数会自动转义特殊字符,如上面的空格

请求的时候带上Cookie:

[root@Super ~]# curl -X POST -H "Cookie:username=123"  http://192.168.100.182/index.php -v

--data-ascii <data>    以ascii的方式post数据

--data-binary <data>    以二进制的方式post数据

--connect-timeout <seconds> 设置最大请求时间

--create-dirs    建立本地目录的目录层次结构

GET请求

-G/--get     以get的方式来发送数据

[root@Super ~]# /usr/bin/curl -G -d "username=justin&pwd=123456" "
[root@Super ~]# curl -X GET http://www.baidu.com

在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权;curl -u username:password URL

[root@Super ~]# curl -u ywbz http://192.168.100.127
Enter host password for user 'ywbz':

DELETE请求

[root@Super ~]# curl -I -X DELETE http://192.168.100.182/index.php -v

--interface <interface>     使用指定网络接口/地址

-l/--list-only     列出ftp目录下的文件名称

--limit-rate <rate>     设置传输速度

curl --limit-rate 1000B -O http://192.168.100.182/index.php

--retry <num> 传输出现问题时,重试的次数

--retry-delay <seconds>    传输出现问题时,设置重试间隔时间

--retry-max-time <seconds>    传输出现问题时,设置最大重试时间

-S/--show-error    显示错误

-y/--speed-time    放弃限速所要的时间。默认为30

-Y/--speed-limit    停止传输速度的限制,速度时间'秒

-z/--time-cond    传送时间设置

curl -z 11-Oct-18 http://192.168.100.182/index.php

若文件index.php在2018-10-11之后游过更新才会下载

-0/--http1.0    使用HTTP 1.0

-1/--tlsv1    使用TLSv1(SSL)

-2/--sslv2    使用SSLv2的(SSL)

-3/--sslv3    使用的SSLv3(SSL)

转载于:https://blog.51cto.com/ityunwei2017/1977513

Linux curl命令简介相关推荐

  1. linux curl 命令 http请求、下载文件、ftp上传下载

    1. curl 命令简介 cURL(CommandLine Uniform Resource Locator),是一个利用 URL 语法,在命令行终端下使用的网络请求工具,支持 HTTP.HTTPS. ...

  2. Linux Curl命令教程

    目录 1.curl命令简介 2.curl命令语法和参数 3.curl基本用法介绍 4.curl的常见用法(项目应用) 1.curl命令简介 curl命令是利用URL规则在命令行下工作的文件传输工具,可 ...

  3. linux wc 命令简介

    此wc命令不是让大家没有食欲的地方.而是linux下一个简单的小命令. NAME wc - word, line, character, and byte count SYNOPSIS wc [-cl ...

  4. 使用Linux curl命令获取本机公网IP地址

    使用Linux curl命令获取本机公共IP地址 在本教程中,我们将学习如何使用Linux curl命令查找计算机的公共IP地址. 通常,如果我们想要找到我们使用的公共IP地址,我们会去谷歌并搜索&q ...

  5. Linux curl命令使用代理、以及代理种类介绍(附:curl命令详解)

    目录 一.代理服务器分类: 二.Linux curl命令代理设置参数: 三.Linux curl命令设置代理举例: 1.linux curl命令设置http代理: 2.Linux curl命令设置so ...

  6. 编程实现linux中的who命令功能,Linux who命令简介及使用方法详解

    玩蛇网推荐图文教程:python 列表 本文是关于Linux who命令简介及使用方法详解一文.如果你是一名系统管理员,可能需要需要在一个特定的时间点都有谁活跃在系统上.以便必须严密监视我们的服务器. ...

  7. linux curl命令详解(附使用示例)

    Linux curl命令详解 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称u ...

  8. Linux curl命令最全详解

    目录 一.最常用的curl命令 1.发送GET请求 2.发送POST请求 3.发送json格式请求: 二.curl命令语法与curl命令参数详解 1.curl命令语法 2.curl命令参数详解 三.L ...

  9. linux curl h 命令,Linux curl命令http cookie详解

    Http Cookie在Http协议中是非常实用的功能.可以保留网站的一些会话信息,方便用户下次再次来到本网站时使用:如在cookie中记录用户的性别和姓氏.下次用户再次到来,即使未登录,也可以根据获 ...

最新文章

  1. 帝国备份语法错误问题
  2. mysql基于binlog增量更新_一个应用它提取MySQL binlog,解析binlog并将增量更新数据推送到不同的接收器...
  3. 30 天精通 RxJS (01):认识 RxJS
  4. Effective C++ 改善55个方法
  5. 交付方式 saas_扩展和交付SaaS启动的最佳方法
  6. 完整的金融类APP UI设计素材,深度学习临摹
  7. linux下安装chrome
  8. [转]史上最最最详细的手写Promise教程
  9. JavaScript 字符串函数
  10. cfturbo破解版-叶轮设计软件
  11. “保姆级教程“c语言开根号函数:sqrt()//文末附有详细c语言数学函数
  12. 卷积神经网络原理解析
  13. Git 常用回滚撤销命令总结
  14. 从写方案到见投资人,一步步教你如何拿投资
  15. 写代码python用什么笔记本好_求推荐适合程序员用的笔记本电脑
  16. RFID电子标签打印机如何维护
  17. 商场抽奖软件 android,召唤抽奖系统3.0正式版
  18. kernel: kmalloc
  19. android图片裁剪xof,HttpServletResponse response相关头信息,内容信息设置
  20. STM32通定时器时间设置步骤和计算公式方法寄存器值

热门文章

  1. 一步一个脚印学习WCF系列之WCF概要—生成元数据与代理(五)
  2. oracle 判断字段相等,但类型不同引起的性能问题
  3. 网站开发综合技术 一 JavaScript简介 二JavaScript语法
  4. MapReduce-深度剖析
  5. 使用内存映射文件来共享数据
  6. EXCEL 制作万年历
  7. 聊聊Elasticsearch RestClient的RequestLogger
  8. SpringBoot 2.0 系列003 -- 自定义Parent
  9. T-Sql(一)简单语法
  10. [TypeScript] Interface and Class