• phpcurl函数类模拟Curl get post header refer携带Cookie模拟访问来源Refer模拟UseaAgent


    phpCurl函数类,网上很多,这里分享一个万能phpcurl,包含phpcurl函数类模拟Curl get post header refer携带Cookie模拟访问来源Refer模拟UseaAgent
    <?php
    /**
     * @author 教书先生
     * @link https://blog.oioweb.cn
     * @date 2021年6月13日10:29:04
     * @msg PHPCurl封装的方法
     */
    function teacher_curl($url, $paras = [])
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        if (isset($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 (isset($paras['ctime'])) { // 连接超时
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $paras['ctime']);
        } else {
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        }
        if (isset($paras['rtime'])) { // 读取超时
            curl_setopt($ch, CURLOPT_TIMEOUT, $paras['rtime']);
        }
        if (isset($paras['post'])) {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']);
        }
        if (isset($paras['header'])) {
            curl_setopt($ch, CURLOPT_HEADER, true);
        }
        if (isset($paras['cookie'])) {
            curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']);
        }
        if (isset($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 (isset($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 (isset($paras['nobody'])) {
            curl_setopt($ch, CURLOPT_NOBODY, 1);
        }
        curl_setopt($ch, CURLOPT_ENCODING, "gzip");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if (isset($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 (isset($paras['loadurl'])) {
            $Headers = curl_getinfo($ch);
            if (isset($Headers['redirect_url'])) {
                $ret = $Headers['redirect_url'];
            } else {
                $ret = false;
            }
        }
        curl_close($ch);
        return $ret;
    }

    使用方法

    GET访问

    echo teacher_curl("https://kuaidi.jsonin.com/JT5124806639322.html");

    POST访问

    echo teacher_curl("https://kuaidi.ipip5.com",[
        'post'=>[
            'dh'=>'JT5124806639322'
        ]
    ]);

    echo teacher_curl("https://kuaidi.jsonin.com/",[
        'post'=>'dh=JT5124806639322'
    ]);

    携带Cookie访问

    echo teacher_curl("https://www.xiaodoubi.com/",[
        'cookie'=>'cookie内容'
    ]);

    模拟访问来源Refer

    echo teacher_curl("https://www.xiaodoubi.com/",[
        'refer'=>'https://www.xiaof.com'
    ]);

    模拟UseaAgent

    echo teacher_curl("https://www.xiaodoubi.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://www.ipip5.com/",[
        'post'=>[
            'file'=>new CURLFile(realpath("Curl.jpg"))
        ]
    ]);

    echo teacher_curl("https://www.ipip5.com/",[
        'post'=>new CURLFile(realpath("Curl.jpg"))
    ]);

    获取301跳转地址

    echo teacher_curl("https://www.xiaof.com",[
        'loadurl'=>1
    ]);

    设置请求头信息

    echo teacher_curl("https://www.ipip5.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://www.ipip5.com/today/api.php?type=json",[
        'post'=>[
            'user'=>123456,
            'pwd'=>123
        ],
        'GetCookie'=>1
    ]);

    我自用的

    function curl($url){ //Curl GET
        $ch = curl_init();     // Curl 初始化
        $timeout = 30;     // 超时时间:30s
        $ua='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';// 伪造抓取 UA
        $ip = mt_rand(11, 191) . "." . mt_rand(0, 240) . "." . mt_rand(1, 240) . "." . mt_rand(1, 240);
        curl_setopt($ch, CURLOPT_URL, $url);// 设置 Curl 目标
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// Curl 请求有返回的值
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);// 设置抓取超时时间
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// 跟踪重定向
        curl_setopt($ch, CURLOPT_REFERER, 'https://www.baidu.com/');//模拟来路
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.$ip, 'CLIENT-IP:'.$ip));  //伪造IP
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);// 伪造ua
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);// https请求 不验证证书和hosts
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);//强制协议为1.0
        curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );//强制使用IPV4协议解析域名
        $content = curl_exec($ch);
        curl_close($ch);// 结束 Curl
        return $content;// 函数返回内容
    }
    $url = 'https://www.xiaodoubi.com/';
    echo curl($url);

    博主利用这两个phpcurl函数做了一个在线工具:在线post在线get请求调试 https://post.jsonin.com

  • 相关阅读:
    LeetCode 931. Minimum Falling Path Sum
    LeetCode 1. Two Sum
    LeetCode 72. Edit Distance
    命令行发送SMTP协议邮件(163邮箱)
    商品销量分析及预测系统测试心得
    商品销量预测 第一次迭代总结
    【Codeforces 126B】Password
    【Codeforces 466C】Number of Ways
    【CodeCraft-19 and Codeforces Round #537 (Div. 2) C】Creative Snap
    【Codeforces Global Round 1 E】Magic Stones
  • 原文地址:https://www.cnblogs.com/daxiangxm/p/phpcurl.html
Copyright © 2020-2023  润新知