首页 » SEO优化 » phpcurlhttpcode技巧_敕令行http调试利器curl若何运用

phpcurlhttpcode技巧_敕令行http调试利器curl若何运用

访客 2024-11-05 0

扫一扫用手机浏览

文章目录 [+]

crul的官方网站是 https://curl.haxx.se/ , 我们可以通过该网站获取此工具的最新版本,还有最全面的利用方法。

从官网可以知道,curl支持30多种类型的传输办法,例如:FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP等,这当中包含多种协议。
最常利用的有FILE、FTP、HTTP、HTTPS等协议。

phpcurlhttpcode技巧_敕令行http调试利器curl若何运用

对付运维职员来说,在我们探测远程做事的时候,比如http传输,SOCKET连接时,这个工具能非常方便的作为验证工具和测试工具。

phpcurlhttpcode技巧_敕令行http调试利器curl若何运用
(图片来自网络侵删)

下面看几个curl范例运用实例。

1、 仅仅显示header信息

这个用法运维职员常常利用,可以探测一个网站的header信息,例如:

[root@localhost ~]# curl -I https://www.ixdba.netHTTP/1.1 200 OKServer: nginx/1.13.9Date: Mon, 04 Mar 2019 08:11:31 GMTContent-Type: text/html; charset=UTF-8Connection: keep-alive

通过curl的“-I”(大写的i)参数可以获取指定网站的header头信息,可以创造上面这个网站可以正常访问(200状态码),同时此网站的web做事器是nginx/1.13.9,并且还开启了keep-alive。
这些信息都是web运维必须要具备的。

2、显示http状态代码

http状态码对web运维来讲,非常主要,在对web页面进行监控的时候,会常常通过状态码来判断网页的状态,如果返回状态码为非200状态,那么则认为网页非常。
要获取网页状态码,除了上面的“-I”参数外,还有更专业的方法,那便是利用 “-s”和“-o”参数组合,末了利用“-w”参数,可以这样利用:

[root@localhost ~]#curl -s -o /dev/null -w %{http_code}"\n" http://www.baidu.com200

个中:

? “-s”: 表示安静模式,不输出错误,或者进度条之类的。
? “-o”: 表示指定输出结果到某个文件,不指定的话默认是终端。
这里是将结果写入空设备中。
? “-w”表示输出一些定义的元数据,这里输出的是%{http_code},即http状态码。
撤除http_code,还有http_connect、time_total、time_connect、time_appconnect、time_redirect、size_download 、size_upload 、content_type、ssl_verify_result等变量可供选择。
输出变量须要按照%{variable_name}的格式。
? “\n”表示换行

再来看个例子,通过http协议访问一个网站,命令如下:

[root@localhost ~]#curl -s -o /dev/null -w %{http_code}" "%{time_total}" "%{redirect_url}"\n" http://www.ixdba.net301 0.141 https://www.ixdba.net/

可以看到输出结果有个301,这表示当通过http访问此网站的时候,自动跳转到了https,实行了301定向操作,以是状态码变成了301,第二个输出“0.141”是变量“%{time_total}”解析出的结果,代表总韶光,按秒计。
精确到小数点后三位,末了的“https://www.ixdba.net/” 是"%{redirect_url}"变量的输出结果,代表跳转后的url。

3、利用curl实现url地址重定向(自动跳转)

默认情形下CURL不会发送HTTP Location headers(重定向),但利用了“-L”选项后,当一个被要求页面移动到另一个站点时,就会发送一个HTTP Loaction header作为要求,然后将要求重定向到新的地址上。
例如:访问http://www.ixdba.net 时,会自动将地址重定向到 https://www.ixdba.net 上。

[root@localhost ~]# curl -L -I http://www.ixdba.netHTTP/1.1 301 Moved PermanentlyServer: nginx/1.13.9Date: Fri, 01 Mar 2019 07:25:57 GMTContent-Type: text/htmlContent-Length: 185Connection: keep-aliveLocation: https://www.ixdba.net/Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadHTTP/1.1 200 OKServer: nginx/1.13.9Date: Fri, 01 Mar 2019 07:25:58 GMTContent-Type: text/html; charset=UTF-8Connection: keep-alive

