利用curl返回http的状态码

avatar 2022年2月23日18:06:31 评论 3,784 次浏览

网站监控的时候避免不了使用curl监控url的返回状态,然后根据返回状态码进行判断这个url是否正确。下面看一下curl的用法,这里只是对curl的常用方法做一个简单的介绍,如果没有介绍的可以留言后期在慢慢补充。
curl的用法有很多,最简单的方法就是在命令行中使用help查看curl的相关参数:

[wolf@wulaoer.org🔥🔥🔥🔥 ~]# curl --help
Usage: curl [options...] <url>
     --abstract-unix-socket <path> Connect via abstract Unix domain socket
     --alt-svc <file name> Enable alt-svc with this cache file
     --anyauth       Pick any authentication method
 -a, --append        Append to target file when uploading
     --basic         Use HTTP Basic Authentication
     --cacert <file> CA certificate to verify peer against
.............................................................

下面是整理的分类参数:

# 调试类
-v, --verbose                          输出信息
-q, --disable                          在第一个参数位置设置后 .curlrc 的设置直接失效,这个参数会影响到 -K, --config -A, --user-agent -e, --referer
-K, --config FILE                      指定配置文件
-L, --location                         跟踪重定向 (H)

# CLI显示设置
-s, --silent                           Silent模式。不输出任务内容
-S, --show-error                       显示错误. 在选项 -s 中,当 curl 出现错误时将显示
-f, --fail                             不显示 连接失败时HTTP错误信息
-i, --include                          显示 response的header (H/F)
-I, --head                             仅显示 响应文档头
-l, --list-only                        只列出FTP目录的名称 (F)
-#, --progress-bar                     以进度条 显示传输进度

# 数据传输类
-X, --request [GET|POST|PUT|DELETE|…]  使用指定的 http method 例如 -X POST
-H, --header <header>                  设定 request里的header 例如 -H "Content-Type: application/json"
-e, --referer                          设定 referer (H)
-d, --data <data>                      设定 http body 默认使用 content-type application/x-www-form-urlencoded (H)
    --data-raw <data>                  ASCII 编码 HTTP POST 数据 (H)
    --data-binary <data>               binary 编码 HTTP POST 数据 (H)
    --data-urlencode <data>            url 编码 HTTP POST 数据 (H)
-G, --get                              使用 HTTP GET 方法发送 -d 数据 (H)
-F, --form <name=string>               模拟 HTTP 表单数据提交 multipart POST (H)
    --form-string <name=string>        模拟 HTTP 表单数据提交 (H)
-u, --user <user:password>             使用帐户,密码 例如 admin:password
-b, --cookie <data>                    cookie 文件 (H)
-j, --junk-session-cookies             读取文件中但忽略会话cookie (H)
-A, --user-agent                       user-agent设置 (H)

# 传输设置
-C, --continue-at OFFSET               断点续转
-x, --proxy [PROTOCOL://]HOST[:PORT]   在指定的端口上使用代理
-U, --proxy-user USER[:PASSWORD]       代理用户名及密码

# 文件操作
-T, --upload-file <file>               上传文件
-a, --append                           添加要上传的文件 (F/SFTP)

# 输出设置
-o, --output <file>                    将输出写入文件,而非 stdout
-O, --remote-name                      将输出写入远程文件
-D, --dump-header <file>               将头信息写入指定的文件
-c, --cookie-jar <file>                操作结束后,要写入 Cookies 的文件位置

看下面的实例:
获取http的返回状态码

[wolf@wulaoer.org🔥🔥🔥🔥 Desktop]# curl -I -s -w "%{http_code}\n" -o /dev/null www.wulaoer.org
403
[wolf@wulaoer.org🔥🔥🔥🔥 Desktop]# curl -I -s -w "%{http_code}\n" -o /dev/null www.baidu.com
200

这里需要注意一下,第一个实例请求www.wulaoer.org时返回的是403,但是请求是正常的,主要是我做了设置,看一下百度的就正常了。

# 此参数相当于设置http头 Authorization:
curl --user user:password http://www.wulaoer.org/login.php
# 使用用户名、密码认证,此参数会覆盖“-n”、“--netrc”和“--netrc-optional”选项
#模拟变淡登录保存头信息
curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://www.wulaoer.org/login.php

这里就不做过多的举例了,下面看看curl的返回状态解码:

1    curl 不支持该协议 
2    curl 初始化失败 
3    URL 格式错误 
5    解析代理服务器失败 
6    解析主机失败 
7    建立与主机的连接失败 
8    无法解析 FTP 服务器返回的消息 
9    FTP 服务器拒接访问。可能是拒绝登录或拒绝访问特定目录,但很多情况下是访问了一个不存在的位置导致的 
11    无法解析 FTP 服务器的 PASS 回复消息 
13    无法解析 FTP 服务器的 PASV 回复消息 
14    无法解析 FTP 服务器的 227-line 回复消息 
15    无法解析 FTP 主机 
17    无法与 FTP 服务器建立二进制传输模式 
18    文件传输不完整。只有文件的一部分被传送了。 
19    FTP 下载/访问指定的文件失败 
21    FTP 引用错误 
22    HTTP 页面获取失败。将返回 400 及其以上的错误码。 
23    写入数据到本地文件系统发生错误 
25    FTP 服务器无法存储被上传的文件 
26    读取数据出错 
27    内存分配失败 
28    操作超时 
30    FTP 服务器运行 PORT 命令失败 
31    FTP 服务器运行 REST 命令失败 
33    HTTP 服务器执行 range 命令失败 
34    HTTP 服务器 post 方法错误 
35    SSL 连接出错。通常是 SSL 握手失败。 
36    FTP 断点续传出错,无法继续前一次下载任务。 
37    FILE 协议无法打开文件。可能是没有权限导致的 
38    LDAP 协议无法执行 bind 操作 
39    LDAP 协议执行搜索功能失败 
41    没有找到匹配的 LDAP 功能 
42    curl 被其它应用程序中止运行 
43    发生内部错误。通常是因为调用函数时传递了错误的参数 
45    接口调用错误 
47    跳转链接数量达到上限 
48    为 telnet 协议指定了一个未知的参数 
49    telnet 协议的参数格式有误 
51    SSL 认证或 SSH 的 MD5 指纹不正确 
52    服务器无应答 
53    未找到 SSL 加密引擎 
54    无法将 SSL 加密引擎设为默认引擎 
55    发送网络数据失败 
56    接收网络数据失败 
58    本地证书有问题 
59    无法使用指定的 SSL 密码 
60    已知的 CA证书无法用于验证 
61    无法识别传输编码 
62    无效的 LDAP URL 
63    文件大小超过限制 
64    请求的 FTP SSL 级别获取失败 
65    发送需要进行 rewind 的数据失败 
66    解析 SSL 引擎失败 
67    用户名/密码验证失败,curl 无法登录 
68    TFTP 服务器上没有找到指定的文件 
69    对 TFTP 服务器的访问出现权限问题 
70    TFTP 服务器已耗尽磁盘空间 
71    非法的 TFTP 操作 
72    未知的 TFTP 传输 ID 
73    TFTP 企图传输一个已经存在的文件 
74    用户不存在导致 TFTP 操作失败 
75    字符转换失败 
76    需要使用字符转换函数 
77    读取 SSL CA 证书出错。可能是证书路径不正确,也可能是没有权限 
78    URL 中指定的资源不存在 
79    SSH 会话中发生了未知错误 
80    中断 SSH 连接失败 
82    无法加载 CRL 文件。可能是没有指定正确的格式 
83    发布者身份验证失败
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: