通用语法:
curl [option] [URL...]
在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.linuxidc.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL

curl的选项功能:

  • 不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上
  • -u 使用用户名和密码登陆。
  • 如curl -uname:passwd URL
  • -b/--cookie    向服务器提交cookie,若无=则name视为文件名,
  • 例如:curl -b cookie.txt www.linuxidc.com
  • -o out  将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件。
  • 如curl -o page.html URL
  • -d   向服务器POST表单数据 
  • 例如:curl -d "order=111&count=2" http://www.linuxidc.com/buy
  • -A/--user-agent    指定发送请求的用户代理,有些网站总要我们使用某些特定的浏览器去访问他们,有时候更过分的是,还要使用某些特定的版本,怎么办呢?好在curl给我们提供了一个有用的option,可以让我们随意指定自己这次访问所宣称的自己的浏览器信息
  • 例如:curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.8Array:1080 -o page.html -D cookieme.txt http://www.linuxidc.com
  • -x  ip:port 指定http访问所使用的proxy服务器及其端口
  • 例如:curl -x 123.45.67.8Array:1080 -o page.html http://www.linuxidc.com
  • -D head.txt  将服务器的返回的header保存为文件,头部的cookie也可被保存,访问有些网站的时候比较讨厌,在设计时他们使用cookie来记录session信息。像IE这样的浏览器可以轻易处理cookie信息,但我们的curl呢?我们来学习这个option: -D这个是把http的response里面的cookie信息存到一个特别的文件中去
  • 例如:curl -D header.txt www.linuxidc.com  
  • 如果希望从本地文件中获取表单数据,则在文件名前加@ ,
  • 例如:curl -d @data.xml http://www.linuxidc.com
  • 若希望从标准输入获取则用 
  • curl -d "name=username&passwd=pwd" http://www.linuxidc.com
  • -L 当页面有跳转的时候,输出跳转到的页面
  • 当有跳转时,可以通过 curl -L -I URL|grep Location 来确定跳转到的新url地址
  • -I  header信息  
  • 只输header头信息
  • -c 保存服务器的cookie文件
  • -e url  设置引用头的值,欺骗服务器的安全设置盗取相关资源,设定referer
  • curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.8Array:1080 -e "mail.linuxidc.com" -o page.html -D cookieme.txt http://www.linuxidc.com
  • -T localfile  向服务器PUT文件
  • 例如:curl -T 1.mp3  www.linuxidc.com/upload.php
  • -F 向服务器POST表单,
  • 例如:curl -F "web=@index.html;type=text/html" url.com
  • -E cert.pem  指定本地证书
  • -H   为HTTP请求设置任意header及值。
  • 如curl -H "Connection:keep-alive" http://www.linuxidc.com
  • -X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com
  • --compressed 采用压缩方式接收返回数据
  • --connect-timeout 设置超时时间
  • -v 详细输出,包含请求和响应的首部
  • --retry num
  • --retry timeo 指定重试的次数和间隔
  • --tcp-nodelay 打开TCP_NODELAY选项  不进行捎带确认
  • -O  按服务器上的名称保存下载的文件
  • -r/--range  from-to 下载指定range内的数据
  • -C 在保存文件时进行续传


————————————————————————————————————

shell命令:curl -I -m 10 -o /dev/null -s -w %{http_code} http://test.com


curl爬取过程中,会返回一个http_code,下面是他们的意义信息

$http_code["0"]="Unable to access";
$http_code["100"]="Continue";
$http_code["101"]="Switching Protocols";$http_code["200"]=”OK”;
$http_code["201"]=”Created”;
$http_code["202"]=”Accepted”;
$http_code["203"]=”Non-Authoritative Information”;
$http_code["204"]=”No Content”;
$http_code["205"]=”Reset Content”;
$http_code["206"]=”Partial Content”;
$http_code["300"]=”Multiple Choices”;
$http_code["301"]=”Moved Permanently”;
$http_code["302"]=”Found”;
$http_code["303"]=”See Other”;
$http_code["304"]=”Not Modified”;
$http_code["305"]=”Use Proxy”;
$http_code["306"]=”(Unused)”;
$http_code["307"]=”Temporary Redirect”;
$http_code["400"]=”Bad Request”;
$http_code["401"]=”Unauthorized”;
$http_code["402"]=”Payment Required”;
$http_code["403"]=”Forbidden”;
$http_code["404"]=”Not Found”;
$http_code["405"]=”Method Not Allowed”;
$http_code["406"]=”Not Acceptable”;
$http_code["407"]=”Proxy Authentication Required”;
$http_code["408"]=”Request Timeout”;
$http_code["409"]=”Conflict”;
$http_code["410"]=”Gone”;
$http_code["411"]=”Length Required”;
$http_code["412"]=”Precondition Failed”;
$http_code["413"]=”Request Entity Too Large”;
$http_code["414"]=”Request-URI Too Long”;
$http_code["415"]=”Unsupported Media Type”;
$http_code["416"]=”Requested Range Not Satisfiable”;
$http_code["417"]=”Expectation Failed”;
$http_code["500"]=”Internal Server Error”;
$http_code["501"]=”Not Implemented”;
$http_code["502"]=”Bad Gateway”;
$http_code["503"]=”Service Unavailable”;
$http_code["504"]=”Gateway Timeout”;
$http_code["505"]=”HTTP Version Not Supported”;

Linux curl使用简单介绍 http://www.linuxidc.com/Linux/2008-01/10891.htm

Unix下Curl的使用方法及常用功能记录分享 http://www.linuxidc.com/Linux/2012-08/69154.htm



转载于:https://blog.51cto.com/dinghongbin/1654689