curl 订阅
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。 展开全文
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。
信息
适用范围
计算机
类    别
用URL语法
作    用
文件传输
中文名
curl
外文名
curl(CommandLine Uniform Resource Locator)
curl简介
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证(Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos)、file transfer resume、proxy tunneling。 [1] 
收起全文
精华内容
参与话题
问答
  • Linux Shell脚本编程--curl命令详解

    万次阅读 多人点赞 2013-08-25 20:15:16
    curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件。其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息。类似的工具还有wget。 curl命令使用了...

    用途说明

    curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件。其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息。类似的工具还有wget。

    curl命令使用了libcurl库来实现,libcurl库常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页、网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题。

    常用参数

    curl命令参数很多,这里只列出我曾经用过、特别是在shell脚本中用到过的那些。

    -A:随意指定自己这次访问所宣称的自己的浏览器信息

    -b/--cookie <name=string/file> cookie字符串或文件读取位置,使用option来把上次的cookie信息追加到http request里面去。

    -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中

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

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

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

    -F/--form <name=content> 模拟http表单提交数据

    -v/--verbose 小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。

    -m/--max-time <seconds> 指定处理的最大时长

    -H/--header <header> 指定请求头参数

    -s/--slient 减少输出的信息,比如进度

    --connect-timeout <seconds> 指定尝试连接的最大时长

    -x/--proxy <proxyhost[:port]> 指定代理服务器地址和端口,端口默认为1080

    -T/--upload-file <file> 指定上传文件路径

    -o/--output <file> 指定输出文件名称

    --retry <num> 指定重试次数

    -e/--referer <URL> 指定引用地址

    -I/--head 仅返回头部信息,使用HEAD请求

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

    -O:按照服务器上的文件名,自动存在本地

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

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

    使用示例

    1,抓取页面内容到一个文件中

      [root@xi mytest]# curl -o home.html http://www.baidu.com   --将百度首页内容抓下到home.html中

         [root@xi mytest]#curl -o #2_#1.jpghttp://cgi2.tky.3web.ne.jp/~{A,B}/[001-201].JPG

               由于A/B下的文件名都是001,002...,201,下载下来的文件重名,这样,自定义出来下载下来的文件名,就变成了这样:原来: A/001.JPG —-> 下载后: 001-A.JPG 原来: B/001.JPG ---> 下载后: 001-B.JPG

     

    2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。还可以用正则来抓取东西

      [root@xi mytest]# curl -O http://www.baidu.com/img/bdlogo.gif

             运行结果如下:

            % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                                                       Dload  Upload   Total   Spent    Left  Speed
           100  1575  100  1575    0     0  14940      0 --:--:-- --:--:-- --:--:-- 1538k

              会在当前执行目录中生成一张bdlogo.gif的图片。

      [root@xi mytest]# curl -O http://XXXXX/screen[1-10].JPG  --下载screen1.jpg~screen10.jpg

    3,模拟表单信息,模拟登录,保存cookie信息

      [root@xi mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=******http://www.XXXX.com/wp-login.php

    4,模拟表单信息,模拟登录,保存头信息

      [root@xi mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=******http://www.XXXX.com/wp-login.php

      -c(小写)产生的cookie和-D里面的cookie是不一样的。

    5,使用cookie文件

      [root@xi mytest]# curl -b ./cookie_c.txt http://www.XXXX.com/wp-admin

    6,断点续传,-C(大写)

      [root@xi mytest]# curl -C -O http://www.baidu.com/img/bdlogo.gif

    7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功

      [root@xi mytest]# curl -d log=aaaa http://www.XXXX.com/wp-login.php

    8,显示抓取错误,下面这个例子,很清楚的表明了。

      [root@xi mytest]# curl -fhttp://www.XXXX.com/asdf

      curl: (22) The requested URL returned error: 404

      [root@xi mytest]# curlhttp://www.XXXX.com/asdf

      <HTML><HEAD><TITLE>404,not found</TITLE>

    9,伪造来源地址,有的网站会判断,请求来源地址,防止盗链。

      [root@xi mytest]# curl -ehttp://localhosthttp://www.XXXX.com/wp-login.php

    10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理

      [root@xi mytest]# curl -x 24.10.28.84:32779 -o home.htmlhttp://www.XXXX.com

    11,比较大的东西,我们可以分段下载

      [root@xi mytest]# curl -r 0-100 -o img.part1http://www.XXXX.com/wp-content/uploads/2010/09/compare_varnish.jpg

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0

      [root@xi mytest]# curl -r 100-200 -o img.part2http://www.XXXX.com/wp-ontent/uploads/2010/09/compare_varnish.jpg

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0

      [root@xi mytest]# curl -r 200- -o img.part3http://www.XXXX.com/wp-content/uploads/2010/09/compare_varnish.jpg

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961

      [root@xi mytest]# ls |grep part | xargs du -sh

      4.0K    one.part1

      112K    three.part3

      4.0K    two.part2

      用的时候,把他们cat一下就OK,cat img.part* >img.jpg

    12,不会显示下载进度信息

      [root@xi mytest]# curl -s -o aaa.jpg http://www.baidu.com/img/bdlogo.gif

    13,显示下载进度条

      [root@xi mytest]# curl  -0 http://www.baidu.com/img/bdlogo.gif     (以http1.0协议请求)

    ####################################################################### 100.0%

    14,通过ftp下载文件

      [xifj@Xi ~]$ curl -u用户名:密码 -Ohttp://www.XXXX.com/demo/curtain/bbstudy_files/style.css

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136

      [xifj@Xi ~]$ curl -u 用户名:密码 -O http://www.XXXX.com/demo/curtain/bbstudy_files/style.css

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136

      或者用下面的方式

      [xifj@Xi ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css

      [xifj@Xi ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css

      15,通过ftp上传

      [xifj@Xi ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/

      [xifj@Xi ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/

     

    15,模拟浏览器头

      [xifj@Xi ~]$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -o page.html -D cookie0001.txthttp://www.www.baidu.com

    16,PUT、GET、POST

    比如 curl -T localfile http://cgi2.tky.3web.ne.jp/~zz/abc.cgi,这时候,使用的协议是HTTP的PUT method 
    刚才说到PUT,自然想起来了其他几种methos--GET和POST。 
    http提交一个表单,比较常用的是POST模式和GET模式 
    GET模式什么option都不用,只需要把变量写在url里面就可以了
    比如:
    curl http://www.yahoo.com/login.cgi?user=nick&password=12345 
    而POST模式的option则是 -d 
    比如,curl -d "user=nick&password=12345" http://www.yahoo.com/login.cgi

    就相当于向这个站点发出一次登陆申请~~~~~ 
    到底该用GET模式还是POST模式,要看对面服务器的程序设定。 
    一点需要注意的是,POST模式下的文件上的文件上传,比如
    <form method="POST" enctype="multipar/form-data" action="http://cgi2.tky.3web.ne.jp/~zz/up_file.cgi">
    <input type=file name=upload>
    <input type=submit name=nick value="go">
    </form>
    这样一个HTTP表单,我们要用curl进行模拟,就该是这样的语法:
    curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zz/up_file.cgi 

    展开全文
  • curl命令详解

    千次阅读 2015-02-26 07:31:35
    对于windows用户如果用Cygwin模拟unix环境的话,里面没有带curl命令,要自己装,所以建议用Gow来模拟,它已经自带了curl工具,安装后直接在cmd环境中用curl命令就可,因为路径已经自动给你配置好了。linux curl是一...

      对于windows用户如果用Cygwin模拟unix环境的话,里面没有带curl命令,要自己装,所以建议用Gow来模拟,它已经自带了curl工具,安装后直接在cmd环境中用curl命令就可,因为路径已经自动给你配置好了。

    linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。
    

      一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。

    -a/--append 上传文件时,附加到目标文件
    
      -A/--user-agent <string>  设置用户代理发送给服务器
    
      - anyauth   可以使用“任何”身份验证方法
    
      -b/--cookie <name=string/file> cookie字符串或文件读取位置
    
      - basic 使用HTTP基本验证
    
      -B/--use-ascii 使用ASCII /文本传输
    
      -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
    
      -C/--continue-at <offset>  断点续转
    
      -d/--data <data>   HTTP POST方式传送数据
    
      --data-ascii <data>  以ascii的方式post数据
    
      --data-binary <data> 以二进制的方式post数据
    
      --negotiate     使用HTTP身份验证
    
      --digest        使用数字身份验证
    
      --disable-eprt  禁止使用EPRTLPRT
    
      --disable-epsv  禁止使用EPSV
    
      -D/--dump-header <file> 把header信息写入到该文件中
    
      --egd-file <file> 为随机数据(SSL)设置EGD socket路径
    
      --tcp-nodelay   使用TCP_NODELAY选项
    
      -e/--referer 来源网址
    
      -E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
    
      --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)
    
      --key <key>     私钥文件名 (SSL)
    
      --key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)
    
      --pass  <pass>  私钥密码 (SSL)
    
      --engine <eng>  加密引擎使用 (SSL). "--engine list" for list
    
      --cacert <file> CA证书 (SSL)
    
      --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
    
      --ciphers <list>  SSL密码
    
      --compressed    要求返回是压缩的形势 (using deflate or gzip)
    
      --connect-timeout <seconds> 设置最大请求时间
    
      --create-dirs   建立本地目录的目录层次结构
    
      --crlf          上传是把LF转变成CRLF
    
      -f/--fail          连接失败时不显示http错误
    
      --ftp-create-dirs 如果远程目录不存在,创建远程目录
    
      --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
    
      --ftp-pasv      使用 PASV/EPSV 代替端口
    
      --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
    
      --ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输
    
      --ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输
    
      -F/--form <name=content> 模拟http表单提交数据
    
      -form-string <name=string> 模拟http表单提交数据
    
      -g/--globoff 禁用网址序列和范围使用{}和[]
    
      -G/--get 以get的方式来发送数据
    
      -h/--help 帮助
    
      -H/--header <line>自定义头信息传递给服务器
    
      --ignore-content-length  忽略的HTTP头信息的长度
    
      -i/--include 输出时包括protocol头信息
    
      -I/--head  只显示文档信息
    
      从文件中读取-j/--junk-session-cookies忽略会话Cookie
    
      - 界面<interface>指定网络接口/地址使用
    
      - krb4 <级别>启用与指定的安全级别krb4
    
      -j/--junk-session-cookies 读取文件进忽略session cookie
    
      --interface <interface> 使用指定网络接口/地址
    
      --krb4 <level>  使用指定安全级别的krb4
    
      -k/--insecure 允许不使用证书到SSL站点
    
      -K/--config  指定的配置文件读取
    
      -l/--list-only 列出ftp目录下的文件名称
    
      --limit-rate <rate> 设置传输速度
    
      --local-port<NUM> 强制使用本地端口号
    
      -m/--max-time <seconds> 设置最大传输时间
    
      --max-redirs <num> 设置最大读取的目录数
    
      --max-filesize <bytes> 设置最大下载的文件总量
    
      -M/--manual  显示全手动
    
      -n/--netrc 从netrc文件中读取用户名和密码
    
      --netrc-optional 使用 .netrc 或者 URL来覆盖-n
    
      --ntlm          使用 HTTP NTLM 身份验证
    
      -N/--no-buffer 禁用缓冲输出
    
      -o/--output 把输出写到该文件中
    
      -O/--remote-name 把输出写到该文件中,保留远程文件的文件名
    
      -p/--proxytunnel   使用HTTP代理
    
      --proxy-anyauth 选择任一代理身份验证方法
    
      --proxy-basic   在代理上使用基本身份验证
    
      --proxy-digest  在代理上使用数字身份验证
    
      --proxy-ntlm    在代理上使用ntlm身份验证
    
      -P/--ftp-port <address> 使用端口地址,而不是使用PASV
    
      -Q/--quote <cmd>文件传输前,发送命令到服务器
    
      -r/--range <range>检索来自HTTP/1.1FTP服务器字节范围
    
      --range-file 读取(SSL)的随机文件
    
      -R/--remote-time   在本地生成文件时,保留远程文件时间
    
      --retry <num>   传输出现问题时,重试的次数
    
      --retry-delay <seconds>  传输出现问题时,设置重试间隔时间
    
      --retry-max-time <seconds> 传输出现问题时,设置最大重试时间
    
      -s/--silent静音模式。不输出任何东西
    
      -S/--show-error   显示错误
    
      --socks4 <host[:port]> 用socks4代理给定主机和端口
    
      --socks5 <host[:port]> 用socks5代理给定主机和端口
    
      --stderr <file>
    -t/--telnet-option <OPT=val> Telnet选项设置
    
      --trace <file>  对指定文件进行debug
    
      --trace-ascii <file> Like --跟踪但没有hex输出
    
      --trace-time    跟踪/详细输出时,添加时间戳
    
      -T/--upload-file <file> 上传文件
    
      --url <URL>     Spet URL to work with
    
      -u/--user <user[:password]>设置服务器的用户和密码
    
      -U/--proxy-user <user[:password]>设置代理用户名和密码
    
      -v/--verbose
    
      -V/--version 显示版本信息
    
      -w/--write-out [format]什么输出完成后
    
      -x/--proxy <host[:port]>在给定的端口上使用HTTP代理
    
      -X/--request <command>指定什么命令
    
      -y/--speed-time 放弃限速所要的时间。默认为30
    
      -Y/--speed-limit 停止传输速度的限制,速度时间'秒
    
      -z/--time-cond  传送时间设置
    
      -0/--http1.0  使用HTTP 1.0
    
      -1/--tlsv1  使用TLSv1SSL
      -2/--sslv2 使用SSLv2的(SSL
      -3/--sslv3         使用的SSLv3SSL
      --3p-quote      like -Q for the source URL for 3rd party transfer
    
      --3p-url        使用url,进行第三方传送
    
      --3p-user       使用用户名和密码,进行第三方传送
    
      -4/--ipv4   使用IP4
    
      -6/--ipv6   使用IP6
    
      -#/--progress-bar 用进度条显示当前的传送状态
    
      -a/--append 上传文件时,附加到目标文件
    
      -A/--user-agent <string>  设置用户代理发送给服务器
    
      - anyauth   可以使用“任何”身份验证方法
    
      -b/--cookie <name=string/file> cookie字符串或文件读取位置
    
      - basic 使用HTTP基本验证
    
      -B/--use-ascii 使用ASCII /文本传输
    
      -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
    
      -C/--continue-at <offset>  断点续转
    
      -d/--data <data>   HTTP POST方式传送数据
    
      --data-ascii <data>  以ascii的方式post数据
    
      --data-binary <data> 以二进制的方式post数据
    
      --negotiate     使用HTTP身份验证
    
      --digest        使用数字身份验证
    
      --disable-eprt  禁止使用EPRTLPRT
    
      --disable-epsv  禁止使用EPSV
    
      -D/--dump-header <file> 把header信息写入到该文件中
    
      --egd-file <file> 为随机数据(SSL)设置EGD socket路径
    
      --tcp-nodelay   使用TCP_NODELAY选项
    
      -e/--referer 来源网址
    
      -E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
    
      --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)
    
      --key <key>     私钥文件名 (SSL)
    
      --key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)
    
      --pass  <pass>  私钥密码 (SSL)
    
      --engine <eng>  加密引擎使用 (SSL). "--engine list" for list
    
      --cacert <file> CA证书 (SSL)
    
      --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
    
      --ciphers <list>  SSL密码
    
      --compressed    要求返回是压缩的形势 (using deflate or gzip)
    
      --connect-timeout <seconds> 设置最大请求时间
    
      --create-dirs   建立本地目录的目录层次结构
    
      --crlf          上传是把LF转变成CRLF
    
      -f/--fail          连接失败时不显示http错误
    
      --ftp-create-dirs 如果远程目录不存在,创建远程目录
    
      --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
    
      --ftp-pasv      使用 PASV/EPSV 代替端口
    
      --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
    
      --ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输
    
      --ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输
    
      -F/--form <name=content> 模拟http表单提交数据
    
      -form-string <name=string> 模拟http表单提交数据
    
      -g/--globoff 禁用网址序列和范围使用{}和[]
    
      -G/--get 以get的方式来发送数据
    
      -h/--help 帮助
    
      -H/--header <line>自定义头信息传递给服务器
    
      --ignore-content-length  忽略的HTTP头信息的长度
    
      -i/--include 输出时包括protocol头信息
    
      -I/--head  只显示文档信息
    
      从文件中读取-j/--junk-session-cookies忽略会话Cookie
    
      - 界面<interface>指定网络接口/地址使用
    
      - krb4 <级别>启用与指定的安全级别krb4
    
      -j/--junk-session-cookies 读取文件进忽略session cookie
    
      --interface <interface> 使用指定网络接口/地址
    
      --krb4 <level>  使用指定安全级别的krb4
    
      -k/--insecure 允许不使用证书到SSL站点
    
      -K/--config  指定的配置文件读取
    
      -l/--list-only 列出ftp目录下的文件名称
    
      --limit-rate <rate> 设置传输速度
    
      --local-port<NUM> 强制使用本地端口号
    
      -m/--max-time <seconds> 设置最大传输时间
    
      --max-redirs <num> 设置最大读取的目录数
    
      --max-filesize <bytes> 设置最大下载的文件总量
    -M/--manual  显示全手动
    
      -n/--netrc 从netrc文件中读取用户名和密码
    
      --netrc-optional 使用 .netrc 或者 URL来覆盖-n
    
      --ntlm          使用 HTTP NTLM 身份验证
    
      -N/--no-buffer 禁用缓冲输出
    
      -o/--output 把输出写到该文件中
    
      -O/--remote-name 把输出写到该文件中,保留远程文件的文件名
    
      -p/--proxytunnel   使用HTTP代理
    
      --proxy-anyauth 选择任一代理身份验证方法
    
      --proxy-basic   在代理上使用基本身份验证
    
      --proxy-digest  在代理上使用数字身份验证
    
      --proxy-ntlm    在代理上使用ntlm身份验证
    
      -P/--ftp-port <address> 使用端口地址,而不是使用PASV
    
      -Q/--quote <cmd>文件传输前,发送命令到服务器
    
      -r/--range <range>检索来自HTTP/1.1FTP服务器字节范围
    
      --range-file 读取(SSL)的随机文件
    
      -R/--remote-time   在本地生成文件时,保留远程文件时间
    
      --retry <num>   传输出现问题时,重试的次数
    
      --retry-delay <seconds>  传输出现问题时,设置重试间隔时间
    
      --retry-max-time <seconds> 传输出现问题时,设置最大重试时间
    
      -s/--silent静音模式。不输出任何东西
    
      -S/--show-error   显示错误
    
      --socks4 <host[:port]> 用socks4代理给定主机和端口
    
      --socks5 <host[:port]> 用socks5代理给定主机和端口
    
      --stderr <file>
    
      -t/--telnet-option <OPT=val> Telnet选项设置
    
      --trace <file>  对指定文件进行debug
    
      --trace-ascii <file> Like --跟踪但没有hex输出
    
      --trace-time    跟踪/详细输出时,添加时间戳
    
      -T/--upload-file <file> 上传文件
    
      --url <URL>     Spet URL to work with
    
      -u/--user <user[:password]>设置服务器的用户和密码
    
      -U/--proxy-user <user[:password]>设置代理用户名和密码
    
      -v/--verbose
    
      -V/--version 显示版本信息
    
      -w/--write-out [format]什么输出完成后
    
      -x/--proxy <host[:port]>在给定的端口上使用HTTP代理
    
      -X/--request <command>指定什么命令
    
      -y/--speed-time 放弃限速所要的时间。默认为30
    
      -Y/--speed-limit 停止传输速度的限制,速度时间'秒
    
      -z/--time-cond  传送时间设置
    
      -0/--http1.0  使用HTTP 1.0
    
      -1/--tlsv1  使用TLSv1SSL
      -2/--sslv2 使用SSLv2的(SSL
      -3/--sslv3         使用的SSLv3SSL
      --3p-quote      like -Q for the source URL for 3rd party transfer
    
      --3p-url        使用url,进行第三方传送
    
      --3p-user       使用用户名和密码,进行第三方传送
    
      -4/--ipv4   使用IP4
    
      -6/--ipv6   使用IP6
    
      -#/--progress-bar 用进度条显示当前的传送状态

      二,常用curl实例

      1,抓取页面内容到一个文件中

    [root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com
    
      [root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com

      2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西

    [root@krlcgcms01 mytest]# curl -O
    
      [root@krlcgcms01 mytest]# curl -O

      3,模拟表单信息,模拟登录,保存cookie信息

    [root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php
    
      [root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

      4,模拟表单信息,模拟登录,保存头信息

     [root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php
    
      [root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php
    
      -c(小写)产生的cookie和-D里面的cookie是不一样的。

      5,使用cookie文件

    [root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin
    
      [root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin

      6,断点续传,-C(大写的)

    [root@krlcgcms01 mytest]# curl -C -O

      7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功

     [root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php
    
      [root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php

      8,显示抓取错误,下面这个例子,很清楚的表明了。

    [root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf
    
      curl: (22) The requested URL returned error: 404
    
      [root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf
    
      <HTML><HEAD><TITLE>404,not found</TITLE>
    
      。。。。。。。。。。。。
    
      [root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf
    
      curl: (22) The requested URL returned error: 404
    
      [root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf
    
      <HTML><HEAD><TITLE>404,not found</TITLE>

      。。。。。。。。。。。。

      9,伪造来源地址,有的网站会判断,请求来源地址。

    [root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php
    
      [root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php

      10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理

    [root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com
    
      [root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com

    11,比较大的东西,我们可以分段下载

     [root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-
    
      content/uploads/2010/09/compare_varnish.jpg
    
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    
      Dload  Upload   Total   Spent    Left  Speed
    
      100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0
    
      [root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-
    
      content/uploads/2010/09/compare_varnish.jpg
    
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    
      Dload  Upload   Total   Spent    Left  Speed
    
      100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0
    
      [root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-
    
      content/uploads/2010/09/compare_varnish.jpg
    
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    
      Dload  Upload   Total   Spent    Left  Speed
    
      100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
    
      [root@krlcgcms01 mytest]# ls |grep part | xargs du -sh
    
      4.0K    one.part1
    
      112K    three.part3
    
      4.0K    two.part2
    
      [root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-
    
      content/uploads/2010/09/compare_varnish.jpg
    
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    
      Dload  Upload   Total   Spent    Left  Speed
    
      100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0
    
      [root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-
    
      content/uploads/2010/09/compare_varnish.jpg
    
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    
      Dload  Upload   Total   Spent    Left  Speed
    
      100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0
    
      [root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-
    
      content/uploads/2010/09/compare_varnish.jpg
    
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    
      Dload  Upload   Total   Spent    Left  Speed
    
      100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
    
      [root@krlcgcms01 mytest]# ls |grep part | xargs du -sh
    
      4.0K    one.part1
    
      112K    three.part3
    
      4.0K    two.part2
    
      用的时候,把他们cat一下就OK了,cat img.part* >img.jpg

      12,不会显示下载进度信息

    [root@krlcgcms01 mytest]# curl -s -o aaa.jpg 

      13,显示下载进度条

    [root@krlcgcms01 mytest]# curl -# -O 

      ######################################################################## 100.0%

      14,通过ftp下载文件

    [zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css
    
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    
      Dload  Upload   Total   Spent    Left  Speed
    
      101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
    
      [zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css
    
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    
      Dload  Upload   Total   Spent    Left  Speed
    
      101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
    
      或者用下面的方式
    
      [zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css
    
      [zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css

      15,通过ftp上传

     [zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/

      [zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/
    原文出处:http://linux.chinaitlab.com/command/830656.html

    http://www.5678520.com/kaiwangdian/130.html

    http://www.5678520.com/kaiwangdian/129.html

    http://www.5678520.com/kaiwangdian/128.html

    http://www.5678520.com/kaiwangdian/127.html

    http://www.5678520.com/kaiwangdian/126.html

    http://www.lianzhiwei.com/News/389/20122116.html

    http://www.lianzhiwei.com/News/389/20122115.html

    http://www.lianzhiwei.com/News/389/20122114.html

    http://www.lianzhiwei.com/News/389/20122113.html

    http://www.lianzhiwei.com/News/389/20122112.html

    展开全文
  • windows curl命令详解

    万次阅读 2016-12-15 17:02:25
    在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令。软件下载下载地址:https://curl.haxx.se/download.html 使用方式一:在curl.exe目录中使用 解压下载后的压缩文件,通过cmd命令进入...

    概述

    Curl命令可以通过命令行的方式,执行Http请求。在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令。

    软件下载

    下载地址:https://curl.haxx.se/download.html
    这里写图片描述

    使用方式一:在curl.exe目录中使用

      解压下载后的压缩文件,通过cmd命令进入到curl.exe所在的目录。
      由于博主使用的是windows 64位 的系统,因此可以使用I386下的curl.exe工具。
      进入到该目录后,执行curl –help测试:
      这里写图片描述

    使用方式二:放置在system32中

    解压下载好的文件,拷贝I386/curl.exe文件到C:\Windows\System32,然后就可以在DOS窗口中任意位置,使用curl命令了。

    使用方式三:配置环境变量

    在系统高级环境变量中,配置
      CURL_HOME —– “你的curl目录位置\curl-7.43.0”
      path —- 末尾添加 “;%CURL_HOME%\I386”

    常用参数

    curl命令参数很多,这里只列出我曾经用过、特别是在shell脚本中用到过的那些。
    -v/–verbose 小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。
    -m/–max-time 指定处理的最大时长
    -H/–header

    指定请求头参数
    -s/–slient 减少输出的信息,比如进度
    –connect-timeout 指定尝试连接的最大时长
    -x/–proxy

    常用命令详解

    1、开启gzip请求
    curl -I http://www.sina.com.cn/ -H Accept-Encoding:gzip,defalte

    2、监控网页的响应时间
    curl -o /dev/null -s -w “time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n” “http://www.kklinux.com

    1. 监控站点可用性
      curl -o /dev/null -s -w %{http_code} “http://www.kklinux.com

    4、以http1.0协议请求(默认为http1.1)
    curl -0 …………..
    1)读取网页
      $ curl linuxidc.com”>http://www.linuxidc.com
      2)保存网页
      curlhttp://www.linuxidc.com>page.html curl -o page.html http://www.linuxidc.com
      3)使用的proxy服务器及其端口:-x
      $ curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com
      4)使用cookie来记录session信息
      $ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.linuxidc.com
    option: -D 是把http的response里面的cookie信息存到一个特别的文件中去,这样,当页面被存到page.html的同时,cookie信息也被存到了cookie0001.txt里面了
    5)那么,下一次访问的时候,如何继续使用上次留下的cookie信息呢?
      使用option来把上次的cookie信息追加到http request里面去:-b
      $ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://www.linuxidc.com

    6)浏览器信息~~~~
    随意指定自己这次访问所宣称的自己的浏览器信息: -A
    curl -A “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)” -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://www.yahoo.com
    这样,服务器端接到访问的要求,会认为你是一个运行在Windows 2000上的IE6.0,嘿嘿嘿,其实也许你用的是苹果机呢!
    而”Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686”则可以告诉对方你是一台PC上跑着的Linux,用的是Netscape 4.73,呵呵呵

    7)
    另外一个服务器端常用的限制方法,就是检查http访问的referer。比如你先访问首页,再访问里面所指定的下载页,这第二次访问的referer地址就是第一次访问成功后的页面地
    址。这样,服务器端只要发现对下载页面某次访问的referer地址不 是首页的地址,就可以断定那是个盗连了~
    讨厌讨厌~我就是要盗连~~~!!
    幸好curl给我们提供了设定referer的option: -e
    curl -A “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)” -x 123.45.67.89:1080 -e “mail.yahoo.com” -o page.html -D cookie0001.txt http://www.yahoo.com
    这样,就可以骗对方的服务器,你是从mail.yahoo.com点击某个链接过来的了,呵呵呵

    8)curl 下载文件
    刚才讲过了,下载页面到一个文件里,可以使用 -o ,下载文件也是一样。
    比如, curl -o 1.jpg http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
    这里教大家一个新的option: -O
    大写的O,这么用: curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
    这样,就可以按照服务器上的文件名,自动存在本地了!
    再来一个更好用的。
    如果screen1.JPG以外还有screen2.JPG、screen3.JPG、….、screen10.JPG需要下载,难不成还要让我们写一个script来完成这些操作?
    不干!
    在curl里面,这么写就可以了:
    curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG
    呵呵呵,厉害吧?!~
    9)
    再来,我们继续讲解下载!
    curl -O http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG
    这样产生的下载,就是
    ~zzh/001.JPG
    ~zzh/002.JPG
    ...
    ~zzh/201.JPG
    ~nick/001.JPG
    ~nick/002.JPG
    ...
    ~nick/201.JPG
    够方便的了吧?哈哈哈
    咦?高兴得太早了。
    由于zzh/nick下的文件名都是001,002...,201,下载下来的文件重名,后面的把前面的文件都给覆盖掉了
    ~
    没关系,我们还有更狠的!
    curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG
    –这是…..自定义文件名的下载?
    –对头,呵呵!
    1是变量,指的是{zzh,nick}这部分,第一次取值zzh,第二次取值nick
    2代表的变量,则是第二段可变部分—[001-201],取值从001逐一加到201
    这样,自定义出来下载下来的文件名,就变成了这样:
    原来: ~zzh/001.JPG —> 下载后: 001-zzh.JPG
    原来: ~nick/001.JPG —> 下载后: 001-nick.JPG
    这样一来,就不怕文件重名啦,呵呵

    9)
    继续讲下载
    我们平时在windows平台上,flashget这样的工具可以帮我们分块并行下载,还可以断线续传。
    curl在这些方面也不输给谁,嘿嘿
    比如我们下载screen1.JPG中,突然掉线了,我们就可以这样开始续传
    curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG
    当然,你不要拿个flashget下载了一半的文件来糊弄我~~别的下载软件的半截文件可不一定能用哦~
    分块下载,我们使用这个option就可以了: -r
    举例说明
    比如我们有一个http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 要下载(赵老师的电话朗诵 :D )
    我们就可以用这样的命令:
    curl -r 0-10240 -o “zhao.part1” http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
    curl -r 10241-20480 -o “zhao.part1” http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
    curl -r 20481-40960 -o “zhao.part1” http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
    curl -r 40961- -o “zhao.part1” http:/cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3
    这样就可以分块下载啦。
    不过你需要自己把这些破碎的文件合并起来
    如果你用UNIX或苹果,用 cat zhao.part* > zhao.mp3就可以
    如果用的是Windows,用copy /b 来解决吧,呵呵
    上面讲的都是http协议的下载,其实ftp也一样可以用。
    用法嘛,
    curl -u name:passwd ftp://ip:port/path/file
    或者大家熟悉的
    curl ftp://name:passwd@ip:port/path/file

    参考:http://blog.csdn.net/wangjunji34478/article/details/35988223

    展开全文
  • Linux curl命令详解

    万次阅读 2017-01-09 09:15:26
    Linux curl命令详解 命令:curl 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为...

    Linux curl命令详解

    命令:curl

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

    语法:# curl [option] [url]

    常见参数:

    复制代码
    -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                        进度条显示当前的传送状态
    复制代码

    例子:
    1、基本用法

    # curl http://www.linux.com

    执行后,www.linux.com 的html就会显示在屏幕上了
    Ps:由于安装linux的时候很多时候是没有安装桌面的,也意味着没有浏览器,因此这个方法也经常用于测试一台服务器是否可以到达一个网站

    2、保存访问的网页
    2.1:使用linux的重定向功能保存

    # curl http://www.linux.com >> linux.html

    2.2:可以使用curl的内置option:-o(小写)保存网页

    $ curl -o linux.html http://www.linux.com

    执行完成后会显示如下界面,显示100%则表示保存成功

    % Total    % Received % Xferd  Average Speed  Time    Time    Time  Current
                                    Dload  Upload  Total  Spent    Left  Speed
    100 79684    0 79684    0    0  3437k      0 --:--:-- --:--:-- --:--:-- 7781k

    2.3:可以使用curl的内置option:-O(大写)保存网页中的文件
    要注意这里后面的url要具体到某个文件,不然抓不下来

    # curl -O http://www.linux.com/hello.sh

    3、测试网页返回值

    # curl -o /dev/null -s -w %{http_code} www.linux.com

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

    4、指定proxy服务器以及其端口
    很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),幸运的是curl通过使用内置option:-x来支持设置代理

    # curl -x 192.168.100.100:1080 http://www.linux.com

    5、cookie
    有些网站是使用cookie来记录session信息。对于chrome这样的浏览器,可以轻易处理cookie信息,但在curl中只要增加相关参数也是可以很容易的处理cookie
    5.1:保存http的response里面的cookie信息。内置option:-c(小写)

    # curl -c cookiec.txt  http://www.linux.com

    执行后cookie信息就被存到了cookiec.txt里面了

    5.2:保存http的response里面的header信息。内置option: -D

    # curl -D cookied.txt http://www.linux.com

    执行后cookie信息就被存到了cookied.txt里面了

    注意:-c(小写)产生的cookie和-D里面的cookie是不一样的。


    5.3:使用cookie
    很多网站都是通过监视你的cookie信息来判断你是否按规矩访问他们的网站的,因此我们需要使用保存的cookie信息。内置option: -b

    # curl -b cookiec.txt http://www.linux.com

    6、模仿浏览器
    有些网站需要使用特定的浏览器去访问他们,有些还需要使用某些特定的版本。curl内置option:-A可以让我们指定浏览器去访问网站

    # curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com

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

    7、伪造referer(盗链)
    很多服务器会检查http访问的referer从而来控制访问。比如:你是先访问首页,然后再访问首页中的邮箱页面,这里访问邮箱的referer地址就是访问首页成功后的页面地址,如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗连了
    curl中内置option:-e可以让我们设定referer

    # curl -e "www.linux.com" http://mail.linux.com

    这样就会让服务器其以为你是从www.linux.com点击某个链接过来的

    8、下载文件
    8.1:利用curl下载文件。
    #使用内置option:-o(小写)

    # curl -o dodo1.jpg http:www.linux.com/dodo1.JPG

    #使用内置option:-O(大写)

    # curl -O http://www.linux.com/dodo1.JPG

    这样就会以服务器上的名称保存文件到本地

    8.2:循环下载
    有时候下载图片可以能是前面的部分名称是一样的,就最后的尾椎名不一样

    # curl -O http://www.linux.com/dodo[1-5].JPG

    这样就会把dodo1,dodo2,dodo3,dodo4,dodo5全部保存下来

    8.3:下载重命名

    # curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG

    由于下载的hello与bb中的文件名都是dodo1,dodo2,dodo3,dodo4,dodo5。因此第二次下载的会把第一次下载的覆盖,这样就需要对文件进行重命名。

    # curl -o #1_#2.JPG http://www.linux.com/{hello,bb}/dodo[1-5].JPG

    这样在hello/dodo1.JPG的文件下载下来就会变成hello_dodo1.JPG,其他文件依此类推,从而有效的避免了文件被覆盖

    8.4:分块下载
    有时候下载的东西会比较大,这个时候我们可以分段下载。使用内置option:-r

    # curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
    # curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
    # curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG
    # cat dodo1_part* > dodo1.JPG

    这样就可以查看dodo1.JPG的内容了

    8.5:通过ftp下载文件
    curl可以通过ftp下载文件,curl提供两种从ftp中下载的语法

    # curl -O -u 用户名:密码 ftp://www.linux.com/dodo1.JPG
    # curl -O ftp://用户名:密码@www.linux.com/dodo1.JPG

    8.6:显示下载进度条

    # curl -# -O http://www.linux.com/dodo1.JPG

    8.7:不会显示下载进度信息

    # curl -s -O http://www.linux.com/dodo1.JPG

    9、断点续传
    在windows中,我们可以使用迅雷这样的软件进行断点续传。curl可以通过内置option:-C同样可以达到相同的效果
    如果在下载dodo1.JPG的过程中突然掉线了,可以使用以下的方式续传

    # curl -C -O http://www.linux.com/dodo1.JPG

    10、上传文件
    curl不仅仅可以下载文件,还可以上传文件。通过内置option:-T来实现

    # curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/

    这样就向ftp服务器上传了文件dodo1.JPG

    11、显示抓取错误

    # curl -f http://www.linux.com/error

    其他参数(此处翻译为转载):

    复制代码
    -a/--append                        上传文件时,附加到目标文件
    --anyauth                            可以使用“任何”身份验证方法
    --basic                                使用HTTP基本验证
    -B/--use-ascii                      使用ASCII文本传输
    -d/--data <data>                  HTTP POST方式传送数据
    --data-ascii <data>            以ascii的方式post数据
    --data-binary <data>          以二进制的方式post数据
    --negotiate                          使用HTTP身份验证
    --digest                        使用数字身份验证
    --disable-eprt                  禁止使用EPRT或LPRT
    --disable-epsv                  禁止使用EPSV
    --egd-file <file>              为随机数据(SSL)设置EGD socket路径
    --tcp-nodelay                  使用TCP_NODELAY选项
    -E/--cert <cert[:passwd]>      客户端证书文件和密码 (SSL)
    --cert-type <type>              证书文件类型 (DER/PEM/ENG) (SSL)
    --key <key>                    私钥文件名 (SSL)
    --key-type <type>              私钥文件类型 (DER/PEM/ENG) (SSL)
    --pass  <pass>                  私钥密码 (SSL)
    --engine <eng>                  加密引擎使用 (SSL). "--engine list" for list
    --cacert <file>                CA证书 (SSL)
    --capath <directory>            CA目   (made using c_rehash) to verify peer against (SSL)
    --ciphers <list>                SSL密码
    --compressed                    要求返回是压缩的形势 (using deflate or gzip)
    --connect-timeout <seconds>    设置最大请求时间
    --create-dirs                  建立本地目录的目录层次结构
    --crlf                          上传是把LF转变成CRLF
    --ftp-create-dirs              如果远程目录不存在,创建远程目录
    --ftp-method [multicwd/nocwd/singlecwd]    控制CWD的使用
    --ftp-pasv                      使用 PASV/EPSV 代替端口
    --ftp-skip-pasv-ip              使用PASV的时候,忽略该IP地址
    --ftp-ssl                      尝试用 SSL/TLS 来进行ftp数据传输
    --ftp-ssl-reqd                  要求用 SSL/TLS 来进行ftp数据传输
    -F/--form <name=content>        模拟http表单提交数据
    -form-string <name=string>      模拟http表单提交数据
    -g/--globoff                    禁用网址序列和范围使用{}和[]
    -G/--get                        以get的方式来发送数据
    -h/--help                      帮助
    -H/--header <line>              自定义头信息传递给服务器
    --ignore-content-length        忽略的HTTP头信息的长度
    -i/--include                    输出时包括protocol头信息
    -I/--head                      只显示文档信息
    -j/--junk-session-cookies      读取文件时忽略session cookie
    --interface <interface>        使用指定网络接口/地址
    --krb4 <level>                  使用指定安全级别的krb4
    -k/--insecure                  允许不使用证书到SSL站点
    -K/--config                    指定的配置文件读取
    -l/--list-only                  列出ftp目录下的文件名称
    --limit-rate <rate>            设置传输速度
    --local-port<NUM>              强制使用本地端口号
    -m/--max-time <seconds>        设置最大传输时间
    --max-redirs <num>              设置最大读取的目录数
    --max-filesize <bytes>          设置最大下载的文件总量
    -M/--manual                    显示全手动
    -n/--netrc                      从netrc文件中读取用户名和密码
    --netrc-optional                使用 .netrc 或者 URL来覆盖-n
    --ntlm                          使用 HTTP NTLM 身份验证
    -N/--no-buffer                  禁用缓冲输出
    -p/--proxytunnel                使用HTTP代理
    --proxy-anyauth                选择任一代理身份验证方法
    --proxy-basic                  在代理上使用基本身份验证
    --proxy-digest                  在代理上使用数字身份验证
    --proxy-ntlm                    在代理上使用ntlm身份验证
    -P/--ftp-port <address>        使用端口地址,而不是使用PASV
    -Q/--quote <cmd>                文件传输前,发送命令到服务器
    --range-file                    读取(SSL)的随机文件
    -R/--remote-time                在本地生成文件时,保留远程文件时间
    --retry <num>                  传输出现问题时,重试的次数
    --retry-delay <seconds>        传输出现问题时,设置重试间隔时间
    --retry-max-time <seconds>      传输出现问题时,设置最大重试时间
    -S/--show-error                显示错误
    --socks4 <host[:port]>          用socks4代理给定主机和端口
    --socks5 <host[:port]>          用socks5代理给定主机和端口
    -t/--telnet-option <OPT=val>    Telnet选项设置
    --trace <file>                  对指定文件进行debug
    --trace-ascii <file>            Like --跟踪但没有hex输出
    --trace-time                    跟踪/详细输出时,添加时间戳
    --url <URL>                    Spet URL to work with
    -U/--proxy-user <user[:password]>  设置代理用户名和密码
    -V/--version                    显示版本信息
    -X/--request <command>          指定什么命令
    -y/--speed-time                放弃限速所要的时间。默认为30
    -Y/--speed-limit                停止传输速度的限制,速度时间'秒
    -z/--time-cond                  传送时间设置
    -0/--http1.0                    使用HTTP 1.0
    -1/--tlsv1                      使用TLSv1(SSL)
    -2/--sslv2                      使用SSLv2的(SSL)
    -3/--sslv3                      使用的SSLv3(SSL)
    --3p-quote                      like -Q for the source URL for 3rd party transfer
    --3p-url                        使用url,进行第三方传送
    --3p-user                      使用用户名和密码,进行第三方传送
    -4/--ipv4                      使用IP4
    -6/--ipv6                      使用IP6
    
    
    # 转自:http://www.cnblogs.com/duhuo/p/5695256.html
    展开全文
  • Linux curl 命令详解

    千次阅读 2019-08-08 17:10:28
    命令设计用于在没有用户交互的情况下工作。 curl 是一个工具,用于传输来自服务器或者到服务器的数据。「向服务器传输数据或者获取来自服务器的数据」 可支持的协议有(DICT、FILE、FTP、FTPS、GOPHER、HTTP、...
  • curl 命令详解

    千次阅读 2018-10-02 04:03:20
    Curl是Linux下一个很强大的http命令行工具,其功能十分强大。 1)读取网页 $ curl linuxidc.com"&gt;http://www.linuxidc.com 2)保存网页 $ curlhttp://www.linuxidc.com&gt; page.html $ curl -o...
  • CURL操作以及命令详解

    千次阅读 2016-09-05 19:10:16
    现在CURL已经在非常多的系统中使用,WIN用户可以使用DOS版本的CURL命令操作,操作方法很简单,就是在CMD窗口中找到CURL文件夹,执行CURL命令即可,CMD中操作CURL不是本文讲解的重点,本文讲解PHP中的CURL;...
  • Linux中curl命令详解

    万次阅读 2019-03-11 15:26:35
    curl(CommandLine Uniform Resource Locator),即在命令行中利用URL进行数据或者文件传输。 https://curl.haxx.se/ 这是curl的官网。可以从上面的官网地址下载最新的curl版本。同时可以在官网看出curl支持的各种协议...
  • curl命令详解 (curl -I)

    万次阅读 2019-07-30 11:30:47
    curl 是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准输出"(stdout)...直接在 curl 命令后加上网址,就可以看到网页源码。以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短)...
  • 常用的curl命令及参数详解

    万次阅读 2018-10-23 14:45:46
    前言:经常需要用到curl命令在线上机器中去测试接口,尤其是一些内外网接口、判断线上接口信息等,需要用到curl命令直接测试页面或接口返回值,下面是我常用的curl命令参数及作用: 1、curl url 作用:获取页面...
  • linux curl命令详解

    万次阅读 2011-12-04 11:11:47
    一、参数详解  -M/--manual  显示全手动  -n/--netrc  从netrc文件中读取用户名和密码  --netrc-optional  使用 .netrc 或者 URL来覆盖-n  --ntlm  使用 HTTP NTLM 身份验证 ...
  • curl 命令参数详解

    万次阅读 2018-06-08 16:35:51
    curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST...
  • CURL命令参数详解

    千次阅读 2019-06-21 13:52:23
    curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST...
  • linux下curl命令详解

    千次阅读 2010-02-04 10:10:00
    Curl是Linux下一个很强大的http命令行工具,其功能十分强大。1) 二话不说,先从这里开始吧!$ curl http://www.linuxidc.com回车之后,www.linuxidc.com 的html就稀里哗啦地显示在屏幕上了 ~2) 嗯,要想把读过来...
  • 最近项目要用curl进行http测试,干脆就把crul的命令看了看: Usage: curl [options...] Options: (H) means HTTP/HTTPS only, (F) means FTP only --anyauth Pick "any" authentication method (H) -a, --...
  • Linux curl命令参数详解

    万次阅读 2017-02-10 14:21:39
    一、Linux curl用法举例: 1. linux curl抓取网页: 抓取百度: 1curl http://www.baidu.com如发现乱码,可以使用iconv转码: 1 curl http://iframe.ip138.com/ic.asp|iconv -...
  • Linux curl命令最全详解

    千次阅读 2019-06-04 10:53:11
    curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and ...
  • http://blog.chinaunix.net/uid-14735472-id-3404632.html ... CURL --- 命令行浏览器 这东西现在已经是苹果机上内置的命令行工具之一了,可见其魅力之一斑 1) 二话不说,先从这里开始吧!...curl h
  • Linux命令curl详解(一)

    千次阅读 2018-07-15 22:00:06
    一、curl

空空如也

1 2 3 4 5 ... 20
收藏数 70,768
精华内容 28,307
关键字:

curl