curl http_code 状态码
1.只得到一个url的http_code的状态码
curl -I -m 10 -o /dev/null -s -w %{http_code} http://127.0.0.1/a.html
查询head
curl --head http://192.168.56.11:32769/
HTTP/1.1 200 OK
Server: nginx/1.11.3
Date: Fri, 02 Sep 2016 17:44:14 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 Jul 2016 14:54:48 GMT
Connection: keep-alive
ETag: "579779b8-264"
Accept-Ranges: bytes
2.curl命令参数详解:
  由于linux curl功能十分强大,所以命令参数十分多,下表只是爱E族(aiezu.com)帅选出来的部分参数,更多参数请运行“man curl”命令查看。
| 参数组 | 参数 | 描述 | 
|---|---|---|
| url | url | 需要抓取的一到多个URLs; 多个下面通配符的方式: 1、http://{www,ftp,mail}.aiezu.com; 2、http://aiezu.com/images/[001-999].jpg; 3、http://aiezu.com/images/[1-999].html; 4、ftp://aiezu.com/file[a-z].txt | 
| 请 求 头 | -H "name: value" --header "name: value" | (HTTP)添加一个http header(http请求头); | 
| -H "name:" --header "name:" | (HTTP)移除一个http header(http请求头); | |
| -A "string" --user-agent "string" 【参考】 | (HTTP)设置Http请求头“User-Agent”,服务器通过“User-Agent”可以判断客户端使用的浏览器名称和操作系统类型,伪造此参数能导致服务器做出错误判断。 也可以使用“-H”, “--header option”设置此选项; | |
| -e <URL> --referer <URL> 【参考】 | (HTTP)设置访问时的来源页面,告诉http服务从哪个页面进入到此页面; -e "aiezu.com"相当于“-H "Referer: www.qq.com"”; | |
| 响 应 头 | -I --head | (HTTP)只输出HTTP-header,不获取内容(HTTP/FTP/FILE)。 用于HTTP服务时,获取页面的http头; (如:curl -I http://aiezu.com) 用于FTP/FILE时,将会获取文件大小、最后修改时间; (如:curl -I file://test.txt) | 
| -i --include | (HTTP)输出HTTP头和返回内容; | |
| -D <file> --dump-header <file> | (HTTP)转储http响应头到指定文件; | |
| cookie | -b name=data --cookie name=data 【参考】 | (HTTP)发送cookie数据到HTTP服务器,数据格式为:"NAME1=VALUE1; NAME2=VALUE2"; 如果行中没有“=”,将把参数值当作cookie文件名; 这个cookie数据可以是由服务器的http响应头“Set-Cookie:”行发送过来的; | 
| -c filename --cookie-jar file name 【参考】 | (HTTP)完成操作后将服务器返回的cookies保存到指定的文件; 指定参数值为“-”将定向到标准输出“如控制台”; | |
| -j --junk-session-cookies | (HTTP)告诉curl放弃所有的"session cookies"; 相当于重启浏览器; | |
| 代理 | -x host:port -x [protocol://[user:pwd@]host[:port] --proxy [protocol://[user:pwd@]host[:port] 【参考】 | 使用HTTP代理访问;如果未指定端口,默认使用8080端口; protocol默认为http_proxy,其他可能的值包括: http_proxy、HTTPS_PROXY、socks4、socks4a、socks5; 如: --proxy 8.8.8.8:8080; -x "http_proxy://aiezu:123@aiezu.com:80" | 
| -p --proxytunnel | 将“-x”参数的代理,作为通道的方式去代理非HTTP协议,如ftp; | |
| --socks4 <host[:port]> --socks4a <host[:port]> --socks5 <host[:port]> 【参考】 | 使用SOCKS4代理; 使用SOCKS4A代理; 使用SOCKS5代理; 此参数会覆盖“-x”参数; | |
| --proxy-anyauth --proxy-basic --proxy-diges --proxy-negotiate --proxy-ntlm | http代理认证方式,参考: --anyauth --basic --diges --negotiate --ntlm | |
| -U <user:password> --proxy-user <user:password> | 设置代理的用户名和密码; | |
| 数据 传输 | -G --get 【参考】 | 如果使用了此参数,“-d/”、“--data”、“--data-binary”参数设置的数据,讲附加在url上,以GET的方式请求; | 
| -d @file -d "string" --data "string" --data-ascii "string" --data-binary "string" --data-urlencode "string" 【参考】 | (HTTP)使用HTTP POST方式发送“key/value对”数据,相当于浏览器表单属性(method="POST",enctype="application/x-www-form-urlencoded") -d,--data:HTTP方式POST数据; --data-ascii:HTTP方式POST ascii数据; --data-binary:HTTP方式POST二进制数据; --data-urlencode:HTTP方式POST数据(进行urlencode); 如果数据以“@”开头,后紧跟一个文件,将post文件内的内容; | |
| -F name=@file -F name=<file -F name=content --form name=content 【参考】 | (HTTP)使用HTTP POST方式发送类似“表单字段”的多类型数据,相当于同时设置浏览器表单属性(method="POST",enctype="multipart/form-data"),可以使用此参数上传二进制文件。 如果字段内容以“@”开头,剩下的部分应该是文件名,curl将会上传此文件,如: 如果字段内容以“<”开头,剩下的部分应该是文件名,curl将从文件中获取作为此字段的值,如:curl -F "text=<text.txt" http://aiezu.com; | |
| --form-string <key=value> | (HTTP)类似于“--form”,但是“@”、“<”无特殊含义; | |
| -T file --upload-file file | 通过“put”的方式将文件传输到远程网址; 选项参数只使用字符"-",将通过stdin读入文件内容; 此参数也可以使用通配符: | |
| 断点 续传 | -C <offset> --continue-at <offset> | 断点续转,从文件头的指定位置开始继续下载/上传; offset续传开始的位置,如果offset值为“-”,curl会自动从文件中识别起始位置开始传输; | 
| -r <range> --range <range> | (HTTP/FTP/SFTP/FILE) 只传输内容的指定部分: 0-499:最前面500字节; -500:最后面500字节; 9500-:最前面9500字节; 0-0,-1:最前面和最后面的1字节; 100-199,500-599:两个100字节; | |
| 认证 | --basic | (HTTP)告诉curl使用HTTP Basic authentication(HTTP协议时),这是默认认证方式; | 
| --ntlm | (HTTP)使用NTLM身份验证方式,用于HTTP协议; 一般用于IIS使用NTLM的网站; | |
| --digest | (HTTP)使用HTTP Digest authentication加密,用于HTTP协议; 配合“-u/--user”选项,防止密码使用明文方式发送; | |
| --negotiate | (HTTP)使用GSS-Negotiate authentication方式,用于HTTP协议; 它主要目的是为它的主要目的是为kerberos5认证提供支持支持; | |
| --anyauth | (HTTP)告诉curl自动选择合适的身份认证方法,并选用最安全的方式; | |
| -u user:password --user user:password | 使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项; 如果你只提供用户名,curl将要求你输入密码; 如果你使用“SSPI”开启的curl库做“NTLM”认证,可以使用不含用户名密码的“-u:”选项,强制curl使用当前登录的用户名密码进行认证; 此参数相当于设置http头“Authorization:”; | |
| 证书 | -E <证书[:密码]> --cert <证书[:密码]> | (SSL)指定“PEM”格式的证书文件和证书密码; | 
| --cert-type <type> | (SSL)告诉curl所提供证书的类型:PEM、DER、ENG等; 默认为“PEM”; | |
| --cacert <CA证书> | (SSL)告诉curl所以指定的CA证书文件,必须是“PEM”格式; | |
| --capath <CA证书路径> | (SSL)告诉curl所以指定目录下的CA证书用来验证; 这些证书必须是“PEM”格式; | |
| --crlfile <file> | (HTTPS/FTPS)提供一个PEM格式的文件,用于指定被吊销的证书列表; | |
| -k --insecure | (SSL)设置此选项将允许使用无证书的不安全SSL进行连接和传输。 | |
| SSL 其他 | --ciphers <list of ciphers> | (SSL)指定SSL要使用的加密方式;如:“aes_256_sha_256”; | 
| --engine <name> | 设置一个OpenSSL加密引擎用于加密操作; 使用“curl --engine list”查看支持的加密引擎列表; | |
| --random-file | (SSL)指定包含随机数据的文件路径名;数据是用来为SSL连接产生随机种子为; | |
| --egd-file <file> | (SSL)为随机种子生成器EGD(Entropy Gathering Daemon socket)指定的路径名; | |
| -1/--tlsv1 --tlsv1.0 --tlsv1.1 --tlsv1.2 -2/--sslv2 -3/--sslv3 | (SSL)使用TLS版本2与远程服务器通讯; (SSL)使用TLS 1.0版本与远程服务器通讯; (SSL)使用TLS 1.1版本与远程服务器通讯; (SSL)使用TLS 1.2版本与远程服务器通讯; (SSL)使用SSL版本2与远程服务器通讯; (SSL)使用SSL版本3与远程服务器通讯; | |
| 私钥 公钥 | --key <key> | (SSL/SSH)指定一个私钥文件名;为指定时自动尝试使用下面文件:“~/.ssh/id_rsa”、“~/.ssh/id_dsa”、“./id_rsa'”、 “./id_dsa”; | 
| --key-type <type> | (SSL)指定私钥文件类型,支持:DER、PEM、ENG,默认是PEM; | |
| --pass <phrase> | (SSL/SSH)指定私钥文件的密码; | |
| --pubkey <key> | (SSH)使用指定文件提供的您公钥; | |
| FTP | -P --ftp-port <接口> | (FTP)FTP主动模式时,设置一个地址等待服务器的连接,如: 网卡:eth1 IP:8.8.8.8 主机名:aiezu.com 可以加端口号:eth1:20000-21000; | 
| --crlf | (FTP)上传时将换行符(LF)转换为回车换行(CRLF); | |
| --ftp-account [data] | (FTP)ftp帐号信息; | |
| --ftp-method [method] | (FTP)可选值:multicwd/nocwd/singlecwd; | |
| --ftp-pasv | (FTP)使用使用PASV(被动)/EPSV模式; | |
| --ftp-skip-pasv-ip | (FTP)使用PASV的时,跳过指定IP; | |
| --ftp-create-dirs | (FTP)上传时自动创建远程目录; | |
| -l --list-only | (FTP)列出ftp文件列表; | |
| -B --use-ascii | (FTP/LDAP)使用Ascii传输模式,用于FTP、LDAP;在ftp中相当与使用了“type=A;”模式。 | |
| --disable-epsv | (FTP)告诉curl在PASV(被动模式)时不要使用EPSV; | |
| --disable-eprt | (FTP)告诉curl在主动模式时禁用EPRT和LPRT; | |
| 限速 | --limit-rate <speed> | 限制curl使用的最大带宽;如果未指定单位,默认单位为“bytes/秒”,你也可以指定单位为“K”、“M”、“G”等单位,如:“--limit-rate 1m”为限制最大使用带宽为“1m字节/秒”; | 
| -y --speed-time <time> | If a download is slower than speed-limit bytes per second during a speed-time period, the download gets aborted. If speed-time is used, the default speed-limit will be 1 unless set with -Y. This option controls transfers and thus will not affect slow connects etc. If this is a concern for you, try the --connect-timeout option. | |
| -Y --speed-limit <speed> | If a download is slower than this given speed (in bytes per second) for speed-time seconds it gets aborted. speed-time is set with -y and is 30 if not set. | |
| 其他 选项 | -0/--http1.0 | (HTTP) 强制curl使用HTTP 1.0而不是使用默认的HTTP 1.1; | 
| --interface <name> | 使用指定的网卡接口访问; curl --interface eth0 http://aiezu.com curl --interface 10.0.0.101 http://aiezu.com | |
| -X <command> --request <command> | (HTTP)指定与服务器通信使用的请求方法,如:GET、PUT、POST、DELETE等,默认GET; | |
| --keepalive-time <seconds> | 设置keepalive时间 | |
| --no-keepalive | 关闭keepalive功能; | |
| --no-buffer | 禁用对输出流缓冲; | |
| --buffer | 启用输出流缓冲; | |
| -L --location | (HTTP/HTTPS)追随http响应头“Location:”定向到跳转后的页面; (在http响应码为3XX时使用,如301跳转、302跳转) | |
| --location-trusted | (HTTP/HTTPS)同“--location”,但跳转后会发送跳转前的用户名和密码; | |
| --compressed | (HTTP)请求对返回内容使用压缩算法进行压缩;curl支持对gzip压缩进行解压; | |
| --connect-timeout <seconds> | 指定最大连接超时,单位“秒”; | |
| -m seconds --max-time seconds | 限制整个curl操作的最长时间,单位为秒; | |
| -s --silent | 安静模式。不要显示进度表或错误消息; | |
| -# --progress-bar | 显示进度条; | |
| 错误 选项 | -f --fail | (HTTP)连接失败时(400以上错误)不返回默认错误页面,而是返回一个curl错误码“22”; | 
| --retry <num> --retry-delay <seconds> --retry-max-time <seconds> | 失败重试次数; 重试间隔时间; 最大重试时间; | |
| -S --show-error | 安静模式下显示错误信息; | |
| --stderr <file> | 错误信息保存文件; | |
| 输出 | -o file --output file | 将返回内容输出到文件。 如果是用过通配符获取多个url,可以使用“#”后跟“数字序号”,curl会自动将它替换对应的关键词,如: curl "http://aiezu.com/{a,b}.txt" -o "#1.txt"; 将保存为:“a.txt”,“b.txt”;   curl "http://aiezu.com/{a,b}_[1-3].txt" -o "#1#2.txt"; 如果要根据规则创建保存目录,参考:“--create-dirs” 指定“-”将定向到标准输出“如控制台”; | 
| -O --remote-name | 将返回内容输出到当前目录下,和url中文件名相同的文件中(不含目录); | |
| --create-dirs | 与“-o”参数配合使用,创建必要的本地目录层次结构 | |
| -w --write-out format | 操作完成后在返回信息尾部追加指定的内容;要追加的内容可以是一个字符串“string”、从文件中获取“@filename”、从标准输入中获取“@-” 格式参数中可以用%{variable_name} 方式使用响应信息的相关变量,如:%{content_type}、%{http_code}、%{local_ip}...,更多变量参考“man curl”获取; 格式参数可以使用“\n”、“\r”、“\t”等转义字符; | |
| 调试 | --trace <file> | 转储所有传入和传出的数据到文件,包括描述信息; 使用“-”作为文件名将输出发送到标准输出。 | 
| --trace-ascii file | 转储所有传入和传出的数据到文件,包括描述信息,只转储ASCII部分,更容易阅读; 使用“-”作为文件名将输出发送到标准输出。 这个选项会覆盖之前使用的-v、 --verbose、 --trace-ascii选项; | |
| --trace-time | 转储文件中添加时间信息; | |
| -K --config <config file> | 从配置文件中读取参数,参考:http://curl.haxx.se/docs/ | |
| -v --verbose | 显示更详细的信息,调试时使用; | |
| 帮助 | -M --manual | 显示完整的帮助手册; | 
| -h --help | linux curl用法帮助; | 
curl 用法:
1、下载页面:
| 1 | curl -o index.html http://aiezu.com | 
 
2、下载文件并显示简单进度条:
| 1 | curl -# -o centos6.8.iso http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso | 
 
3、断点续传:
| 1 2 | #继续完成上次终止的未完成的下载curl -# -o centos6.8.iso -C - http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso | 
4、伪造来源页面:
| 1 2 | #告诉爱E族,我是从百度来的curl -e http://baidu.com http://aiezu.com | 
 5、伪造代理设备:
| 1 2 3 4 5 | #告诉爱E族,我是GOOGLE爬虫蜘蛛(其实我是curl命令)curl -A " Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"http://aiezu.com#告诉爱E族,我用的是微信内置浏览器curl -A "Mozilla/5.0 AppleWebKit/600 Mobile MicroMessenger/6.0"http://aiezu.com | 
 
6、http头:
| 1 2 | # 看看本站的http头是怎么样的curl -I  http://aiezu.com | 
输出:
| 1 2 3 4 5 6 7 8 9 | HTTP/1.1 200 OKDate: Fri, 25 Nov 2016 16:45:49 GMTServer: ApacheSet-Cookie: rox__Session=abdrt8vesprhnpc3f63p1df7j4; path=/Expires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Pragma: no-cacheVary: Accept-EncodingContent-Type: text/html; charset=utf-8 | 
 
6、设置http请求头:
| 1 | curl -H "Cache-Control:no-cache"http://aiezu.com | 
7、发送表单数据:
| 1 | curl -F "pic=@logo.png"-F "site=aiezu"http://aiezu.com/ | 
8、发送cookie:
| 1 | curl -b "domain=aiezu.com"http://aiezu.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”;
curl http_code 状态码的更多相关文章
- Curl http_code 状态码 意义及信息
		shell命令:curl -I -m 10 -o /dev/null -s -w %{http_code} http://test.com curl_init — 初始化一个curl会话curl_co ... 
- curl http_code状态码 含义
		curl爬取过程中,会返回一个http_code,下面是他们的意义信息 $http_code["]="Unable to access"; $http_code[&quo ... 
- 常用HTTP状态码和CURL 000问题
		最近在测试CDN服务质量问题,测试过程中返回了一些不同的状态码,当然有一些常用的,也有一些不常用的.最奇葩的是在使用curl命令的时候出现000状态码,问了很多同事,对这个000的反应跟新事物是的 ... 
- 使用curl获取网站的http的状态码
		发布:thebaby 来源:net [大 中 小] 本文分享一例shell脚本,一个使用curl命令获取网站的httpd状态码的例子,有需要的朋友参考下.本文转自:http://www.j ... 
- curl获取http请求的状态码
		$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); //设置头文件的信息作为数据流输出 curl_setopt($curl, CUR ... 
- 详解CURL状态码,最全的代码列表
		curl是一个强大的命令,其中我们经常使用的通过curl 加地址和端口号,判断目标链接状态,下面列出了curl 返回的状态码. 举例: [root@k8s-master1 ~]# curl k8s-m ... 
- (转)Http状态码301和302概念简单区别及企业应用案例
		Http状态码301和302的区别及企业应用案例 原文:http://blog.51cto.com/oldboy/1774260 1.什么是301重定向? 301重定向/跳转一般,表示本网页永久性转移 ... 
- zabbix自动发现 url 以及对http返回状态码监控实现 告警
		2019-06-04 18:39:12 目的:批量监控业务URL的返回状态码,通过zabbix监控判断业务好坏. 1.zabbix安装 请查看此永久链接:https://www.cnblogs.com ... 
- http 状态码含义
		HTTP状态码被分为五大类, 目前我们使用的HTTP协议版本是1.1, 支持以下的状态码.随着协议的发展,HTTP规范中会定义更多的状态码. 小技巧: 假如你看到一个状态码518, 你并不知道具体51 ... 
随机推荐
- NX二次开发-UFUN计时函数UF_end_timer
			1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_modl.h> 5 6 7 UF_initialize(); 8 9 //计时开 ... 
- 关于对现阶段vue项目的一些总结和感想
			一.前言 现阶段手上vue的项目差不多快完了,空闲之余回反复对整个项目的代码结构.实现细节以及框架上的做了一些思考和优化.下面打算把想到的和重点实现的方法记录一下. 二.回顾 对于常规操作,这里不做过 ... 
- P1566 加等式
			P1566 加等式 题目描述 对于一个整数集合,我们定义“加等式”如下:集合中的某一个元素可以表示成集合内其他元素之和.如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是 ... 
- 反射Reflection
			using System; using System.Collections.Generic; using System.Linq; using System.Reflection;// <-- ... 
- 第37讲  谈谈Spring Bean的生命周期和作用域
			在企业应用软件开发中,Java 是毫无争议的主流语言,开放的 Java EE 规范和强大的开源框架功不可没,其中 Spring 毫无疑问已经成为企业软件开发的事实标准之一.今天这一讲,我将补充 Spr ... 
- 用mybatis时log4j总是不记录sql语句
			log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).log4j:WARN ... 
- 2019 HDU 多校赛第二场 HDU 6598 Harmonious Army 构造最小割模型
			题意: 有n个士兵,你可以选择让它成为战士还是法师. 有m对关系,u和v 如果同时为战士那么你可以获得a的权值 如果同时为法师,你可以获得c的权值, 如果一个为战士一个是法师,你可以获得b的权值 问你 ... 
- SQLserver执行命令
			方法一:xp_cmdshell exec master..xp_cmdshell "whoami"默认执行是关闭 EXEC sp_configure 'show advanced ... 
- 用AJAX传值参数是中文时可能会乱码
			1.ajax代码 function SelectSemesterBySchYear() { // alert('sssssss'); var temp1 = document.getElementBy ... 
- 安装rubygems
			转载 http://blog.csdn.net/huanghai200911/article/details/51251472 1,下载rubygems-2.4.8.tar包,下载地址:https:/ ... 
