准备工作

<?php
// curl-server.php 内容

print_r($_SERVER);
<?php
// req.php 内容

print_r([
  'POST' => $_POST,
  'GET' => $_GET,
]);
vim curl-server.php  # 复制上述代码
vim req.php  # 复制上述代码
php -S 0.0.0.0:7777 # 启动服务器

参数说明

主要参数
参数作用
-A/–user-agent指定 User-Agent 信息
-b/–cookie指定 cookie
-D/–dump-header将 header 信息写入文件中
-e/–referer指定来源地址
-f/–fail失败时不显示 HTTP 错误
-o/–ouput将结果输出到文件中
-O/–remote-name把输出写到该文件中,保留远程文件的文件名
-c/–cookie-jar将响应中的 Cookie 保存到文件中
-H/–header自定义头信息
-d/–data以 POST 方式请求(默认以 GET 请求:-G/–get)
-X/–request以指定方法请求(GET/POST/PUT/DELETE/HEAD 等)
-I/–head只显示文档信息
-i/–include输出时包括 protocol 头信息
-V/–version显示版本信息
-v/–verbose显示请求过程的详细信息
-w/–write-out按指定格式输出
-h/–help查看命令帮助(或 man curl)
详细说明
  • -A (或 --user-agent)指定 User-Agent 信息

curl -A ‘Hey~~~’ 127.0.0.1:7777/curl-server.php

Array
(
    [DOCUMENT_ROOT] => /Users/js/test
    [REMOTE_ADDR] => 127.0.0.1
    [REMOTE_PORT] => 52672
    [SERVER_SOFTWARE] => PHP 5.6.33 Development Server
    [SERVER_PROTOCOL] => HTTP/1.1
    [SERVER_NAME] => 0.0.0.0
    [SERVER_PORT] => 7777
    [REQUEST_URI] => /curl-server.php
    [REQUEST_METHOD] => GET
    [SCRIPT_NAME] => /curl-server.php
    [SCRIPT_FILENAME] => /Users/js/test/curl-server.php
    [PHP_SELF] => /curl-server.php
    [HTTP_HOST] => 127.0.0.1:7777
    [HTTP_USER_AGENT] => Hey~~~                           <=== 刚才命令所指定的信息
    [HTTP_ACCEPT] => */*
    [REQUEST_TIME_FLOAT] => 1560261885.06
    [REQUEST_TIME] => 1560261885
    [argv] => Array
        (
        )
    [argc] => 0
)
  • -b(或 --cooke)指定 Cookie

curl -b ‘token=123’ 127.0.0.1:7777/curl-server.php

Array
(
    [DOCUMENT_ROOT] => /Users/js/test
    [REMOTE_ADDR] => 127.0.0.1
    [REMOTE_PORT] => 53944
    [SERVER_SOFTWARE] => PHP 5.6.33 Development Server
    [SERVER_PROTOCOL] => HTTP/1.1
    [SERVER_NAME] => 0.0.0.0
    [SERVER_PORT] => 7777
    [REQUEST_URI] => /curl-server.php
    [REQUEST_METHOD] => GET
    [SCRIPT_NAME] => /curl-server.php
    [SCRIPT_FILENAME] => /Users/js/test/curl-server.php
    [PHP_SELF] => /curl-server.php
    [HTTP_HOST] => 127.0.0.1:7777
    [HTTP_USER_AGENT] => curl/7.54.0
    [HTTP_ACCEPT] => */*
    [HTTP_COOKIE] => token=123                              <=== 刚才命令所指定的信息
    [REQUEST_TIME_FLOAT] => 1560262194.51
    [REQUEST_TIME] => 1560262194
    [argv] => Array
        (
        )
    [argc] => 0
)
  • -D(或 --dump-header)将 header 信息写入到文件中

curl -D ‘./header.log’ 127.0.0.1:7777/curl-server.php
cat ./header.log

HTTP/1.1 200 OK
Host: 127.0.0.1:7777
Connection: close
X-Powered-By: PHP/5.6.33
Content-type: text/html; charset=UTF-8
  • -e(或 --referer)指定来源地址

curl -e ‘https://blog.csdn.net/xchenhao’ 127.0.0.1:7777/curl-server.php

