1、curl -I 查看HTTP 响应头信息

curl -I https://proxy.mimvp.com

yg-mac:~ homer$ curl -I https://proxy.mimvp.com
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 31 May 2018 03:51:08 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: PHPSESSID=d4kf789gvurb10p7g5pcqd80o6; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: proxys-bj

 

curl 请求不要缓存

curl -H 'Cache-Control: no-cache' -I https://proxy.mimvp.com
# curl -H 'Cache-Control: no-cache' -I https://proxy.mimvp.com 
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 15 Oct 2018 08:50:31 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Set-Cookie: PHPSESSID=62io4pihlkhomnrv37g8978pj5; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: proxys-bj

说明:上面这种 curl 命令禁用缓存的格式,对于服务器或代理端有缓存的情况也是无效的

因此,我们可以想到另一种不要缓存的方式:请求动态网址,即每次请求的参数不同

例如:

curl "https://proxy.mimvp.com?foo123"

若需要每次请求参数不同,可以用动态的时间作为请求参数

curl "https://proxy.mimvp.com?$(date +%s)"

 

 

2、HTTP 响应头的信息

1) HTTP 返回码

  • 1xx:client的请求server已经接收,正在处理
  • 2xx:成功  表示 client请求,server端已经接收、理解并处理
  • 3xx:client 请求被重定向其他的server【其他的URL】
  • 4xx:表示client请求不正确,server不能识别
  • 5xx:server端服务不正常

2) Cache-Control

web 站点对缓存的设置;

  • no-cache:表示server 不允许client 设置缓存;client每次请求都需要请求后端的服务
  • max-age:server设置页面的缓存时间;单位是秒  即:1个小时内此client再访问 www.mimvp.com 用刚才的缓存;不再重复访问后台服务器
  • private must-revalidate

3) Connection

server 是否支持长连接;如果keep-alive 说明web的server 支持长连接。

但是TCP 的长连接是双向的;必须是client和server 都支持长连接;才可以建立长连接。

一般client 【浏览器】都是默认支持长连接;所以只要sever端支持长连接;就可以建立长连接。

 

 

3、curl 发送Get/Post 请求

1)get 请求

我们平时用的最多的就是curl 不加任何的参数,其实这样就是get请求;把参数都放在http://xx 后面

curl "https://proxy.mimvp.com/freesecret.php?proxy=in_hp&sort=&page=5"

 

2)post 请求

curl -d 'post_data=i_love_mimvp.com' https://proxy.mimvp.com/ip.php

curl -H "Content-Type:application/json" -X POST -d '{"post_data":"i_live_mimvp.com"}' 'https://proxy.mimvp.com/ip.php'

 

3)上传文件

curl -F 'csl=@/home/xxxx/xxx.csl' -F 'tag=xxx' -F 'category=full' "https://proxy.mimvp.com/demo/"

 

 

curl HTTP Header

对于"User-Agent", "Cookie", "Host"这类标准的HTTP头部字段,通常会有另外一种设置方法。

curl命令提供了特定的选项来对这些头部字段进行设置:

  • -A (or --user-agent): 设置 "User-Agent" 字段.
  • -b (or --cookie): 设置 "Cookie" 字段.
  • -e (or --referer): 设置 "Referer" 字段.

例如,以下两个命令是等效的。这两个命令同样都对HTTP头的"User-Agent"字符串进行了更改。

$ curl -H "User-Agent: my browser" "https://proxy.mimvp.com/demo/"
$ curl -A "my browser" "https://proxy.mimvp.com/demo/"

 

wget是另外一个类似于curl,可以用来获取URL的命令行工具。

wget也一样允许你使用一个自定义的HTTP头。

点击 这里 查看wget命令的详细信息。

 

1、GET

1)with JSON

curl -i -H "Accept: application/json" -H "Content-Type: application/json" https://proxy.mimvp.com/ip.php

 

2)with XML

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET https://proxy.mimvp.com/ip.php

 

2、POST

1)For posting data

curl --data "param1=value1&param2=value2" https://proxy.mimvp.com/ip.php

 

2)For file upload

curl --form "fileupload=@filename.txt" https://proxy.mimvp.com/ip.php

 

3)RESTful HTTP Post

curl -X POST -d @filename https://proxy.mimvp.com/ip.php

 

4)For logging into a site (auth)

curl -d "username=admin&password=admin&submit=Login" --dump-header headers https://proxy.mimvp.com/ip.php curl -L -b headers https://proxy.mimvp.com/ip.php

 

 

参考推荐

Linux curl 命令模拟 POST/GET 请求  (推荐

shell命令curl 检测代理是否可用          (推荐

PHP 模拟POST提交2种方法                (推荐

PHP 异步后台处理

米扑代理使用示例

Linux 命令大全 curl 命令