shell--curl 命令详解

陆海阳
2023-12-01

接口模拟

<?php
#test.php 
#绑定host: www.wolf.com

//curl 相关测试
session_start();
$n = isset($_GET['n']) ? intval($_GET['n']) : 1;
echo $n, PHP_EOL;
empty($_COOKIE) OR $output[] = 'COOKIE:'.print_r($_COOKIE, 1);
empty($_POST) OR $output[] = 'POST:'.print_r($_POST, 1);
array_walk($_SERVER, function (&$v, $k){
    strpos($k, 'HTTP_CUSTOM') === 0 OR $v = '';
});
$output[] = 'CUSTOM_HEADER:'.print_r(array_filter($_SERVER), 1);
setCookie('cookie_jar', rand(100,1000), time() + 600);
echo implode(PHP_EOL, $output), file_get_contents('php://input');

url

    url 支持多个与基本的正则,见下示例

curl http://www.wolf.com/work/test.php?n=[1-10]# n=1,n=2...n=10
curl http://www.wolf.com/work/test.php?n=[1-10:3] # 设定步长为3,n=1,n=4...
curl http://www.wolf.com/work/test.php?n={1,3}# n=1,n=3

#结合参数-0使用可以获取
curl http://{chdy,www}.wolf.com/work/test.php?n=[1,10] -o /tmp/_#1/_#2.log

Request 

    请求构造,诸如常用header ,cookie ,请求方式,长连接、超时控制、重定向、缓存控制

#######################
  # -H  --header       设定单个header,可以用多个。值为空的,结尾得用分号  -H "name;" 
  # -A  --user-agent   后跟字符串
  # -e  --referer      Referer URL
#######################
curl -H "custom-name:chdy" -A "Mozilla/chorm5.6" -e "www.baidu.com"  -v http://www.wolf.com/work/test.php

#######################
  # -c  --cookie-jar   将服务端响应的cookie 写入到文件
  # -b  --cookie      string(多个用分号间隔)或 cookie格式的文件  每个类型只有一个生效
#######################
curl -c /tmp/wolf.jar http://www.wolf.com/work/test.php
curl -b "ca=1;cb=2" -b /tmp//tmp/wolf.jar http://www.wolf.com/work/test.php

#######################
  # -d  --data        http post(x-www-form)如 pa=1&pb=2, -G get 方式请求
  # --data-binary  --data-urlencode  --data-ascii 用来传递原生的数据
  # -m  --max-time    最大执行秒数
  # -L  --location    自动跟踪重定向
  # -K  --config      加载配置文件,不用再选项中设定了
  # --keepalive-time seconds    长连接秒数
  # connect-timeout seconds     最大连接时长
#######################
curl -d "pa=1&pb=2" http://www.wolf.com/work/test.php

Response

   响应构造,诸如保存结果,只保存响应头,定义输出内容

#######################
  # -D  --dump-header file   将响应头保存到指定文件
  # -I  --head               只输出header响应头
  # -i  --include            输出内容中包含header响应头
  # -N  --no-buffer          禁用缓存
  # -o  --output file        重定向输出内容到文件
#######################
curl -N -I http://www.wolf.com/work/test.php

Debug

    是否静默输出、打开调试模式


#######################
  # -s  --silent      不输出任何内容
  # -v  --verbose     输出请求和响应的详细信息
#######################
curl -v http://www.wolf.com/work/test.php

 

转载于:https://my.oschina.net/u/3379766/blog/1585736

 类似资料: