• 一个简单的增强型PHP curl函数


    啥都不说,先上代码

    <?PHP
        /*
      *  @author  小伍
      */
    echo "<pre>"; $proxy = array('url'=>'http://localhost:8087'); print_r(xCurl('http://www.cnblogs.com/picaso',true,array(),null,null,$proxy)); function xCurl($url,$return=true,$postData=array(),$cookiePath=null,$referer=null,$proxy=array(),$userAgent="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)") { $ch = curl_init(); $optionArray = array( CURLOPT_AUTOREFERER => true, CURLOPT_URL => $url,  //目标URL CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1,  //不直接打印显示 CURLOPT_CONNECTTIMEOUT => 3,  //连接超时3s CURLOPT_TIMEOUT => 12,      //执行超时12s CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false  //此处两个SSL相关参数是适应HTTPS网页 ); if(count($proxy) > 0){  //网页代理设置,代理,大家都懂的,可以做很多事 $optionArray[CURLOPT_HTTPPROXYTUNNEL] = true;  //HTTP代理开关 if(!empty($proxy['type']) && $proxy['type'] == 'socket'){ $optionArray[CURLOPT_PROXYTYPE] = CURLPROXY_SOCKS5;  //可以使用socket代理(×这里我没有测试socket代理) } $optionArray[CURLOPT_PROXY] = $proxy['url'];if (!empty($proxy['auth'])) {              //代理验证
    $optionArray[CURLOPT_PROXYAUTH] = false;$optionArray[CURLOPT_PROXYUSERPWD] = $proxy['auth'];  //格式 username:password } } if(!empty($referer)) {    //HTTP头部的referer $optionArray[CURLOPT_REFERER] = $referer; } if(!empty($userAgent)) {    //HTTP头部的UserAgent $optionArray[CURLOPT_USERAGENT] = $userAgent; } if (!empty($cookiePath)) {    //Cookie的保存与传递(cookiePath是一个cookie文件,自定义即可) $optionArray[CURLOPT_COOKIEFILE] = $cookiePath;  //传递cookie $optionArray[CURLOPT_COOKIEJAR] = $cookiePath;  //保存cookie } if(count($postData) > 0){    //post传值 $optionArray[CURLOPT_POST] = 1; $optionArray[CURLOPT_POSTFIELDS] = $postData; } curl_setopt_array($ch, $optionArray); $content = curl_exec($ch); if(!curl_errno($ch)){ $output = curl_getinfo($ch); } curl_close($ch); if($return) { $output['content'] = $content; return $output; } else { echo $content; } } ?>

    1、简介:

      能够抓取HTTP和HTTPS页面;

      能够记录、使用cookie;

      能够使用HTTP代理(socket代理可以使用,效果未检测),支持代理验证;

      可以自定义Referer、UserAgent;

       检查链路信息,包含状态码等(返回结果数组详见curl_getinfo函数数据解释)

    2、用途:

      换IP作业:邮件群发,注册帐号,发布软文等;

      接口处理:API接口处理(可以精简本代码);

      网页采集:太不道德了

    3、扩展功能:

      CURL也可以伪造IP,别干坏事哦~~

      curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8'));

    4、用法:

      会调用函数就会使用,So easy~

    只是一函数而已,参数显得很乱,有兴趣可以改写成class类

  • 相关阅读:
    Vue请求参数转换(qs的使用---对象序列化)
    Vue中使用async/await解决异步请求问题
    数据结构:set
    数据结构:map (不是数组的map方法)
    数组方法-reduce 和 ES6扩展运算符
    数据分析相关
    Hadoop委任和解除节点
    Oozie调度Sqoop报错
    Oozie调度Sqoop的两种方式
    MySql数据表直接到Hive表操作
  • 原文地址:https://www.cnblogs.com/picaso/p/3228190.html
Copyright © 2020-2023  润新知