Array
(
    [DOCUMENT_ROOT] => /Users/js/test
    [REMOTE_ADDR] => 127.0.0.1
    [REMOTE_PORT] => 57791
    [SERVER_SOFTWARE] => PHP 5.6.33 Development Server
    [SERVER_PROTOCOL] => HTTP/1.1
    [SERVER_NAME] => 0.0.0.0
    [SERVER_PORT] => 7777
    [REQUEST_URI] => /curl-server.php
    [REQUEST_METHOD] => GET
    [SCRIPT_NAME] => /curl-server.php
    [SCRIPT_FILENAME] => /Users/js/test/curl-server.php
    [PHP_SELF] => /curl-server.php
    [HTTP_HOST] => 127.0.0.1:7777
    [HTTP_USER_AGENT] => curl/7.54.0
    [HTTP_ACCEPT] => */*
    [HTTP_REFERER] => https://blog.csdn.net/xchenhao         <=== 刚才命令所指定的信息
    [REQUEST_TIME_FLOAT] => 1560263136.78
    [REQUEST_TIME] => 1560263136
    [argv] => Array
        (
        )

    [argc] => 0
)
  • -f(或 --fail)失败时不显示 HTTP 错误

curl 127.0.0.1:7777/aaa.php # 没有该脚本

<!doctype html><html><head><title>404 Not Found</title><style>
body { background-color: #fcfcfc; color: #333333; margin: 0; padding:0; }
h1 { font-size: 1.5em; font-weight: normal; background-color: #9999cc; min-height:2em; line-height:2em; border-bottom: 1px inset black; margin: 0; }
h1, p { padding-left: 10px; }
code.url { background-color: #eeeeee; font-family:monospace; padding:0 2px;}
</style>
</head><body><h1>Not Found</h1><p>The requested resource <code class="url">/notfound.php</code> was not found on this server.</p></body></html>

curl -f 127.0.0.1:7777/aaa.php # 添加 -f 参数后

curl: (22) The requested URL returned error: 404 Not Found
  • -o(或 --output)将结果输出到文件中

curl -o ‘./result.log’ 127.0.0.1:7777/curl-server.php

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   682    0   682    0     0  92249      0 --:--:-- --:--:-- --:--:-- 97428

cat result.log

Array
(
    [DOCUMENT_ROOT] => /Users/js/test
    [REMOTE_ADDR] => 127.0.0.1
    [REMOTE_PORT] => 59291
    [SERVER_SOFTWARE] => PHP 5.6.33 Development Server
    [SERVER_PROTOCOL] => HTTP/1.1
    [SERVER_NAME] => 0.0.0.0
    [SERVER_PORT] => 7777
    [REQUEST_URI] => /curl-server.php
    [REQUEST_METHOD] => GET
    [SCRIPT_NAME] => /curl-server.php
    [SCRIPT_FILENAME] => /Users/js/test/curl-server.php
    [PHP_SELF] => /curl-server.php
    [HTTP_HOST] => 127.0.0.1:7777
    [HTTP_USER_AGENT] => curl/7.54.0
    [HTTP_ACCEPT] => */*
    [REQUEST_TIME_FLOAT] => 1560263509.3
    [REQUEST_TIME] => 1560263509
    [argv] => Array
        (
        )
    [argc] => 0
)
  • -O(或 --remote-name)把输出写到该文件中,保留远程文件的文件名

curl -O https://www.baidu.com/favicon.ico

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16958  100 16958    0     0   334k      0 --:--:-- --:--:-- --:--:--  331k

ls favicon.ico

favicon.ico
  • -c(–cookie-jar)将响应中的 Cookie 保存到文件中

curl -c cookie.log https://www.baidu.com
cat cookie.log

# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

.baidu.com      TRUE    /       FALSE   1560351411      BDORZ   27315
  • -H(–header)自定义头信息

curl -H ‘Key: Value’ -H ‘Hello: World’ 127.0.0.1:7777/curl-server.php

