curl head请求_cURL综合传输命令工具

b1b35bd8dfc87c5410bcaf3433b5bcf0.png

cURL是一个利用URL语法在命令行下工作的文件传输工具,cURL是支持上传和下载的所以也被称为如题:cURL综合传输命令工具。

cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP等等,就不一一列举了,可以直接参考cURL文档 https://curl.haxx.se/docs/。

货比三家才能体现最优选择,对比一下看看呀

6d5dd1ad5131f9de93cb188b984239e9.png
cURL支持各类型操作姿势

没有对比就没有伤害,从图可以看出各种类型通讯协议在cURL模式下都是支持的,支持率高达90%相当可观呀


curl命令语法及参数选项

curl [options...] <url>

-a/--append	                            #上传文件时,附加到目标文件
-A/--user-agent <string>	            #设置用户代理发送给服务器
-anyauth	                            #可以使用“任何”身份验证方法
-b/--cookie <name=string/file>	            #cookie字符串或文件读取位置
     --basic	                            #使用HTTP基本验证
-B/--use-ascii	                            #使用ASCII /文本传输
-c/--cookie-jar <file>	                    #操作结束后把cookie写入到这个文件中
-C/--continue-at <offset>	            #断点续转
-d/--data <data>	                    #HTTP POST方式传送数据
     --data-ascii <data>	            #以ascii的方式post数据
     --data-binary <data>	            #以二进制的方式post数据
     --negotiate	                    #使用HTTP身份验证
     --digest	                            #使用数字身份验证
     --disable-eprt	                    #禁止使用EPRT或LPRT
     --disable-epsv	                    #禁止使用EPSV
-D/--dump-header <file>	                    #把header信息写入到该文件中
     --egd-file <file>	                    #为随机数据(SSL)设置EGD socket路径
     --tcp-nodelay	                    #使用TCP_NODELAY选项
-e/--referer	                            #来源网址
-E/--cert <cert[:passwd]>	            #客户端证书文件和密码 (SSL)
     --cert-type <type>	                    #证书文件类型 (DER/PEM/ENG) (SSL)
     --key <key>	                    #私钥文件名 (SSL)
     --key-type <type>	                    #私钥文件类型 (DER/PEM/ENG) (SSL)
     --pass <pass>	                    #私钥密码 (SSL)
     --engine <eng>	                    #加密引擎使用 (SSL). "--engine list" for list
     --cacert <file>	                    #CA证书 (SSL)
     --capath <directory>	            #CA目录 (made using c_rehash) to verify peer against (SSL)
     --ciphers <list>	                    #SSL密码
     --compressed	                    #要求返回是压缩的形势 (using deflate or gzip)
     --connect-timeout <seconds>	    #设置最大请求时间
     --create-dirs	                    #建立本地目录的目录层次结构
     --crlf	                            #上传是把LF转变成CRLF
-f/--fail	                            #连接失败时不显示http错误
     --ftp-create-dirs	                    #如果远程目录不存在,创建远程目录
     --ftp-method [multicwd/nocwd/singlecwd]#控制CWD的使用
     --ftp-pasv	                            #使用 PASV/EPSV 代替端口
     --ftp-skip-pasv-ip	                    #使用PASV的时候,忽略该IP地址
     --ftp-ssl	                            #尝试用 SSL/TLS 来进行ftp数据传输
     --ftp-ssl-reqd	                    #要求用 SSL/TLS 来进行ftp数据传输
-F/--form <name=content>	            #模拟http表单提交数据
     --form-string <name=string>	    #模拟http表单提交数据
-g/--globoff	                            #禁用网址序列和范围使用{}和[]
-G/--get	                            #以get的方式来发送数据
-H/--header <line>	                    #自定义头信息传递给服务器
     --ignore-content-length	            #忽略的HTTP头信息的长度
-i/--include	                            #输出时包括protocol头信息
-I/--head	                            #只显示请求头信息
-j/--junk-session-cookies	            #读取文件进忽略session cookie
     --interface <interface>	            #使用指定网络接口/地址
     --krb4 <level>	                    #使用指定安全级别的krb4
