curl通用方法,可发送get请求和post请求

131 阅读1分钟

/**

 * curl通用方法,可发送get请求和post请求

 * @param $post

 * @param $url

 * @param string $type

 * @param array $header

 * @param bool $isUserAgent

 * @return bool|mixed|string

 */

function curlResult(post,post,url,type=POST,type = 'POST', cookie = '', header=[],header = [], isUserAgent = true)

{

    $user_agent = [

        'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +www.google.com/bot.html)',

        'Mozilla/5.0 (compatible; Baiduspider/2.0; +www.baidu.com/search/spid…)',

        'Mozilla/5.0 (Linux; U; Android 7.0; zh-CN; SM-G9550 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.7.0.953 Mobile Safari/537.36',

        'Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; STF-AL00 Build/HUAWEISTF-AL00) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.9 Mobile Safari/537.36',

        'Mozilla/5.0 (Linux; Android 6.0; MX6 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 MicroMessenger/6.5.13.1100 NetType/4G Language/zh_CN',

        'Mozilla/5.0 (iPhone 84; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.0 MQQBrowser/7.8.0 Mobile/14G60 Safari/8536.25 MttCustomUA/2 QBWebViewType/1 WKType/1',

    ];

    $ch = curl_init();

    if($type == 'GET')

    {

        curl_setopt(ch,CURLOPTURL,ch, CURLOPT_URL, url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch, CURLOPT_HEADER, 0);

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

        curl_setopt(ch,CURLOPTUSERAGENT,ch, CURLOPT_USERAGENT, user_agent[array_rand($user_agent, 1)]);

        if(!empty($header))

        {

            curl_setopt(ch,CURLOPTHTTPHEADER,ch, CURLOPT_HTTPHEADER, header);

        }

        if(!empty($cookie))

        {

            curl_setopt(ch,CURLOPTCOOKIE,ch, CURLOPT_COOKIE, cookie);

        }

        result=curlexec(result = curl_exec(ch);

        curl_close($ch);

    }

    elseif($type == 'DEFAULT')

    {

        $defaults = array(

            CURLOPT_POST => 1,

            CURLOPT_HEADER => 0,

            CURLOPT_URL => $url,

            CURLINFO_HEADER_OUT => true,

            CURLOPT_FRESH_CONNECT => 1,

            CURLOPT_RETURNTRANSFER => 1,

            CURLOPT_FORBID_REUSE => 1,

            CURLOPT_SSL_VERIFYPEER => false,

            CURLOPT_TIMEOUT => 120,

            CURLOPT_USERAGENT => useragent[arrayrand(user_agent[array_rand(user_agent, 1)],

            CURLOPT_POSTFIELDS => $post

        );

        if (!empty($header))

        {

            defaults[CURLOPTHTTPHEADER]=defaults[CURLOPT_HTTPHEADER] = header;

        }

        if (!empty($cookie))

        {

            defaults[CURLOPTCOOKIE]=defaults[CURLOPT_COOKIE] = cookie;

        }

        $options = array();

        curl_setopt_array(ch,(ch, (options + $defaults));

        result=curlexec(result = curl_exec(ch);

        curl_close($ch);

    }

    elseif($type == 'JSON')

    {

        $headers = ["Content-Type: application/json","charset=utf-8"];

        if($header)

        {

            headers=arraymerge(headers = array_merge(headers,$header);

        }

        $defaults = array(

            CURLOPT_POST => 1,

            CURLOPT_HEADER => 0,

            CURLOPT_URL => $url,

            CURLINFO_HEADER_OUT => true,

            CURLOPT_FRESH_CONNECT => 1,

            CURLOPT_RETURNTRANSFER => 1,

            CURLOPT_FORBID_REUSE => 1,

            CURLOPT_SSL_VERIFYPEER => false,

            CURLOPT_TIMEOUT => 120,

            CURLOPT_USERAGENT => useragent[arrayrand(user_agent[array_rand(user_agent, 1)],

            CURLOPT_POSTFIELDS => json_encode((object)$post),

            CURLOPT_HTTPHEADER => $headers

        );

        if (!empty($cookie))

        {

            defaults[CURLOPTCOOKIE]=defaults[CURLOPT_COOKIE] = cookie;

        }

        $options = array();

        curl_setopt_array(ch,(ch, (options + $defaults));

        result=curlexec(result = curl_exec(ch);

        curl_close($ch);

    }

    else

    {

        $defaults = array(

            CURLOPT_POST => 1,

            CURLOPT_HEADER => 0,

            CURLOPT_URL => $url,

            CURLINFO_HEADER_OUT => true,

            CURLOPT_FRESH_CONNECT => 1,

            CURLOPT_RETURNTRANSFER => 1,

            CURLOPT_FORBID_REUSE => 1,

            CURLOPT_SSL_VERIFYPEER => false,

            CURLOPT_TIMEOUT => 120,

            CURLOPT_USERAGENT => useragent[arrayrand(user_agent[array_rand(user_agent, 1)],

            CURLOPT_POSTFIELDS => http_build_query($post)

        );

        if (!empty($header))

        {

            defaults[CURLOPTHTTPHEADER]=defaults[CURLOPT_HTTPHEADER] = header;

        }

        if (!empty($cookie))

        {

            defaults[CURLOPTCOOKIE]=defaults[CURLOPT_COOKIE] = cookie;

        }

        $options = array();

        curl_setopt_array(ch,(ch, (options + $defaults));

        result=curlexec(result = curl_exec(ch);

        curl_close($ch);

    }

    result=jsondecode(result = json_decode(result,true);

    return $result;

}