shell 之 curl 用法

curl 模拟访问

curl -o page1.html http://www.example.com/page/1/ -o page2.html http://www.example.com/page/2/

# 只显示 HTTP头部信息,不显示网页文件的内容
curl   --user-agent "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" -I http://www.example.com/example.html 

# 显示HTTP头部信息和网页文件的内容
curl   --user-agent "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" -i http://www.example.com/example.html 

# 使用重定向将网页的内容保存到本地文件
curl   --user-agent "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" -i http://www.example.com/example.html  >index.html

# 使用-o/-O将文件的内容保存到本地文件
curl -o index.html  --user-agent "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" -i http://www.example.com/example.html

# -O URL中的文件名会被用作保存输出的文件名
curl -O --user-agent "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/example.html)" -i http://www.example.com/example.html

# 同时下载多个文件 -o/-O
curl -O http://www.example.com/page/2/ -O http://www.example.com/page/3/
curl -o page1.html http://www.example.com/page/1/ -o page2.html http://www.example.com/page/2/
# -A  自定义user-Agent
# -H 自定义header

# 获取访问URL的时间,包的大小,平均下载速度
## 使用别名来简化命令
alias curlb='curl -s -o /dev/null -w "19-10-25T11:24:10+08:00 %{http_code} %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_redirect} %{time_starttransfer} %{size_request} %{size_download} %{speed_download} %{time_total}\n"'
alias curld='curl -s -o /dev/null -w "
              请求时间:  19-10-25T11:24:10+08:00
            HTTP状态码:  %{http_code}
           DNS解析时间:  %{time_namelookup} s
          建立连接时间:  %{time_connect} s
          连接完成时间:  %{time_appconnect} s
          准备传输时间:  %{time_pretransfer} s
            重定向时间:  %{time_redirect} s
          传输开始时间:  %{time_starttransfer} s
        请求数据包大小:  %{size_request} Bytes
        下载数据包大小:  %{size_download} Bytes
          平均下载速度:  %{speed_download} Bytes/s
                         --------------
            消耗总时长:  %{time_total} s \n
"'

curl 案例

# 1.使用curl请求源站,协议为http,IP为1.1.1.1,域名为www.baidu.com。
curl -H "Host:www.baidu.com" http://1.1.1.1

# 2.使用curl请求源站,协议为https,IP为1.1.1.1,域名为www.baidu.com。并且忽略证书
curl -k -H "Host:www.baidu.com" https://1.1.1.1

# 3.使用curl请求源站,协议为http,IP为1.1.1.1,域名为www.baidu.com。只要得到头部信息
curl -I -H "Host:www.baidu.com" http://1.1.1.1

# 4.使用curl请求源站,协议为http,IP为1.1.1.1,域名为www.baidu.com。 只要得到头部信息,源站有可能返回了302跳转,要求跟随跳转
curl -IL -H "Host:www.baidu.com" http://www.baidu.com

# 5.使用curl请求源站,协议为http,IP为1.1.1.1,域名为www.baidu.com。 只要得到头部信息,并且显示详细的请求过程
curl -Ivs -H "Host:www.baidu.com" http://1.1.1.1
curl --trace output.txt -I -H "Host:www.baidu.com" http://1.1.1.1

curl命令判断是否携带SNI

出现502,判断是否因为没有带SNI而导致的出现返回502号界面

# curl带SNI访问https
curl -v --resolve www.baidu.com:443:14.215.177.39  https://www.baidu.com -vv
# 判断curl访问https是否正常 
curl -I -H "Host: www.baidu.com" https://14.215.177.39 -vv
## curl这个命令里面的-v --resolve的具体含义:
## --resolve 后面接的是:  domain:[443]:ipaddress URL(SSL连接:如“https://)、
## --resolve HOST:PORT:ADDRESS  将 HOST:PORT 强制解析到 ADDRESS
## -v, --verbose       显示详细操作信息

查询本机公网ip

curl myip.ipip.net
curl myipip.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要通过Shell脚本使用curl发送POST请求,可以使用以下方法: 1. 首先,你需要编写一个Shell脚本文件,并确保已经安装了curl工具。在脚本中,你可以使用curl命令来发送HTTP请求。 2. 在脚本中,你可以使用变量来存储请求的参数和请求的URL。可以使用read命令来获取用户输入的请求参数和URL。 3. 接下来,使用curl命令发送POST请求。你可以使用-X选项指定请求的方法为POST,并使用-d选项来指定请求的参数。例如,使用-d选项可以将请求参数作为字符串传递给curl命令。 4. 最后,你可以将curl的输出结果保存到日志文件中。你可以使用重定向操作符(>>)将结果追加到日志文件中。例如,echo命令可以将请求的类型、请求的参数、请求的URL和curl的输出结果写入日志文件。 以下是一个示例的Shell脚本代码,用于通过curl发送POST请求并将结果保存到日志文件中: ```shell #!/bin/bash # 设置变量 req_param="" url="" log_dir="log" log_file="$log_dir/curl-$(date +%F).log" cmd="POST" # 获取用户输入的请求参数 echo "请输入请求参数request body:" read -e req_param # 获取用户输入的URL echo "请输入URL:" while true do read -e url if [ "$url" ] then break else echo "URL输入有误,请重新输入:" fi done # 发送POST请求 result=$(curl -X POST -d "$req_param" "$url") # 判断日志文件夹是否存在,不存在则创建 if [ ! -e "$log_dir" ] then mkdir -p "$log_dir" fi # 将请求类型、请求参数、请求URL和curl的输出结果写入日志文件 echo "$(date '+%F %H:%M:%S.%N') request-type:$cmd, request-body:$req_param request-url:$url , result:$result" >> "$log_file" # 输出结果 echo "$result" ``` 请注意,上述代码中的变量和命令都是根据你提供的引用内容编写的。你可以根据自己的需求进行修改和调整。 希望以上信息能够帮助到你。如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Richie-Hao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值