-k/--insecure	                            #允许不使用证书到SSL站点
-K/--config	                            #指定的配置文件读取
-l/--list-only	                            #列出ftp目录下的文件名称
     --limit-rate <rate>	            #设置传输速度
     --local-port<NUM>	                    #强制使用本地端口号
-m/--max-time <seconds>	                    #设置最大传输时间
     --max-redirs <num>	                    #设置最大读取的目录数
     --max-filesize <bytes>	            #设置最大下载的文件总量
-M/--manual	                            #显示全手动
-n/--netrc	                            #从netrc文件中读取用户名和密码
     --netrc-optional	                    #使用 .netrc 或者 URL来覆盖-n
     --ntlm	                            #使用 HTTP NTLM 身份验证
-N/--no-buffer	                            #禁用缓冲输出
-o/--output	                            #把输出写到该文件中
-O/--remote-name	                    #把输出写到该文件中,保留远程文件的文件名
-p/--proxytunnel	                    #使用HTTP代理
     --proxy-anyauth	                    #选择任一代理身份验证方法
     --proxy-basic	                    #在代理上使用基本身份验证
     --proxy-digest	                    #在代理上使用数字身份验证
     --proxy-ntlm	                    #在代理上使用ntlm身份验证
-P/--ftp-port <address>	                    #使用端口地址,而不是使用PASV
-q	                                    #作为第一个参数,关闭 .curlrc
-Q/--quote <cmd>	                    #文件传输前,发送命令到服务器
-r/--range <range>	                    #检索来自HTTP/1.1或FTP服务器字节范围
--range-file	                            #读取(SSL)的随机文件
-R/--remote-time	                    #在本地生成文件时,保留远程文件时间
     --retry <num>	                    #传输出现问题时,重试的次数
     --retry-delay <seconds>	            #传输出现问题时,设置重试间隔时间
     --retry-max-time <seconds>	            #传输出现问题时,设置最大重试时间
-s/--silent	                            #静默模式。不输出任何东西
-S/--show-error	                            #显示错误
     --socks4 <host[:port]>	            #用socks4代理给定主机和端口
     --socks5 <host[:port]>	            #用socks5代理给定主机和端口
-t/--telnet-option <OPT=val>	            #Telnet选项设置
     --trace <file>	                    #对指定文件进行debug
     --trace-ascii <file>	            #Like --跟踪但没有hex输出
     --trace-time	                    #跟踪/详细输出时,添加时间戳
-T/--upload-file <file>	                    #上传文件
     --url <URL>	                    #Spet URL to work with
-u/--user <user[:password]>	            #设置服务器的用户和密码
-U/--proxy-user <user[:password]>	    #设置代理用户名和密码
-w/--write-out [format]	                    #什么输出完成后
-x/--proxy <host[:port]>	            #在给定的端口上使用HTTP代理
-X/--request <command>	                    #指定什么命令
-y/--speed-time	                            #放弃限速所要的时间,默认为30
-Y/--speed-limit	                    #停止传输速度的限制,速度时间

语法参数命令参考文档见 https://curl.haxx.se/docs/manpage.html


PHP curl sample

<?php
/**
 * curl GET请求
 * @param string $url
 * @param array $parame
 * @param number $timeout
 * @return array
 */
function httpCurlGet($url, $parame = [], $timeout = 0)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parame));
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return  dataFormatCheck($result);
}

/**
 * curl POST请求
 * @param string $url
 * @param array $parame
 * @param number $timeout
 * @return array
 */
function httpCurlPost($url, $parame = [], $timeout = 0)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type:text/xml; charset=utf-8"
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $parame);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return  dataFormatCheck($result);
}

/**
 * 数据格式检查
 * @param $data
 * @return array
 */
function dataFormatCheck($data){
    if (is_string($data)) {
        //JSON判断
        @json_decode($data);
        if (json_last_error() === JSON_ERROR_NONE) {
            return json_decode($data, JSON_UNESCAPED_UNICODE);
        }
        //XML判断
        $xml_parser = xml_parser_create();
        if(!xml_parse($xml_parser,$data,true)){
            xml_parser_free($xml_parser);
            return false;
        }else {
            return json_decode(json_encode(simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
        }
    }
    //直接返回
    return $data;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值