php curl简单使用

function get($url, $data = []){
    $ch = curl_init($url); //初始化
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //返回数据不直接输出
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    //代理 通过代理访问需要额外添加的参数项, 127.0.0.1:8080本地ssr代理
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
    curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1");
    curl_setopt($ch, CURLOPT_PROXYPORT, "1080");
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $content = curl_exec($ch);                    //执行并存储结果
    $error = curl_errno($ch); //获取错误
    if($error){
        echo '错误代码:'.$error;
    }
    curl_close($ch);
    return $content;
}

function post($url, $data = [], $refer = ''){
    $ch = curl_init($url);
    $cookie_file = tempnam('./temp', 'cookie');

    //返回数据,超时
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //返回数据不直接输出
    curl_setopt ($ch, CURLOPT_TIMEOUT, 60); //允许cURL函数执行的最大秒数
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 60); //尝试连接时等待的秒数。使用0无限期等待。
    curl_setopt ($ch, CURLOPT_HEADER, false); //TRUE 在输出中包含标头

    //refer
    curl_setopt($ch, CURLOPT_REFERER, $refer);    //来路模拟, 要在HTTP请求中使用 的“Referer:”标头的内容。

    //post
    curl_setopt($ch, CURLOPT_POST, 1);            //发送POST类型数据
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  //POST数据,$data可以是数组,也可以是拼接

    // 需要cookie支持的采集
    // curl_setopt($ch,CURLOPT_COOKIEJAR, $cookie_file); //存储提交后得到的cookie数据,登录接口
    // curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file); //使用提交后得到的cookie数据做参数

    // 压缩网页采集
    // curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip压缩

    // SSL
    // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);        // 终止从服务端进行验证
    // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    // curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM'); //自定义证书
    // curl_setopt($ch, CURLOPT_SSLCERT, $file_cret); //证书
    // curl_setopt($ch, CURLOPT_SSLKEY, $file_key); //证书

    //代理 通过代理访问需要额外添加的参数项, 本地ssr代理
    // curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
    // curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
    // curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1");
    // curl_setopt($ch, CURLOPT_PROXYPORT, "1080");

    // 302跳转(301跳转)
    // curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //跳转会继续跟踪访问,而且cookie在header里面被保留了下来

    $content = curl_exec($ch);                    //执行并存储结果
    $error = curl_errno($ch); //获取错误
    if($error){
        echo '错误代码:'.$error;
    }
    curl_close($ch);
    return $content;
}

// 模拟上传文件
// 对于上传文件,这句话包含两个信息: 
// 1. 要上传文件,post的数据参数必须使用数组,使得Content-Type头将会被设置成multipart/form-data。 
// 2. 要上传文件,在文件名前面加上@前缀并使用完整路径。
// $file = array('name' => 'Foo', 'file' => '@d:/test.jpg'); 或者array(Foo' => '@d:/test.jpg');
function post_file($url, $file){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $file);
    curl_exec($ch);
}
echo get('https://www.youtube.com/');

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值