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




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

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。. q! n$ i0 ~9 \' T- `. n" o( z
' z6 M8 v- u# X
( O" F0 ]: }2 A& R
& l0 x* h4 X# Y  b

! J+ @  I% `( p! i8 |& Y一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。% i# H2 i* C1 B  w

" c9 {$ I4 @! B- }2 T7 q
: l0 o7 u( T/ T6 g: d-a/--append 上传文件时,附加到目标文件1 z' Z. U2 @+ T$ W8 M4 O
-A/--user-agent <string>  设置用户代理发送给服务器
7 j! v4 L( Z2 N! I" X& ^4 {1 L( s - anyauth   可以使用“任何”身份验证方法
) V3 v' Q- c/ H+ b0 h3 J -b/--cookie <name=string/file> cookie字符串或文件读取位置$ B# K7 n8 d- p- s9 I$ K6 f
- basic 使用HTTP基本验证
2 X" u. c% J# R -B/--use-ascii 使用ASCII /文本传输' U1 h6 l; s# Q# G) w  s
-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中' s* z8 D5 T( p' D2 b: M  g" g# ?
-C/--continue-at <offset>  断点续转
0 o7 w! M+ m4 D2 z -d/--data <data>   HTTP POST方式传送数据) W. y. [7 ], o' [, F! w; R) m/ A
--data-ascii <data>  以ascii的方式post数据
! t* j0 X" X! o9 y/ ^ --data-binary <data> 以二进制的方式post数据2 z2 U; C- U$ b. I5 S9 r) f. f
--negotiate     使用HTTP身份验证9 l1 w9 o# S5 N4 R! x* j
--digest        使用数字身份验证7 m  [$ u" E3 ]5 O5 }
--disable-eprt  禁止使用EPRT或LPRT
4 G+ z  W7 I- W --disable-epsv  禁止使用EPSV
: B4 \4 J8 e6 |7 Y -D/--dump-header <file> 把header信息写入到该文件中5 d6 l2 m/ c# g8 G. v
--egd-file <file> 为随机数据(SSL)设置EGD socket路径
4 Y- l1 {& ~  c6 h8 z2 {, \4 D --tcp-nodelay   使用TCP_NODELAY选项1 r. T/ I( R6 i  H9 @0 u
-e/--referer 来源网址
* i6 k7 L- F. }1 |( w) [ -E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)' x0 N2 }; Q2 v2 N8 @0 j& m- ~3 k3 l
--cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)
4 M9 T' t9 v, A' U: u8 D1 } --key <key>     私钥文件名 (SSL)
1 Q( u9 P9 U7 x5 v# g --key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)# {6 d4 M: A0 W/ p/ A
--pass  <pass>  私钥密码 (SSL)4 ^1 Z$ o1 L4 Y) D! m3 T6 L
--engine <eng>  加密引擎使用 (SSL). "--engine list" for list
' L- q3 ]- v7 n9 |/ ^' h --cacert <file> CA证书 (SSL)
" ?0 z+ I. Q- J! g --capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)
6 ^' C% a1 M/ X2 j9 o$ P( T --ciphers <list>  SSL密码
0 `, Q4 h7 ^! M1 G% s  R: T2 H --compressed    要求返回是压缩的形势 (using deflate or gzip)
1 R) h( H* S& [, F --connect-timeout <seconds> 设置最大请求时间
. [. ~1 Z# @# g' H$ ]( n' a, M --create-dirs   建立本地目录的目录层次结构
+ O& k% O! [; a$ }% E# v --crlf          上传是把LF转变成CRLF
. |$ e- f3 B/ Z0 E -f/--fail          连接失败时不显示http错误
6 B+ O+ a3 m8 t( _ --ftp-create-dirs 如果远程目录不存在,创建远程目录; t1 G7 T( M3 [1 a) }. R" O9 L
--ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
" g2 Q+ u% }. n( f+ _7 R --ftp-pasv      使用 PASV/EPSV 代替端口
8 i5 ^! ?. n: V0 q; L+ | --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
6 |- [; U# d5 u: [ --ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输
/ \+ G" p' W# K5 `8 \6 G! k! Y --ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输3 Q! O4 o: L, F8 ?1 H4 I# W
-F/--form <name=content> 模拟http表单提交数据( J4 Q$ H* r, \7 ^3 C9 V' L, P
-form-string <name=string> 模拟http表单提交数据
% }4 y' R) r) X -g/--globoff 禁用网址序列和范围使用{}和[], d2 ?7 u$ f: B- Q
-G/--get 以get的方式来发送数据
: `; b+ a7 ]: t6 @: v -h/--help 帮助
9 v5 \3 G1 z( R/ p/ q) c7 K! ~ -H/--header <line>自定义头信息传递给服务器
9 |. G/ T- H% K& e7 S! x8 t --ignore-content-length  忽略的HTTP头信息的长度$ M5 i! y# K1 a/ |0 j, b- \3 W
-i/--include 输出时包括protocol头信息# \& o. `$ f0 s, V) x5 ?% y
-I/--head  只显示文档信息0 W( C  ~3 q3 w2 J6 e) Y
从文件中读取-j/--junk-session-cookies忽略会话Cookie
9 K7 l1 I7 U. ~: D* L5 n - 界面<interface>指定网络接口/地址使用* m9 L5 c: n' u& B0 Q
- krb4 <级别>启用与指定的安全级别krb4- O* {2 n( }5 B' q; r
-j/--junk-session-cookies 读取文件进忽略session cookie% r) |4 _- R7 g
--interface <interface> 使用指定网络接口/地址
, i; A4 Z- P0 I9 x" T --krb4 <level>  使用指定安全级别的krb4
% b- w* ~& c# l7 Y9 Q6 ~3 @ -k/--insecure 允许不使用证书到SSL站点
% e* F9 n" ]; D2 Q8 o+ `3 @ -K/--config  指定的配置文件读取
$ R7 V' q' r& J6 t5 G# S -l/--list-only 列出ftp目录下的文件名称& {# k' v- ]5 R1 l/ {# }( `1 {* s
--limit-rate <rate> 设置传输速度1 e6 W" Z* t; n6 w, t
--local-port<NUM> 强制使用本地端口号: k6 W. G) W) [
-m/--max-time <seconds> 设置最大传输时间
( G* Q$ }$ Y/ c/ n% J9 K: p8 N --max-redirs <num> 设置最大读取的目录数" O, w; [9 R7 v, Q
--max-filesize <bytes> 设置最大下载的文件总量' Y5 r- F9 k+ X7 D) p3 G- t
-M/--manual  显示全手动
, p3 X5 u  B( I  i' e, W. m* N -n/--netrc 从netrc文件中读取用户名和密码
3 w9 j; b: F6 v$ _; [, O+ N --netrc-optional 使用 .netrc 或者 URL来覆盖-n+ @3 r; F9 {2 Z8 M6 }
--ntlm          使用 HTTP NTLM 身份验证
1 ^. d* V! G# y* P; Z -N/--no-buffer 禁用缓冲输出
. ~' W2 e3 ]3 C* Y7 U2 V- v  q -o/--output 把输出写到该文件中4 b9 U) M' _1 i' |' O/ e+ y
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名9 J+ Y! w! T( |
-p/--proxytunnel   使用HTTP代理
# |6 h* s1 ^- b' X3 G7 G/ ^' s --proxy-anyauth 选择任一代理身份验证方法
! E# z& }+ ]% |* }- X --proxy-basic   在代理上使用基本身份验证* d% [& B) c5 L1 d+ ?6 P
--proxy-digest  在代理上使用数字身份验证+ h8 f5 W8 ?+ k3 O! M3 V
--proxy-ntlm    在代理上使用ntlm身份验证' f; m, _+ \5 S. q
-P/--ftp-port <address> 使用端口地址,而不是使用PASV* \$ L& n0 Q, Y
-Q/--quote <cmd>文件传输前,发送命令到服务器
( q& E5 \# }# b+ r -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围/ }1 x" o& T" @+ o; Y8 c3 s6 p
--range-file 读取(SSL)的随机文件
- q9 p* {3 ~- ?+ M& p7 O  u -R/--remote-time   在本地生成文件时,保留远程文件时间; L+ K# E& U: ]4 w1 t; M' ?
--retry <num>   传输出现问题时,重试的次数
: u; t5 A' ^2 O/ S: ?  r --retry-delay <seconds>  传输出现问题时,设置重试间隔时间
; j* U4 j2 y  g --retry-max-time <seconds> 传输出现问题时,设置最大重试时间# L' V# C5 [/ p; ?( a& v1 }
-s/--silent静音模式。不输出任何东西
$ l* g. j% a6 s -S/--show-error   显示错误8 d' d2 r, f4 B% \
--socks4 <host[:port]> 用socks4代理给定主机和端口' k0 a& E7 K7 p( v/ A
--socks5 <host[:port]> 用socks5代理给定主机和端口  O8 `' i" |9 [* N
--stderr <file>: N" E9 C) o. N# K0 l
-t/--telnet-option <OPT=val> Telnet选项设置
- c! k3 c) R" Z, e+ W" k; f --trace <file>  对指定文件进行debug( N* B4 J6 n% s) T" n
--trace-ascii <file> Like --跟踪但没有hex输出# l/ R4 I* S% v; p% g
--trace-time    跟踪/详细输出时,添加时间戳
+ \) i& b6 o. b8 q$ c2 M -T/--upload-file <file> 上传文件
  m1 d5 g9 O& x. J9 g --url <URL>     Spet URL to work with
) R- V5 \& Q8 F7 U; d3 H -u/--user <user[:password]>设置服务器的用户和密码" Y: D# C1 b6 K- {7 x9 N
-U/--proxy-user <user[:password]>设置代理用户名和密码- w9 O) ?6 K  \3 q9 e
-v/--verbose
( a! }* W9 f2 X% P( n -V/--version 显示版本信息
( @- Q7 M$ f5 o2 s, I. t -w/--write-out [format]什么输出完成后
8 g" O( z. r3 Z8 ? -x/--proxy <host[:port]>在给定的端口上使用HTTP代理
4 b. L7 j- E& C. D9 e( W1 r. ] -X/--request <command>指定什么命令# L( T2 i4 W* }7 U8 }$ G; C
-y/--speed-time 放弃限速所要的时间。默认为30
# ~* I( _' |) f' ^ -Y/--speed-limit 停止传输速度的限制,速度时间'秒
) }# K6 U4 r3 t/ ]2 |2 @ -z/--time-cond  传送时间设置& l8 U- k9 E. C" ?4 R
-0/--http1.0  使用HTTP 1.01 {, |; r+ l8 U( m- @' `0 a5 Q
-1/--tlsv1  使用TLSv1(SSL)3 p  `4 \) t1 K# C
-2/--sslv2 使用SSLv2的(SSL)' e* }3 \) O# H7 y) |
-3/--sslv3         使用的SSLv3(SSL)
! c" e' k2 w1 Y: m6 O* n  F --3p-quote      like -Q for the source URL for 3rd party transfer- B5 C, T4 }5 o( F  u2 g# a+ {# i
--3p-url        使用url,进行第三方传送2 ?1 c; C) V' j9 A
--3p-user       使用用户名和密码,进行第三方传送
/ D4 _9 N9 r! ?9 b -4/--ipv4   使用IP4
$ H8 U" Z: m  z& F: H9 e% N -6/--ipv6   使用IP63 Q( {# q; `/ |: b$ v8 r
-#/--progress-bar 用进度条显示当前的传送状态$ A3 Q7 s# M: k2 ^, X" e1 u
二,常用curl实例
+ O* ~2 m1 a% U' f3 I- N( n5 i; S: `/ E! p

  ?) I- }% U4 X1,抓取页面内容到一个文件中  j! I/ @6 Z9 N. Z( g

. ~! P4 q0 N! U4 V, G
0 O1 }, T! F8 C' \[root@krlcgcms01 mytest]# curl -o home.html  http://www.codesky.net
4 i2 }2 o6 u+ Z7 C2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西+ @" j7 N- S- j5 p* p! m3 S

4 u  r3 p0 H+ M0 ]  P. Y, O0 I4 L6 a" y8 D* |1 G
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg$ J/ f) G5 b6 E9 U" \
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/[0-9][0-9]/aaaaa.jpg
$ t- q3 n; R6 V$ w; H4 z/ i3,模拟表单信息,模拟登录,保存cookie信息
- {% v6 `4 O; [+ X# a6 a8 u
+ y0 x1 |$ ~6 |( u. e6 c( \" A& _1 y! [
1 u1 Q  M# Y/ x7 H0 ]) Z[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php. w# h* B$ t. b/ u9 W1 D  V
4,模拟表单信息,模拟登录,保存头信息
# a* L% J7 p# s5 \
( V( }  V6 S" A
7 x! i# t4 m* L/ \  r9 S[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
: {/ N5 @/ @: i3 N; f-c(小写)产生的cookie和-D里面的cookie是不一样的。$ r  j% [' _% m" S5 \9 U

) s( r9 ]6 y2 z0 G/ I4 k  D. E' S4 G7 x
5,使用cookie文件
+ N% V% U! T% J# W* x3 J0 Y0 @# e$ W- G
3 F6 O- V/ P$ ]% R; E
[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://www.codesky.net/wp-admin6 S; y5 r+ n* m/ v; d9 L
6,断点续传,-C(大写的)/ S- ^- ^  Z, [7 ^0 W& x8 I& O/ b
  j/ K% V2 n7 [7 B+ R, B3 T; g
! z: \& {9 \( T6 n) B6 h5 i
[root@krlcgcms01 mytest]# curl -C -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg1 m3 M% k( Y& {7 |' {; w6 t. q9 }
7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功7 N, G- z5 O5 Z" Y

" x3 m" Z6 B( L% M2 ^! ]  r! ]
% a5 Y# N3 _% \- I, c4 A1 ]1 \+ V[root@krlcgcms01 mytest]# curl -d log=aaaa  http://www.codesky.net/wp-login.php
# i/ u. w" l  G+ _8,显示抓取错误,下面这个例子,很清楚的表明了。/ C7 ~: l( O# q4 n

$ Y. p8 e( X0 B! O) ^) z8 m# D# @; D8 w* u& x
[root@krlcgcms01 mytest]# curl -f http://www.codesky.net/asdf
+ x$ G$ o( u" Ncurl: (22) The requested URL returned error: 404, }$ t. e* c' I9 \
[root@krlcgcms01 mytest]# curl http://www.codesky.net/asdf
4 P( O1 m4 U3 B<HTML><HEAD><TITLE>404,not found</TITLE>) v" w* C  x2 P1 W7 Y4 |
。。。。。。。。。。。。
$ m4 f, e1 s9 v; d7 Y2 \9,伪造来源地址,有的网站会判断,请求来源地址。
# F  O3 R, a) Y" _. F# Z$ g; q/ {1 Q' ]. |
0 M% V- d8 [; D7 I- W
[root@krlcgcms01 mytest]# curl -e http://localhost http://www.codesky.net/wp-login.php
0 u1 ]9 L0 ~6 I1 V10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理( W. c& {; s; o3 t; w; m2 p; q

" V) O' g% h9 f$ r, `4 ~4 U$ T# C; X# S. R
[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://www.codesky.net
& A# [' ~) ]; i11,比较大的东西,我们可以分段下载, t4 x! M, Q) t* r" A3 v0 p
5 h5 q9 R  `8 r5 z( O( ~% \/ T
' ~: T! V7 m$ S1 N. ?7 w
[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://www.codesky.net/wp-
5 B8 V- K' z! L* l' \content/uploads/2010/09/compare_varnish.jpg
% V5 ^7 N! C) p2 k" e % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current& c1 ?1 ], d$ b3 ~
Dload  Upload   Total   Spent    Left  Speed% b3 _0 C2 Z; u( n, |7 G
100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0
  S9 r6 `, t0 d8 V7 _[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://www.codesky.net/wp-! }( u+ e/ ^0 q6 H+ J+ j
content/uploads/2010/09/compare_varnish.jpg
6 U  M3 x- `! z7 K- h9 I % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current) e1 W8 [# Y1 c3 m& i
Dload  Upload   Total   Spent    Left  Speed0 a1 S. x" L& g6 R. u
100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0
7 x0 M* u' B+ s[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://www.codesky.net/wp-  D+ L( p9 G" b9 o$ E7 a- I
content/uploads/2010/09/compare_varnish.jpg3 \; N" Y" h! o6 P: K
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current& O7 t& K. u; p- o' s. w
Dload  Upload   Total   Spent    Left  Speed
* h3 E$ R# h! @3 x8 [100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
  f5 u% Y" R% g$ _[root@krlcgcms01 mytest]# ls |grep part | xargs du -sh: t* r; J, O; n3 h6 c  j, F
4.0K    one.part1
$ J  j0 ^/ K1 b& B+ n" v112K    three.part3
: U; F: _  {; I* c* ^4.0K    two.part2
7 f  d8 E8 Q" R! u; F用的时候,把他们cat一下就OK了,cat img.part* >img.jpg
6 R$ U9 C# C0 W8 B) {, H- y' s- ^( A/ X) o; i9 y
) F, X& Q' i. q& E$ j/ P$ u
12,不会显示下载进度信息! S1 Q5 O+ H# Y) n4 M& |8 T# i1 G
; d5 [. C' M, M. Y# O" ?( x
+ g4 F/ k; s% ~6 o  Y
[root@krlcgcms01 mytest]# curl -s -o aaa.jpg  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg, B0 X9 v! b8 g0 Q0 `+ x, y
13,显示下载进度条' j, ~+ B7 Y5 [  y( Y

& C3 t* t: c2 q5 \. L, H) P5 Q0 d, E6 D$ V9 J; R0 Q3 p
[root@krlcgcms01 mytest]# curl -# -O  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg* |4 ^, p) G% r3 ?5 o( \! q
######################################################################## 100.0%
1 j+ S, `& g3 s8 E) m' P14,通过ftp下载文件
$ O. U% l  Q( }3 A1 p4 X
0 V8 x. h( N0 w$ z8 O
! Z) e+ M- T% d0 m* d[zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://www.codesky.net/demo/curtain/bbstudy_files/style.css. s4 `) V" r- G" ~3 t
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current$ P: `  b$ n, X6 `2 a( z1 e
Dload  Upload   Total   Spent    Left  Speed. L: ?" m- N& d! x" N* v# S
101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136; n, T4 l( f# {0 j, \
或者用下面的方式
: P/ [5 f4 X* n* n[zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css. r9 A6 e% h6 X9 y* t  q
15,通过ftp上传" D" R& q! d( j4 U; z1 ~7 ~
' f$ L; z; R- A1 Q: f
7 {; E6 l% W' }& ^' f) z0 h- {
[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/$ m1 `; ]3 x( P7 i5 _% C9 ^3 G: |5 _
参考: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
互联网安全