输出有两个部分,可以看到有自动的跳转,这是由于利用了-L参数,curl就会跳转到新的网址。

4、抓取网页内容,并保存到本地

curl也能下载文件,达到跟wget相同的功能,例如将一个url文件保存到本地,保存原始文件名,可以通过“-O”参数实现:

[root@localhost ~]# curl -O https://www.ixdba.net/archives/2017/06/653.htm

但是有时候url中的文件名不固定或者想下载后重命名,可以通过“-o”实现,例如将url中的文件下载到本地,并命名为test.html,命令如下:

[root@localhost ~]#curl -o test.html https://www.ixdba.net/archives/2017/06/653.htm

这里面涉及两个curl参数,分别是:

? -o/--output 将文件保存为命令行中指定的文件名的文件中? -O/--remote-name 利用URL中默认的文件名保存文件到本地

5、通过curl下载文件并开启断点续传

curl也可以实现下载大文件,并实现断点续传,先看下面这个例子,如下图所示:

可以看到,curl下载文件实在比wget更好用,可以看到下载文件时的各个属性,文件总大小,已下载大小,下载耗时多少,下载速率多少等等。

不才载一会后,实行ctrl+c,中断下载,接着再次实行curl下载,看看是否能够实现断点续传功能,如下图所示:

这里利用了三个参数:

-C/--continue-at <offset>: 断点续转,把稳断点续传的参数是-C, 要自动续传的话要利用 "-C -", 否则须要手工指定断点的字节位置。
这个特殊把稳。

6、对CURL的最大网络利用带宽进行限速

与wget类似,curl不才载文件时也会占满系统带宽,这样一来,可能会影响线上业务系统的正常运行,因此,限速也是要做的,可以通过“--limit-rate”选项,实现对curl下载网速限定,来看一个例子:

这是限定下载速率为2M,看最下面的下载速率刚好是2048k旁边,实现了带脱期速。

7、通过CURL访问须要授权的页面

在访问须要授权的页面时,可通过-u选项供应用户名和密码进行授权

[root@localhost ~]# curl -u username:password URL

上面的做法很明显,存在密码透露的风险,常日的做法是在命令行只输入用户名,之后会提示输入密码,这样可以担保在查看历史记录时不会将密码透露。

[root@localhost ~]# curl -u username URL

8、通过curl从FTP做事器下载、上传文件

CURL不但支持http,同样也支持FTP下载,若在url中指定的是某个文件路径而非详细的某个要下载的文件名,CURL则会列出该目录下的所有文件名而并非下载该目录下的所有文件

例如:列出public_html下的所有文件夹和文件

curl -u ftpuser:ftppass ftp://ftp_server/public_html/

看下面这个例子,如下图所示:

要下载一个文件,可以实行如下命令:

curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/getssl.php

例如下图操作:

除了下载操作,curl也可以将文件上传到FTP做事器上,通过“-T”选项可将指定确当地文件上传到FTP做事器上。
例如:

将myfile.txt文件上传到做事器:

curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

看下图操作:

curl也可以同时上传多个文件,方法如下:

curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

curl还可以从标准输入获取内容保存到做事器指定的文件中,方法如下:

curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

9、CURL利用SSL证书访问HTTPS

有时候在通过curl下载基于https的链接文件时,会提示ssl认证失落败,或者ssl不可信,此时可以利用 -k 或者“-insecure”选项,来忽略署名认证的警告。
这样就可以让curl命令实行不屈安的SSL连接,进而去获取数据。
命令利用示例如下:

curl -k https://abc.comcurl --insecure https://www.tttao.com

标签:

相关文章

php取目次技巧_PHP获取目录下文件

1、获取目录下文件,不包括子目录//获取某目录下所有文件、目录名(不包括子目录下文件、目录名) $handler = opendi...

SEO优化 2024-12-09 阅读0 评论0