Linux curl的常用案例使用( 二 )

Application/x-www-form-urlencoded>} [data not shown]* upload completely sent off: 21 out of 21 bytes< HTTP/1.1 405 Not Allowed< Server: Nginx/1.14.2< Date: Thu, 18 Jul 2019 07:56:23 GMT< Content-Type: text/html< Content-Length: 173< Connection: keep-alive<{ [data not shown]* Connection #0 to host www.zhangblog.com left intact<html>抓包信息
[root@iZ28xbsfvc4Z tcpdump]# tcpdump -i any port 9000 -A -s 0

Linux curl的常用案例使用

文章插图
指定请求方法
curl -vs -X POST https://www.baidu.com | head -n1
Linux curl的常用案例使用

文章插图
curl -vs -X PUT https://www.baidu.com | head -n1
Linux curl的常用案例使用

文章插图
保存访问网页
使用linux的重定向功能保存
 curl www.baidu.com >> baidu.html
使用curl的大O选项
通过 -O, --remote-name 选项实现 。
[root@iZ28xbsfvc4Z 20190712]# curl -O https://www.baidu.com # 使用了 -O 选项,必须指定到具体的文件 错误使用curl: Remote file name has no length!curl: try 'curl --help' or 'curl --manual' for more information[root@iZ28xbsfvc4Z 20190712]# curl -O https://www.baidu.com/index.html # 使用了 -O 选项,必须指定到具体的文件 正确使用% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed100 2443 100 2443 0 0 13289 0 --:--:-- --:--:-- --:--:-- 13349使用curl的小o选项
通过 -o, --output <file> 选项实现 。
[root@iZ28xbsfvc4Z 20190713]# curl -o sina.txt https://www.sina.com.cn/ # 单个操作[root@iZ28xbsfvc4Z 20190713]# ll-rw-r--r-- 1 root root 154 Jul 13 21:06 sina.txt[root@iZ28xbsfvc4Z 20190703]# curl "http://www.{baidu,douban}.com" -o "site_#1.txt" # 批量操作,注意curl 的地址需要用引号括起来[1/2]: http://www.baidu.com --> site_baidu.txt% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed100 2381 100 2381 0 0 46045 0 --:--:-- --:--:-- --:--:-- 46686[2/2]: http://www.douban.com --> site_douban.txt100 162 100 162 0 0 3173 0 --:--:-- --:--:-- --:--:-- 3173[root@iZ28xbsfvc4Z 20190703]#[root@iZ28xbsfvc4Z 20190703]# lltotal 220-rw-r--r-- 1 root root 2381 Jul 4 16:53 site_baidu.txt-rw-r--r-- 1 root root 162 Jul 4 16:53 site_douban.txt允许不安全访问
当我们使用curl进行https访问访问时,如果SSL证书是我们自签发的证书,那么这个时候需要使用 -k, --insecure 选项,允许不安全的访问 。
[root@iZ28xbsfvc4Z ~]# curl https://140.205.16.113/ # 被拒绝curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.[root@iZ28xbsfvc4Z ~]#[root@iZ28xbsfvc4Z ~]# curl -k https://140.205.16.113/ # 允许执行不安全的证书连接<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>403 Forbidden</title></head><body bgcolor="white"><h1>403 Forbidden</h1><p>You don't have permission to access the URL on this server.<hr/>Powered by Tengine</body></html>获取HTTP响应状态码
在脚本中,这是很常见的测试网站是否正常的用法 。
通过 -w, --write-out <format> 选项实现 。
[root@iZ28xbsfvc4Z 20190713]# curl -o /dev/ -s -w %{http_code} https://baidu.com302[root@iZ28xbsfvc4Z 20190713]#[root@iZ28xbsfvc4Z 20190713]#[root@iZ28xbsfvc4Z 20190713]# curl -o /dev/ -s -w %{http_code} https://www.baidu.com200[root@iZ28xbsfvc4Z 20190713]#指定proxy服务器以及其端口
很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),幸运的是curl通过使用 -x, --proxy <[protocol://][user:password@]proxyhost[:port]> 选项来支持设置代理 。
 curl -x 192.168.100.100:1080 https://www.baidu.com
模仿浏览器访问
有些网站需要使用特定的浏览器去访问他们,有些还需要使用某些特定的浏览器版本 。我们可以通过 -A, --user-agent <agent string> 或者 -H, --header <header> 选项实现模拟浏览器访问 。
curl -A "Mozilla/5.0 (windows NT 10.0; Win64; x64) Chrome/75.0.3770.999" http://www.zhangblog.com/2019/06/24/domainexpire/ 或者curl -H 'User-Agent: Mozilla/5.0' http://www.zhangblog.com/2019/06/24/domainexpire/伪造referer(盗链)
有些网站的网页对http


推荐阅读