首页后端开发JAVA【笔记】PHP封装的不错的一个Curl方法(php curl 封装)

【笔记】PHP封装的不错的一个Curl方法(php curl 封装)

时间2023-03-24 17:24:51发布访客分类JAVA浏览973
导读:序个人对于Curl还是蛮常用的,偶然发现一个封装这么完全的,记录下。代码<?php /** * @author 教书先生 * @link https://blog.oioweb.cn * @dat...

个人对于Curl还是蛮常用的,偶然发现一个封装这么完全的,记录下。

代码

?php
    /**
     * @author 教书先生
     * @link https://blog.oioweb.cn
     * @date 2020年11月12日18:00:30
     * @msg PHPCurl封装的方法
     */
    function teacher_curl($url, $paras = array())
    {
    
        $ch = curl_init();
    
        curl_setopt($ch, CURLOPT_URL, $url);
    
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

        if (@$paras['Header']) {
    
            $Header = $paras['Header'];

        }
 else {
    
            $Header[] = "Accept:*/*";
    
            $Header[] = "Accept-Encoding:gzip,deflate,sdch";
    
            $Header[] = "Accept-Language:zh-CN,zh;
    q=0.8";
    
            $Header[] = "Connection:close";

        }
    
        curl_setopt($ch, CURLOPT_HTTPHEADER, $Header);

        if (@$paras['ctime']) {
     // 连接超时
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $paras['ctime']);

        }
 else {
    
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);

        }

        if (@$paras['rtime']) {
     // 读取超时
            curl_setopt($ch, CURLOPT_TIMEOUT, $paras['rtime']);

        }

        if (@$paras['post']) {
    
            curl_setopt($ch, CURLOPT_POST, 1);
    
            curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']);

        }

        if (@$paras['header']) {
    
            curl_setopt($ch, CURLOPT_HEADER, true);

        }

        if (@$paras['cookie']) {
    
            curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']);

        }

        if (@$paras['refer']) {

            if ($paras['refer'] == 1) {
    
                curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f=');

            }
 else {
    
                curl_setopt($ch, CURLOPT_REFERER, $paras['refer']);

            }

        }

        if (@$paras['ua']) {
    
            curl_setopt($ch, CURLOPT_USERAGENT, $paras['ua']);

        }
 else {
    
            curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0;
     WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");

        }

        if (@$paras['nobody']) {
    
            curl_setopt($ch, CURLOPT_NOBODY, 1);

        }
    
        curl_setopt($ch, CURLOPT_ENCODING, "gzip");
    
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        if (@$paras['GetCookie']) {
    
            curl_setopt($ch, CURLOPT_HEADER, 1);
    
            $result = curl_exec($ch);
    
            preg_match_all("/Set-Cookie: (.*?);
    /m", $result, $matches);
    
            $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    
            $header = substr($result, 0, $headerSize);
     //状态码
            $body = substr($result, $headerSize);
    
            $ret = [
                "Cookie" =>
     $matches, "body" =>
     $body, "header" =>
     $header, 'code' =>
     curl_getinfo($ch, CURLINFO_HTTP_CODE)
            ];
    
            curl_close($ch);
    
            return $ret;

        }
    
        $ret = curl_exec($ch);

        if (@$paras['loadurl']) {
    
            $Headers = curl_getinfo($ch);
    
            $ret = $Headers['redirect_url'];

        }
    
        curl_close($ch);
    
        return $ret;

    }
    

使用方法

GET访问

echo teacher_curl("https://api.oioweb.cn/api/beian.php?url=qq.com");
    

POST访问

echo teacher_curl("https://api.oioweb.cn/api/beian.php",[
        'post'=>
    [
            'url'=>
    'qq.com'
        ]
    ]);
    

echo teacher_curl("https://api.oioweb.cn/api/beian.php",[
        'post'=>
    'url=qq.com'
    ]);
    

携带Cookie访问

echo teacher_curl("https://api.oioweb.cn/api/beian.php?url=qq.com",[
        'cookie'=>
    'cookie内容'
    ]);
    

模拟访问来源Refer

echo teacher_curl("https://api.oioweb.cn/api/beian.php?url=qq.com",[
        'refer'=>
    'https://api.oioweb.cn'
    ]);
    

模拟UseaAgent

echo teacher_curl("https://api.oioweb.cn/api/beian.php?url=qq.com",[
        'ua'=>
    'Mozilla/5.0 (Windows NT 10.0;
     WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
    ]);
    

文件上传

echo teacher_curl("https://api.oioweb.cn/api/beian.php?url=qq.com",[
        'post'=>
    [
            'file'=>
    new CURLFile(realpath("Curl.jpg"))
        ]
    ]);
    

echo teacher_curl("https://api.oioweb.cn/api/beian.php?url=qq.com",[
        'post'=>
    new CURLFile(realpath("Curl.jpg"))
    ]);
    

获取301跳转地址

echo teacher_curl("https://mmbizurl.cn/s/RNHSo6Dek",[
        'loadurl'=>
    1
    ]);
    

查看返回Header信息

echo teacher_curl("https://api.oioweb.cn/api/beian.php?url=qq.com",[
        'header'=>
    1
    ]);
    

设置请求头信息

echo teacher_curl("https://api.oioweb.cn/api/beian.php?url=qq.com",[
        'Header'=>
    [
            'accept: text/html,application/xhtml+xml,application/xml;
    q=0.9,image/webp,image/apng,*/*;
    q=0.8,application/signed-exchange;
    v=b3
    accept-encoding: gzip, deflate, br
    accept-language: zh-CN,zh;
    q=0.9
    cache-control: max-age=0'
        ]
    ]);
    

获取请求的全部信息

echo teacher_curl("https://api.oioweb.cn/api/beian.php?url=qq.com",[
        'post'=>
    [
            'user'=>
    123456,
            'pwd'=>
    123
        ],
        'GetCookie'=>
    1
    ]);
    

最后

还有其他的功能,自己研究吧!还是很强大的

温馨提示:本文最后更新于2022-03-07,若文件或内容有错误或已失效,请在下方留言。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

phpcurlheader笔记文件上传

若转载请注明出处: 【笔记】PHP封装的不错的一个Curl方法(php curl 封装)
本文地址: https://pptw.com/jishu/155.html
Typecho Mirages 主题自定义公告样式 小鱼游戏html(放置珊瑚保护小鱼游戏)

游客 回复需填写必要信息