Linux curl 详解




Linux下载工具Curl也是Linux下不错的命令行下载工具,小巧、高速,唯一的缺点是不支持多线程下载。以下是他的安装和功能。

安装

$ tar zxvf curl-7.14.0.tar.gz  
$ cd curl-7.14.0/  
$ ./configure  
$ make  
$ make test  
$ make install

参数详情

参数:

描述

-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

使用端口地址,而不是使用PASV

-Q/--quote

文件传输前,发送命令到服务器

-r/--range

检索来自HTTP/1.1或FTP服务器字节范围

--range-file

读取(SSL)的随机文件

-R/--remote-time

在本地生成文件时,保留远程文件时间

--retry

传输出现问题时,重试的次数

--retry-delay

传输出现问题时,设置重试间隔时间

--retry-max-time

传输出现问题时,设置最大重试时间

-s/--silent

静音模式。不输出任何东西

-S/--show-error

显示错误

--socks4

用socks4代理给定主机和端口

--socks5

用socks5代理给定主机和端口

-t/--telnet-option

Telnet选项设置

--trace

对指定文件进行debug

--trace-ascii Like

跟踪但没有hex输出

--retry-delay

传输出现问题时,设置重试间隔时间

--trace-time

跟踪/详细输出时,添加时间戳

-T/--upload-file

上传文件

--url

Spet URL to work with

-u/--user

设置服务器的用户和密码

-U/--proxy-user

设置代理用户名和密码

-V/--version

显示版本信息

-w/--write-out [format]

什么输出完成后

-x/--proxy

在给定的端口上使用HTTP代理

-X/--request

指定什么命令

-y/--speed-time

放弃限速所要的时间。默认为30

-Y/--speed-limit

停止传输速度的限制,速度时间秒

-z/--time-cond

传送时间设置

常用curl实例

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

$ curl -o home.html  http://www.sina.com.cn

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

$ curl -O http://www.it415.com/czxt/linux/25002_3.html

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

$ curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php

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

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

使用cookie文件

$ curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin

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

$ curl -C -O http://www.sina.com.cn

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

$ curl -d log=aaaa  http://blog.51yip.com/wp-login.php

显示抓取错误

$ curl -f http://www.sina.com.cn/asdf 
#curl: (22) The requested URL returned error: 404

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

$  curl -e http://localhost http://www.sina.com.cn

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

$ curl -x 10.10.90.83:80 -o home.html http://www.sina.com.cn

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

$  curl -r 0-100 -o img.part1 http://i2.f.itc.cn/thumb/180/bj/6018/b_60178154.jpg

不显示下载进度信息

$  curl -s -o aaa.jpg

显示下载进度条

$  curl -# -O  http://www.it415.com/czxt/linux/25002_3.html

通过ftp下载文件

$  curl -u 用户名:密码 -O http://blog.51yip.com/demo/curtain/bbstudy_files/style.css

通过ftp上传

$  curl -T xukai.php ftp://xukai:test@192.168.242.144:21/www/focus/enhouse/