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




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

linux curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。
# Z7 M. c& y5 ^& ~
8 I" g$ t5 W0 f! M' }3 ~9 O3 q$ Q5 D

  D3 F$ X( S. |- A6 V* m' C8 d2 [8 e0 K* [! H; f: f
一,curl命令参数,有好多我没有用过,也不知道翻译的对不对,如果有误的地方,还请指正。6 g5 ~) B0 F" W; z5 ?/ |* J
6 @) N/ m# B/ d' H/ U4 n: g
5 w+ H3 {1 X; {' D) f, P
-a/--append 上传文件时,附加到目标文件2 y( Y+ t: Y) c5 Q* G
-A/--user-agent <string>  设置用户代理发送给服务器
! [( v0 s' D9 a+ F$ ?1 X0 d - anyauth   可以使用“任何”身份验证方法
# ~0 x$ J" O/ `- } -b/--cookie <name=string/file> cookie字符串或文件读取位置  j( ^$ s% d+ b
- basic 使用HTTP基本验证8 S" Z& \* M0 y: B& G) K' K
-B/--use-ascii 使用ASCII /文本传输
# a0 n" z5 d# x* I4 A9 E/ y8 m -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中% h! l! d) p) E
-C/--continue-at <offset>  断点续转/ p8 l7 ]( W" W4 a. n( l+ [* I
-d/--data <data>   HTTP POST方式传送数据
, r' G/ Z' l7 _6 O7 I/ t --data-ascii <data>  以ascii的方式post数据( s8 W! ?) A7 Y- A+ l& Y5 E
--data-binary <data> 以二进制的方式post数据
3 M" v4 b. O2 O, P6 Y- H1 u2 F --negotiate     使用HTTP身份验证0 i, a9 A& |/ T2 [
--digest        使用数字身份验证9 F# f3 e9 Z* V; p% n( L& l2 }
--disable-eprt  禁止使用EPRT或LPRT9 d: M% O0 H& V9 f0 `" U- R
--disable-epsv  禁止使用EPSV
3 H" s* |2 @0 Z" l: q% U -D/--dump-header <file> 把header信息写入到该文件中, S- Q# U: K$ X
--egd-file <file> 为随机数据(SSL)设置EGD socket路径! E3 ~- @, w) F" C, j( [2 T
--tcp-nodelay   使用TCP_NODELAY选项
! D4 J1 J9 R' X9 t2 v2 T -e/--referer 来源网址$ p: N# q2 T3 x1 L4 M
-E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)
& z. g/ F% c; A9 z; J6 g9 P+ @% x: A --cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)( W( W) y! G8 r. q5 Z. c$ i, h
--key <key>     私钥文件名 (SSL)
2 H! }4 S/ ]9 i --key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)
$ d  [6 X2 X- T; K --pass  <pass>  私钥密码 (SSL)
- F3 v' y- E# }. B" S2 p# {3 @ --engine <eng>  加密引擎使用 (SSL). "--engine list" for list
# J; T( e# f: a. `6 [6 @. f --cacert <file> CA证书 (SSL)) L) r/ _7 P, J% r: w( `/ W. G& i
--capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)2 u  [! p  y7 Z1 i& o6 O
--ciphers <list>  SSL密码
7 t+ j( O' l) R$ }! ? --compressed    要求返回是压缩的形势 (using deflate or gzip)2 B" v+ O0 \  h5 x) @. i' [; N* v
--connect-timeout <seconds> 设置最大请求时间& ?/ u9 a9 ~% ~( v' A; ]* m
--create-dirs   建立本地目录的目录层次结构5 p0 e2 S; L5 G! F% M+ a
--crlf          上传是把LF转变成CRLF8 Q: v' G0 C. ^4 ]$ x0 R/ Q
-f/--fail          连接失败时不显示http错误# C. _) U& l3 N5 u3 }: [1 l
--ftp-create-dirs 如果远程目录不存在,创建远程目录" u( H7 m+ r/ C
--ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用5 O$ |8 j- A8 X) @- f% `4 _" `. V3 E
--ftp-pasv      使用 PASV/EPSV 代替端口
2 |( v+ i9 ~. v% u: K --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址* Y; _: N9 q( G6 i
--ftp-ssl       尝试用 SSL/TLS 来进行ftp数据传输
* R; t- b7 ~  n. V% l. ^4 J --ftp-ssl-reqd  要求用 SSL/TLS 来进行ftp数据传输
$ S3 L* T* B( m( ]* A -F/--form <name=content> 模拟http表单提交数据
7 ~5 u# Z4 B- n5 G0 P -form-string <name=string> 模拟http表单提交数据
5 m# f% C1 a7 F+ J% r; v -g/--globoff 禁用网址序列和范围使用{}和[]
1 E2 G2 H3 \# z -G/--get 以get的方式来发送数据
: w/ X8 I5 w8 |. [ -h/--help 帮助
4 L: H. F1 }8 J7 s& G$ ?0 o -H/--header <line>自定义头信息传递给服务器* q' [, k; M/ s. `0 ~* I& w6 r
--ignore-content-length  忽略的HTTP头信息的长度) n3 h- b& N( B2 W7 I
-i/--include 输出时包括protocol头信息
+ M" F+ j; m" N, }0 [ -I/--head  只显示文档信息* v- ?* ~' U9 c; Z0 @
从文件中读取-j/--junk-session-cookies忽略会话Cookie1 n0 `2 ?7 |) m3 G! [  S% N
- 界面<interface>指定网络接口/地址使用
- V# |# @3 B, S/ V/ b, y  V - krb4 <级别>启用与指定的安全级别krb4
. p5 U3 d6 }7 z) l- Z% s -j/--junk-session-cookies 读取文件进忽略session cookie* O2 {& J* C- z  h
--interface <interface> 使用指定网络接口/地址! ?: P( U( B: L0 z+ P# ?
--krb4 <level>  使用指定安全级别的krb4
$ n# B. a$ Y' |% W4 a* Z+ t6 | -k/--insecure 允许不使用证书到SSL站点/ q( v- L& H; A9 S  C
-K/--config  指定的配置文件读取3 q8 O+ T  H& F$ d; J3 |. u) \) X4 y
-l/--list-only 列出ftp目录下的文件名称
4 z2 e5 `) |9 v9 V8 ~7 A0 v --limit-rate <rate> 设置传输速度2 H. H# Y' G( p+ {/ s
--local-port<NUM> 强制使用本地端口号
, S& ~+ ^; k- u6 \2 S6 w' M6 H -m/--max-time <seconds> 设置最大传输时间
2 ?# `6 T1 S/ }& @6 Y8 o --max-redirs <num> 设置最大读取的目录数
8 j5 B$ c* a3 D --max-filesize <bytes> 设置最大下载的文件总量
# ?/ c( y) O. d7 c& x -M/--manual  显示全手动
3 |7 i! S) S: w -n/--netrc 从netrc文件中读取用户名和密码9 W( p! H; G7 u' T4 D3 d% M- H
--netrc-optional 使用 .netrc 或者 URL来覆盖-n
# d4 Y/ x" c- w* {# X& i+ B3 I% H --ntlm          使用 HTTP NTLM 身份验证
  l( E" F+ f" n/ ~5 g -N/--no-buffer 禁用缓冲输出
  z$ O3 [- q3 e7 m( }; k -o/--output 把输出写到该文件中
" v9 k, E* L6 V* P -O/--remote-name 把输出写到该文件中,保留远程文件的文件名. q! a: O  u4 J/ h! ]& B3 k
-p/--proxytunnel   使用HTTP代理
* g. `7 P  y' u$ d: ^  ? --proxy-anyauth 选择任一代理身份验证方法
$ K' ~8 [. b: Y- `: x --proxy-basic   在代理上使用基本身份验证
8 O# s2 F  U7 K1 h --proxy-digest  在代理上使用数字身份验证
9 B- ~, M: [+ ?) m" v4 p --proxy-ntlm    在代理上使用ntlm身份验证# z# H, A* _% w/ d! C& }
-P/--ftp-port <address> 使用端口地址,而不是使用PASV3 k8 [! c0 D* M, G8 u; t
-Q/--quote <cmd>文件传输前,发送命令到服务器
9 F& y5 {$ w" f5 Z/ g -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围5 t, x; y* S  ^
--range-file 读取(SSL)的随机文件/ H4 t% C* P! a. ^3 q
-R/--remote-time   在本地生成文件时,保留远程文件时间7 e9 t0 B1 L% S9 V) f7 Q) }! m
--retry <num>   传输出现问题时,重试的次数
. B1 I% d& z1 ] --retry-delay <seconds>  传输出现问题时,设置重试间隔时间( j& a& f: o& }
--retry-max-time <seconds> 传输出现问题时,设置最大重试时间
4 [5 m& f$ z% C4 J8 v -s/--silent静音模式。不输出任何东西
, k6 k$ ?. X% q% R8 E; G4 s -S/--show-error   显示错误& Q8 Y$ m6 i/ e2 ?
--socks4 <host[:port]> 用socks4代理给定主机和端口4 S$ a$ i" [0 v, F7 r( o/ d- F( N9 k
--socks5 <host[:port]> 用socks5代理给定主机和端口
" i6 A4 |) ?' l1 D# V --stderr <file>& Y. u6 f' U' D# Q4 w
-t/--telnet-option <OPT=val> Telnet选项设置
9 B- X+ U! i7 g --trace <file>  对指定文件进行debug4 B% b9 Y1 l  l; K, z1 Z
--trace-ascii <file> Like --跟踪但没有hex输出
: O4 i9 ^& Z) E: `% b --trace-time    跟踪/详细输出时,添加时间戳
  [1 M' M3 ?# v2 ^9 p" s/ Q" l1 V -T/--upload-file <file> 上传文件) c; I" w* y  `
--url <URL>     Spet URL to work with
! F% F0 I" ?' A4 _  G) r -u/--user <user[:password]>设置服务器的用户和密码' ^5 C- q4 U: B5 _1 N
-U/--proxy-user <user[:password]>设置代理用户名和密码
( R+ N8 K5 V: n+ j9 c" M5 } -v/--verbose; p1 K: Q& G# @9 {
-V/--version 显示版本信息
# Y% W+ t4 \% {+ p8 j. ~4 S4 B -w/--write-out [format]什么输出完成后0 X/ V8 i! q* g: N) k( m3 D8 l8 [
-x/--proxy <host[:port]>在给定的端口上使用HTTP代理
% n: l5 B4 j4 A4 I( b -X/--request <command>指定什么命令
1 m4 ]7 s( c4 N' z3 Z) {  Q -y/--speed-time 放弃限速所要的时间。默认为30
! _" {  g) e. Q% ]9 P  m0 \ -Y/--speed-limit 停止传输速度的限制,速度时间'秒1 a  g1 {$ T) X  W0 Q
-z/--time-cond  传送时间设置  T) M6 G; D* f+ s( Q. a
-0/--http1.0  使用HTTP 1.0
) f% z2 H! L- T* w0 C -1/--tlsv1  使用TLSv1(SSL)
% z9 _/ i4 ~5 I' `2 i -2/--sslv2 使用SSLv2的(SSL)
( s9 F6 k' Q  B! p2 B% e# W* J -3/--sslv3         使用的SSLv3(SSL). K0 j( n) o2 x( J7 x5 O
--3p-quote      like -Q for the source URL for 3rd party transfer
0 [: ~( \/ W1 R1 V --3p-url        使用url,进行第三方传送
/ Q- w1 B6 |' F' u5 c; H) F --3p-user       使用用户名和密码,进行第三方传送4 r" v# Z/ b) w" c) n
-4/--ipv4   使用IP4" T* B) F. a+ U9 {, k$ n: j
-6/--ipv6   使用IP6& F1 e6 `3 o, D
-#/--progress-bar 用进度条显示当前的传送状态/ v' H, Q* Y" V+ H
二,常用curl实例
; Z" n8 Q7 N; K0 s: S
, u$ s- k) t* W6 e; p9 b2 I8 \( O
1,抓取页面内容到一个文件中& L# k- t; B( }0 {# _% d' d
% B9 D% y# S. }0 E
5 H1 {, g8 @, |4 e% ?
[root@krlcgcms01 mytest]# curl -o home.html  http://www.codesky.net  r, O2 |( P( Q7 g. C6 y% s
2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西3 A8 n  }7 d9 f4 [7 k9 W: |, k

  l7 B' v, _# o# z' }9 }2 F) I/ r2 S" @( e- W+ d
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg) [' a7 H3 s9 Q
[root@krlcgcms01 mytest]# curl -O http://www.codesky.net/wp-content/uploads/2010/[0-9][0-9]/aaaaa.jpg
. A& D" e- Y" T; v3,模拟表单信息,模拟登录,保存cookie信息
0 \, y& l8 Z% y
" O7 J( Q8 ?" g6 D8 d" Y3 W6 i+ M6 [: A0 k
[root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
2 Y- G0 g! Q/ F4,模拟表单信息,模拟登录,保存头信息8 u6 S& C/ o7 Y% Y5 o8 ?: v

& a. _7 u7 J  a. c8 e, q0 M) x+ }9 ]. x& p* P
[root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.codesky.net/wp-login.php
) I; u  q- t* r* S" ]-c(小写)产生的cookie和-D里面的cookie是不一样的。
! p" k2 F2 K5 D$ a, L; ^& ~- K' M& c" o7 n* X. p
8 N5 t2 I/ @) `2 a- m0 f
5,使用cookie文件2 T8 k. W% m( F+ @5 z
0 Z! Q1 |3 g' J+ K4 o0 ?* O4 K% Z

, y" p; p& [$ j% x% Q[root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://www.codesky.net/wp-admin' C" V# F* y, C
6,断点续传,-C(大写的)( Z6 r( l6 l. ?( f5 R, E7 S
+ e" B$ x4 X! c% K( x
' v8 l0 j+ O) s, [
[root@krlcgcms01 mytest]# curl -C -O http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
3 ]* u" h  {/ }9 S8 \7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功- }2 j' s1 r% V6 g

0 q+ q( G& y2 \" ~+ a4 O8 P$ v, I7 L3 t4 O# M% B/ {4 H
[root@krlcgcms01 mytest]# curl -d log=aaaa  http://www.codesky.net/wp-login.php
% X; X& |, a+ |8 ~8,显示抓取错误,下面这个例子,很清楚的表明了。7 V0 |9 t5 }7 A: C0 t1 L

  S# {5 S8 P: C% d  r. E* M: P
) X0 {" m2 z. w2 s- y[root@krlcgcms01 mytest]# curl -f http://www.codesky.net/asdf
! o+ p2 ]" O* Z3 [% G5 G4 h! hcurl: (22) The requested URL returned error: 404# W8 m3 S+ @- c
[root@krlcgcms01 mytest]# curl http://www.codesky.net/asdf' d& X+ ^/ r+ @# y) \( o
<HTML><HEAD><TITLE>404,not found</TITLE>7 \3 q, q& c+ e5 q" X
。。。。。。。。。。。。: O3 r' L4 P8 U/ S( {
9,伪造来源地址,有的网站会判断,请求来源地址。
9 ?1 G4 g# B& E4 p; J9 Q$ ?
. [  l9 b0 ]" J6 ~# _! I  R/ F& x, M1 ]' I* I! H) N8 [1 s" S9 k) t
[root@krlcgcms01 mytest]# curl -e http://localhost http://www.codesky.net/wp-login.php9 p* y1 T5 h1 d" {7 k, m+ F& j
10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理7 v" f0 U8 v$ |' d; G- A

6 l& U+ V/ @) v' C, C) w+ f+ z" o5 l- y+ y1 R& H- C) E" ?4 c" n
[root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://www.codesky.net
3 R8 V3 w+ @' H0 a; |1 s11,比较大的东西,我们可以分段下载
& y* {2 B+ f" g" R5 o
4 m- e8 a1 d0 j# r0 A! _: W  E/ y9 Q+ X4 u1 a0 \6 C
[root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://www.codesky.net/wp-9 i5 ~+ X' a/ x, n5 |
content/uploads/2010/09/compare_varnish.jpg
( o% l4 t2 b8 t( F7 ]2 n5 c+ q5 |+ y( w. L % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current& n0 \, z6 f* A3 c7 Q
Dload  Upload   Total   Spent    Left  Speed2 d8 y" S! ?5 `
100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     03 a" Y: l& |: |3 o2 L
[root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://www.codesky.net/wp-6 |0 Z$ W' q; C8 B. U
content/uploads/2010/09/compare_varnish.jpg; y" m! S3 F# Y3 J$ @' N
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current3 z' e0 w7 U( t3 P' a7 N$ H9 n
Dload  Upload   Total   Spent    Left  Speed# B/ B9 T/ Q/ w' ^
100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0* i! c% G( e+ e7 U' r* S9 u* i
[root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://www.codesky.net/wp-# k  d; D8 K  R7 k: u
content/uploads/2010/09/compare_varnish.jpg" [( V0 ^- O) Q) B+ T+ F  d
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current5 f- F9 {* |8 u1 j8 O7 T1 ?- Z
Dload  Upload   Total   Spent    Left  Speed" n% n+ @5 h- w$ W' j
100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961
# [( l, @- d& L& [* ][root@krlcgcms01 mytest]# ls |grep part | xargs du -sh. R8 X! f6 O' o8 I% r6 d
4.0K    one.part1
. ]: Z7 p6 x5 n6 d! i7 [, ~112K    three.part3$ y( E1 i$ a) U% u; K. R9 c
4.0K    two.part2
8 T; c0 m2 p2 W9 _( J用的时候,把他们cat一下就OK了,cat img.part* >img.jpg1 u6 _: ?: I, l. N

- `6 o2 L% s4 q9 s, l) l! M) K. E; I$ h, X$ @/ {# W
12,不会显示下载进度信息: C4 I) H* W! b# ]6 `6 {
" ?8 e) Q4 W! W3 L9 S/ c
; a) C! m2 v$ u9 v5 n! z; `
[root@krlcgcms01 mytest]# curl -s -o aaa.jpg  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg
- l$ N6 [) C. w, l13,显示下载进度条
6 v( K  R1 u: {: v9 l
) t" y6 m- S8 c4 S! a  G& V, M8 S' O$ a9 Q) |4 _
[root@krlcgcms01 mytest]# curl -# -O  http://www.codesky.net/wp-content/uploads/2010/09/compare_varnish.jpg$ Q8 v+ y' B! ?7 S% G) c) w
######################################################################## 100.0%- ]$ l% S5 j/ f: d7 m4 a0 V0 \
14,通过ftp下载文件) K' Y6 M  m/ J3 b- a! O

) A! L: _* Y7 p( q/ J5 x
- |% d7 I  E5 h[zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://www.codesky.net/demo/curtain/bbstudy_files/style.css! g( N1 R1 d, g
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current8 r1 E2 z  M( \& B4 \
Dload  Upload   Total   Spent    Left  Speed5 F. q& Q1 S' K5 J9 Y
101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136
% B- V- Q% p: K1 }% `或者用下面的方式
* A# ~7 R0 R& [& u; u$ `[zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css
* P2 Y9 y! I; H" P$ l, W' d15,通过ftp上传
. h+ w" E; u( |0 l, L6 |+ j; n; p& {7 r' P
+ \9 d. }2 {4 ~/ p& W1 X  P# r( d
[zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/
- N8 f" @/ v* o参考:http://www.codesky.net/article/201010/170043.html




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