$7.49 .com domain with free InstantPage Website Builder$1.99 Web Hosting   捷飞网络官方淘宝店   Godaddy 优惠码
返回列表 发帖
分享到:




[应用&技术] 分享linux curl 命令参数详解,以及操作实例

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。/ ^0 r. X& ]4 X" F  M( _# c1 f

% S7 L/ ?0 O( l1 f5 }
7 ?3 k9 ?8 v+ o& `4 }( @3 |  d! H& `1 Q

4 W/ v" v& ?  q一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。
3 X# |1 Q' T4 F: b! T0 E1 R1 j" n2 B8 L

1 g+ g! i5 K0 L* U-a/--append 上传文件时,附加到目标文件( S8 A' R5 q6 G! {: ^
-A/--user-agent <string>  设置用户代理发送给服务器
0 a' a; d7 C- |  E: m( g. h - anyauth   可以使用“任何”身份验证方法
& @; N3 V8 P+ q0 R/ s5 g -b/--cookie <name=string/file> cookie字符串或文件读取位置
0 E( ^& c1 s' a0 m5 h) I$ u - basic 使用HTTP基本验证
5 e3 v- G4 X; `0 z! m6 D -B/--use-ascii 使用ASCII /文本传输3 ?' G# T/ _- G" x2 E3 s7 W
-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
5 H! X7 r' q% q5 O -C/--continue-at <offset>  断点续转
3 k5 F6 q3 a; c6 i+ u+ q) _ -d/--data <data>   HTTP POST方式传送数据
+ y  A4 I" u" y% I- r1 }: W --data-ascii <data>  以ascii的方式post数据
8 h  b) }5 B  K# _ --data-binary <data> 以二进制的方式post数据- N  w. A# `) M: C$ o0 ~: Z
--negotiate     使用HTTP身份验证
, }; I; e6 H6 s8 p2 J- J --digest        使用数字身份验证  h) \4 _8 d" J6 h5 q+ y
--disable-eprt  禁止使用EPRT或LPRT! |& e5 A) f1 k! N  m
--disable-epsv  禁止使用EPSV
! E  i+ U1 ^. Q  Z  L" m6 J. J -D/--dump-header <file> 把header信息写入到该文件中
7 {" p3 H2 ~) O1 ^0 o/ n --egd-file <file> 为随机数据(SSL)设置EGD socket路径9 a1 w( i7 }5 b1 H: w" P+ y
--tcp-nodelay   使用TCP_NODELAY选项. F- g  a! F" h1 ?' z. x8 e
-e/--referer 来源网址& i% E/ D" O' @- [$ _3 w
-E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
3 D5 x4 P2 s6 e! V' L$ F --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)$ D; ~  @4 w( ~! _* d
--key <key>     私钥文件名 (SSL)# S2 A% w1 q& ]3 v3 u
--key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)5 z+ H  d- X# U6 e9 Y$ s
--pass  <pass>  私钥密码 (SSL)7 M$ ^8 H6 W( }/ v& K; D
--engine <eng>  加密引擎使用 (SSL). "--engine list" for list
7 H( L' B3 J# {: F --cacert <file> CA证书 (SSL)
% h7 E* C1 F0 p+ m --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
$ R+ ~) t  }+ B, q: q --ciphers <list>  SSL密码
4 L0 N4 G& o) X4 l' i$ F --compressed    要求返回是压缩的形势 (using deflate or gzip)) y( W: r$ g: I; D8 g. Q
--connect-timeout <seconds> 设置最大请求时间: T8 T% H- e! W& [+ Y" h6 S
--create-dirs   建立本地目录的目录层次结构- L+ M* ?' f$ ~: W( S3 ~$ A
--crlf          上传是把LF转变成CRLF8 R$ A3 \# |& }) m$ ~: V
-f/--fail          连接失败时不显示http错误+ X6 O. P0 `+ u: S8 R
--ftp-create-dirs 如果远程目录不存在,创建远程目录* r2 A5 E- A0 O7 v! h, L, n
--ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
7 `$ y0 f4 p6 ^6 }, t --ftp-pasv      使用 PASV/EPSV 代替端口
. q0 I, |1 @3 V- h! C --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址5 v6 P0 C0 h5 `
--ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输
( E+ R  P. {- H: L# F6 x# k --ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输* z; Z+ f3 J3 P/ e/ l) z
-F/--form <name=content> 模拟http表单提交数据
3 N+ K$ a' H8 M& X( f -form-string <name=string> 模拟http表单提交数据( D% e  t) g- g- r6 G
-g/--globoff 禁用网址序列和范围使用{}和[]' t5 q4 \: T* L% ^3 X$ u
-G/--get 以get的方式来发送数据
6 w( }% Y! Z" Z$ ]1 R5 V5 v -h/--help 帮助
  }" v/ U" D4 z# `4 q& K- }% o -H/--header <line>自定义头信息传递给服务器2 W: U, l) D8 D9 A