Array
(
    [DOCUMENT_ROOT] => /Users/js/test
    [REMOTE_ADDR] => 127.0.0.1
    [REMOTE_PORT] => 52216
    [SERVER_SOFTWARE] => PHP 5.6.33 Development Server
    [SERVER_PROTOCOL] => HTTP/1.1
    [SERVER_NAME] => 0.0.0.0
    [SERVER_PORT] => 7777
    [REQUEST_URI] => /curl-server.php
    [REQUEST_METHOD] => GET
    [SCRIPT_NAME] => /curl-server.php
    [SCRIPT_FILENAME] => /Users/js/test/curl-server.php
    [PHP_SELF] => /curl-server.php
    [HTTP_HOST] => 127.0.0.1:7777
    [HTTP_USER_AGENT] => curl/7.54.0
    [HTTP_ACCEPT] => */*
    [HTTP_KEY] => Value            <=== 刚才命令所指定的信息
    [HTTP_HELLO] => World          <=== 刚才命令所指定的信息
    [REQUEST_TIME_FLOAT] => 1560265768.02
    [REQUEST_TIME] => 1560265768
    [argv] => Array
        (
        )

    [argc] => 0
)
  • -d(或 --data)以 POST 方式请求

curl -d ‘name=xchenhao’ 127.0.0.1:7777/req.php

Array
(
    [POST] => Array
        (
            [name] => xchenhao
        )

    [GET] => Array
        (
        )
)
  • -X(或 --request)以指定方法请求

curl -v -X DELETE 127.0.0.1:7777/curl-server.php

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 7777 (#0)
> DELETE /curl-server.php HTTP/1.1    <==== 请求方式为 DELETE
> Host: 127.0.0.1:7777
> User-Agent: curl/7.54.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Host: 127.0.0.1:7777
< Connection: close
< X-Powered-By: PHP/5.6.33
< Content-type: text/html; charset=UTF-8
< 
Array
(
    [DOCUMENT_ROOT] => /Users/js/test
    [REMOTE_ADDR] => 127.0.0.1
    [REMOTE_PORT] => 55027
    [SERVER_SOFTWARE] => PHP 5.6.33 Development Server
    [SERVER_PROTOCOL] => HTTP/1.1
    [SERVER_NAME] => 0.0.0.0
    [SERVER_PORT] => 7777
    [REQUEST_URI] => /curl-server.php
    [REQUEST_METHOD] => DELETE
    [SCRIPT_NAME] => /curl-server.php
    [SCRIPT_FILENAME] => /Users/js/test/curl-server.php
    [PHP_SELF] => /curl-server.php
    [HTTP_HOST] => 127.0.0.1:7777
    [HTTP_USER_AGENT] => curl/7.54.0
    [HTTP_ACCEPT] => */*
    [REQUEST_TIME_FLOAT] => 1560270505.46
    [REQUEST_TIME] => 1560270505
    [argv] => Array
        (
        )
    [argc] => 0
)
  • -I(或 --head)只显示文档信息

curl -I 127.0.0.1:7777/curl-server.php

HTTP/1.1 200 OK
Host: 127.0.0.1:7777
Connection: close
X-Powered-By: PHP/5.6.33
Content-type: text/html; charset=UTF-8
  • -i(或 --include) 输出时包括 protocol 头信息

curl -i 127.0.0.1:7777/curl-server.php

HTTP/1.1 200 OK
Host: 127.0.0.1:7777
Connection: close
X-Powered-By: PHP/5.6.33
Content-type: text/html; charset=UTF-8

Array
(
    [DOCUMENT_ROOT] => /Users/js/test
    [REMOTE_ADDR] => 127.0.0.1
    [REMOTE_PORT] => 51869
    [SERVER_SOFTWARE] => PHP 5.6.33 Development Server
    [SERVER_PROTOCOL] => HTTP/1.1
    [SERVER_NAME] => 0.0.0.0
    [SERVER_PORT] => 7777
    [REQUEST_URI] => /curl-server.php
    [REQUEST_METHOD] => GET
    [SCRIPT_NAME] => /curl-server.php
    [SCRIPT_FILENAME] => /Users/js/test/curl-server.php
    [PHP_SELF] => /curl-server.php
    [HTTP_HOST] => 127.0.0.1:7777
    [HTTP_USER_AGENT] => curl/7.54.0
    [HTTP_ACCEPT] => */*
    [REQUEST_TIME_FLOAT] => 1560269744.36
    [REQUEST_TIME] => 1560269744
    [argv] => Array
        (
        )

    [argc] => 0
)
  • -V(或 --version)显示版本信息

curl -V

curl 7.54.0 (x86_64-apple-darwin18.0) libcurl/7.54.0 LibreSSL/2.6.5 zlib/1.2.11 nghttp2/1.24.1
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz HTTP2 UnixSockets HTTPS-proxy
  • -v(或 --verbose)显示请求过程的详细信息

curl -v -I 127.0.0.1:7777/curl-server.php

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 7777 (#0)
> HEAD /curl-server.php HTTP/1.1
> Host: 127.0.0.1:7777
> User-Agent: curl/7.54.0
> Accept: */*
> 
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Host: 127.0.0.1:7777
Host: 127.0.0.1:7777
< Connection: close
Connection: close
< X-Powered-By: PHP/5.6.33
X-Powered-By: PHP/5.6.33
< Content-type: text/html; charset=UTF-8
Content-type: text/html; charset=UTF-8

< 
* Closing connection 0
  • -w(或 --write-out)按指定格式输出信息

curl -s -w %{http_code} -o /dev/null 127.0.0.1:7777/curl-server.php

200

参考

编辑记录

06/12/2019 00:05 周三 创建

Logo

更多推荐