- N +

PHP curl函数

/**
 * CURL请求函数:支持POST及基本header头信息定义
 * @param string $api_url 目标url
 * @param array $post_data post参数
 * @param array $header 头信息数组
 * @param string $referer_url 来源url
 * @return array [code:状态码(200执行成功、400执行异常) | data:数据]
 */
function curl_request($api_url, $post_data = [], $header = [], $referer_url = '')
{
    $ch = curl_init();//初始化CURL句柄
    curl_setopt($ch, CURLOPT_URL, $api_url);

    /**配置返回信息**/
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//获取的信息以文件流的形式返回,不直接输出
    curl_setopt($ch, CURLOPT_HEADER, 0);//不返回header部分

    /**配置超时**/
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);//连接前等待时间,0不等待
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);//连接后等待时间,0不等待。如下载mp3

    /**配置页面重定向**/
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//跟踪爬取重定向页面
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);//指定最多的HTTP重定向的数量
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer

    /**配置Header、请求头、协议信息**/
    if ($header && is_array($header)) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    }
    curl_setopt($ch, CURLOPT_ENCODING, "");//Accept-Encoding编码,支持"identity"/"deflate"/"gzip",空支持所有编码
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);//模拟浏览器头信息
    $referer_url && curl_setopt($ch, CURLOPT_REFERER, $referer_url);//伪造来源地址
    //curl_setopt( $ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );    //设置curl使用的HTTP协议

    /**配置POST请求**/
    if ($post_data && is_array($post_data)) {
        curl_setopt($ch, CURLOPT_POST, 1);//支持post提交数据
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));//
    }

    /**禁止证书验证防止curl输出空白**/
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//禁止 cURL 验证对等证书
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//是否检测服务器的域名与证书上的是否一致

    $code = 200; //执行成功
    $data = curl_exec($ch);
    //捕抓异常
    if (curl_errno($ch) || empty($data)) {
        $code = 400; //执行异常
        $data = curl_error($ch);
    }
    curl_close($ch);

    return ['code' => $code, 'data' => $data];
}

示例

$url = 'https://www.xingyux.com';
$post_data = [
    'cache'=>0
];
$header = [
    'CLIENT-IP: 100.0.0.0',
    'X-FORWARDED-FOR: 100.0.0.0',
];
$referer_url = 'http://www.xingyux.com';
$res = curl_request($url, $post_data, $header, $referer_url);
if ($res['code'] == 200) {
    print_r($res['data']);
} else {
    //异常处理
}


有好的文章希望我们帮助分享和推广,猛戳这里我要投稿

返回列表
上一篇:
下一篇:

发表评论中国互联网举报中心

快捷回复:

验证码

    评论列表 (暂无评论,共人参与)参与讨论

    还没有评论,来说两句吧...