--ignore-content-length  忽略的HTTP头信息的长度. M/ G2 t8 P, A
-i/--include 输出时包括protocol头信息/ ?5 e" e% w. g! N' d, b3 F
-I/--head  只显示文档信息
+ ]5 e8 i5 _- E3 r9 Z- [1 V( ?. ^0 c" W 从文件中读取-j/--junk-session-cookies忽略会话Cookie
1 A1 F# `" I/ x& t4 e - 界面<interface>指定网络接口/地址使用3 {% |+ }) ?3 G' I
- krb4 <级别>启用与指定的安全级别krb4  s& t# E. p- ~) x/ B
-j/--junk-session-cookies 读取文件进忽略session cookie  t9 [) Y0 `# i* X
--interface <interface> 使用指定网络接口/地址; v4 k% A6 B0 n' m5 P- M- m: |
--krb4 <level>  使用指定安全级别的krb4; V! c) x- J! C
-k/--insecure 允许不使用证书到SSL站点# k* V6 N2 a) s
-K/--config  指定的配置文件读取
# N+ n- _- N* j6 i$ z -l/--list-only 列出ftp目录下的文件名称: K! A0 p& _4 l! g$ k' L
--limit-rate <rate> 设置传输速度9 {6 q& M) T5 I0 w/ w$ [2 h
--local-port<NUM> 强制使用本地端口号
) b1 _& s( \: x1 R+ o8 m -m/--max-time <seconds> 设置最大传输时间4 K  O+ O; W( x
--max-redirs <num> 设置最大读取的目录数, Z9 ^( {3 \2 j1 C
--max-filesize <bytes> 设置最大下载的文件总量
) t7 [  B) o8 s -M/--manual  显示全手动9 u' r% u% H6 v- n2 S: b. E
-n/--netrc 从netrc文件中读取用户名和密码5 B  b# u* ~0 |2 [
--netrc-optional 使用 .netrc 或者 URL来覆盖-n  V6 O. U" ]) k
--ntlm          使用 HTTP NTLM 身份验证7 A) o5 ]7 q+ X" }& {1 d& D. p$ F
-N/--no-buffer 禁用缓冲输出
+ N; O* T5 Z) y! {% N; z -o/--output 把输出写到该文件中* i8 Z& z, {* O: O: k: g' H
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名
7 O: q" T! e& t9 A2 v -p/--proxytunnel   使用HTTP代理
* L' x# Y! b# e" @5 r3 r) T --proxy-anyauth 选择任一代理身份验证方法
6 K) L: a$ @: u4 g" k --proxy-basic   在代理上使用基本身份验证
8 v4 `3 R- |' e) x1 L, f; M7 ^2 Z --proxy-digest  在代理上使用数字身份验证
, |5 ?+ [! D5 ~+ [6 `5 I --proxy-ntlm    在代理上使用ntlm身份验证) T* e9 U$ a9 a# a- f" g* v) F
-P/--ftp-port <address> 使用端口地址,而不是使用PASV3 \+ p5 x4 {0 n" b. p* Z4 |$ I
-Q/--quote <cmd>文件传输前,发送命令到服务器+ o' M# ^7 ]; E, u0 ]; S/ |
-r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围
3 s7 e. w3 P7 z6 Q --range-file 读取(SSL)的随机文件
# d# N2 K! f0 Q* R; Z$ f -R/--remote-time   在本地生成文件时,保留远程文件时间
; X0 c; B0 ~4 Q' A --retry <num>   传输出现问题时,重试的次数4 t  p! K( o3 q1 I" C6 n
--retry-delay <seconds>  传输出现问题时,设置重试间隔时间: C& I( G  _# M7 a1 }& e7 R- N
--retry-max-time <seconds> 传输出现问题时,设置最大重试时间
, z- ]; S) H9 m( ^( d+ p  f -s/--silent静音模式。不输出任何东西
' f# y. v" l& |9 O- {/ ?3 ? -S/--show-error   显示错误
0 D; \* a1 j  k2 c/ m# K --socks4 <host[:port]> 用socks4代理给定主机和端口
8 u4 L; o' S8 b8 K8 ~2 R$ d3 C --socks5 <host[:port]> 用socks5代理给定主机和端口' E- ?( v/ u" D# {$ w& R; M
--stderr <file>
$ k2 H6 W6 h% v; Q -t/--telnet-option <OPT=val> Telnet选项设置, |2 b7 P. c+ `4 d5 j, ?
--trace <file>  对指定文件进行debug
7 [: c) z- }5 q7 F* D- u6 D --trace-ascii <file> Like --跟踪但没有hex输出
6 x) W6 p) {+ V  z! @ --trace-time    跟踪/详细输出时,添加时间戳; b( c4 X4 ?' C) B- p
-T/--upload-file <file> 上传文件( ^. ~5 j$ M3 X1 n. h
--url <URL>     Spet URL to work with
/ O& o8 w% x. T -u/--user <user[:password]>设置服务器的用户和密码- L* \  J5 k. d' k- B3 X1 M
-U/--proxy-user <user[:password]>设置代理用户名和密码1 }8 |5 e$ }" }& H
-v/--verbose' ~2 ?; R0 l9 G2 B- F0 H  [
-V/--version 显示版本信息+ A$ m  n& r8 V  M7 u4 k
-w/--write-out [format]什么输出完成后: R; \; E! C4 X
-x/--proxy <host[:port]>在给定的端口上使用HTTP代理$ ~/ n) M" V1 y  b/ V' n
-X/--request <command>指定什么命令
# X, v. ]  O. N- r) | -y/--speed-time 放弃限速所要的时间。默认为30* ]6 y, w) y4 ]8 M7 e
-Y/--speed-limit 停止传输速度的限制,速度时间'秒
% ^5 m. C* U: o* C  `% r -z/--time-cond  传送时间设置  i0 k1 c$ w, y9 R
-0/--http1.0  使用HTTP 1.08 |& Y4 d4 r2 J) @: ^5 ?
-1/--tlsv1  使用TLSv1(SSL)8 v4 ?8 @" l' ^  `1 N8 p
-2/--sslv2 使用SSLv2的(SSL)
" ?" u5 Q& _" b: p2 I# Z* W2 g -3/--sslv3         使用的SSLv3(SSL)- I" J$ i( r8 ~* k" Z7 E- P
--3p-quote      like -Q for the source URL for 3rd party transfer
5 \) U% x! U$ `0 ^6 Z --3p-url        使用url,进行第三方传送2 L! P* {" L+ m1 n
--3p-user       使用用户名和密码,进行第三方传送
& u; u/ y5 a7 L! [ -4/--ipv4   使用IP4! V( k+ l4 z2 A! b4 u+ v# p/ ^
-6/--ipv6   使用IP6
$ I: U& r7 p. @4 e -#/--progress-bar 用进度条显示当前的传送状态+ g1 h& h* ?5 M. H7 t+ v- L
二,常用curl实例
0 _% o# `5 b- u* Z! G/ x
3 v* |+ c" B8 O. P  ^- i+ b* X5 `: D/ B+ n
1,抓取页面内容到一个文件中
( d$ E4 E( G( D  F# V$ B' |% G# R8 ~+ h5 Q

- N6 y5 d9 I4 Q2 x/ z[root@krlcgcms01 mytest]# curl -o home.html  http://www.codesky.net
4 [& Z& T  c- G! H2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西
! I+ @* U& O% d: F; {- T! D/ o4 i+ m6 P0 V9 R, I. M

* G9 P0 }& s, i( S[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
" o$ y  V1 C8 k7 x/ h[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/[0-9][0-9]/aaaaa.jpg2 y4 r. y8 \3 P( Z- W
3,模拟表单信息,模拟登录,保存cookie信息1 O! o6 g5 ^& f& ]; X+ ]9 m

  B+ N$ F, o  ]
: T- q0 c2 M/ d* Q# R[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
# n3 z$ m) c4 U! V  o5 P) M+ t4,模拟表单信息,模拟登录,保存头信息; D( p+ w" C1 n8 j1 P- b

/ _# |' k! K6 w4 C  K, S7 ]- \* a9 s3 D/ G
[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
2 Q+ Q4 k3 i9 b; {-c(小写)产生的cookie和-D里面的cookie是不一样的。* X6 u. k  D3 o1 z

6 G! W' M( L! U6 C* m8 A/ c1 Z5 m' b
5,使用cookie文件
  R1 w7 _3 Q5 `' ~- a4 T' V, q' G" z3 p6 M7 y2 Z4 l
+ A0 }5 s) _' w8 ^7 a% Z' x9 z
[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://www.codesky.net/wp-admin4 J; X- b) k0 J
6,断点续传,-C(大写的). b0 {. _2 L+ Z- b7 h( M

" ?/ p; P: [& S+ u) o0 a
" i- o' w! Z0 w( l0 c' F5 [[root@krlcgcms01 mytest]# curl -C -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg# j, g! w' f( R& s' @5 x& z
7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功0 ?& S# w( b$ d

/ n& s4 |7 z( M. \3 d4 P- Z/ z  b  ?8 }7 z
[root@krlcgcms01 mytest]# curl -d log=aaaa  http://www.codesky.net/wp-login.php) i; z, q5 g: t* S: o, x
8,显示抓取错误,下面这个例子,很清楚的表明了。  c* W1 s$ E9 s- M- G

. K9 i# Z: R" V7 o. `8 y) [/ y, ~: u0 U' ~+ A5 i/ ~; O
[root@krlcgcms01 mytest]# curl -f http://www.codesky.net/asdf
7 t" R+ h/ K) P! V0 Gcurl: (22) The requested URL returned error: 404
( W/ V4 B+ J! c$ {$ F3 |" w# k[root@krlcgcms01 mytest]# curl http://www.codesky.net/asdf
* g& e; x, b/ \* M<HTML><HEAD><TITLE>404,not found</TITLE>, r4 ?4 o. [  H' d5 g/ `
。。。。。。。。。。。。
2 M- _( [) U+ k. D. [6 v- I& S9,伪造来源地址,有的网站会判断,请求来源地址。
7 ~7 {1 j9 _6 f! S2 ]6 {; @
' r* {1 D( p- b7 ?) M! b1 h! J
- B2 l# @# E( X; d/ X[root@krlcgcms01 mytest]# curl -e http://localhost http://www.codesky.net/wp-login.php# @0 F  a, N/ S) X
10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理; {; T, N& s& H; T
$ c; X3 H1 V! J
0 }4 W1 b* ^/ Z* [- l- x6 s6 o, Y  a
[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://www.codesky.net% f6 m" J( g8 w7 L0 @: Z; v  G
11,比较大的东西,我们可以分段下载
/ y% T+ }& t2 K  D* Y0 F3 P
( |; i$ d" q" v- B# j* j# P7 T8 q3 U  ^8 V; e
[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://www.codesky.net/wp-. Q+ i9 [9 S4 h4 e4 p
content/uploads/2010/09/compare_varnish.jpg# m2 z- r+ N7 K# `* I  l" E, j
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
$ `7 R) o; {' V* X/ d( t Dload  Upload   Total   Spent    Left  Speed- |& `' F' ?) z$ J) {, R
100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     03 A6 T2 y7 D7 s( j% d6 I* q
[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://www.codesky.net/wp-
6 U' L/ ?" {6 {  |! u2 wcontent/uploads/2010/09/compare_varnish.jpg3 B) R  l" F" i) C8 h2 \7 ]7 j/ f: T
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
! v0 n9 ^; U$ r# z* C& ^ Dload  Upload   Total   Spent    Left  Speed
2 Z* w7 @" P% L$ l' X100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0
3 C; g, G  {" y% m% X! Q# j  ~[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://www.codesky.net/wp-9 g- ]' A9 c) s9 z
content/uploads/2010/09/compare_varnish.jpg
0 a) H$ e& @0 T  y$ { % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
* C+ A( g) H. b# c! D Dload  Upload   Total   Spent    Left  Speed
4 \* T, `- i' h0 R& J100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
$ H& X' j% T$ L[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh
. ~8 `2 D& |: R5 Z6 i7 K; Q1 k0 B4.0K    one.part1% x4 o  a% U4 L. {
112K    three.part3$ V4 o: s, A( Y- ~: ~
4.0K    two.part2& ^% t* s  Z7 o* i( X
用的时候,把他们cat一下就OK了,cat img.part* >img.jpg
0 T) Z$ q; k* ]7 m+ y& n
! O: p7 q  E4 N6 r5 H8 M- e6 k7 D* Y, R2 q/ n9 f6 g. p, d
12,不会显示下载进度信息
1 X/ _9 K/ L: t: a) w" r  o( _' i- V, l/ Z6 S+ V

' Y8 U9 O: v6 Z  k[root@krlcgcms01 mytest]# curl -s -o aaa.jpg  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
4 i+ X8 Y5 K6 ]( S3 V8 X13,显示下载进度条) m, a) W  t; X# d
7 e1 b  r) C5 ]% L7 Y
) E2 o- f+ h" W* a; W& g
[root@krlcgcms01 mytest]# curl -# -O  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
; ], X$ u. g2 U$ J- B  D######################################################################## 100.0%
$ h6 l: Q# I- x14,通过ftp下载文件8 N7 P# V( h  p# i& k

( _4 e/ K' t- T" W) u9 b* W
1 K9 ]0 g) s" W; F7 @[zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://www.codesky.net/demo/curtain/bbstudy_files/style.css. `1 h) Y1 x, J
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current! n5 J: d- L  O/ V# @
Dload  Upload   Total   Spent    Left  Speed0 B2 D+ m- `0 X) R& r! o! n9 ?
101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
1 \9 G" c, ~- D! i# K  e或者用下面的方式7 }" m9 J1 @2 }0 [! L
[zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css
! d, w8 @5 W, X, s4 \% a, [3 n15,通过ftp上传3 J  Y- L  \* z4 E5 c+ q1 \) f
" L0 j/ g6 G) {/ z

9 Z! d% q4 ]0 t. c[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/3 {/ a$ W5 @( K  s' o0 S5 z
参考:http://www.codesky.net/article/201010/170043.html

美国VPS、域名代购:http://tu8l.taobao.com

返回列表
Namecheap
Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting
互联网安全