发布日期:2015-11-08 12:11:54

CURL 官方文档:https://curl.haxx.se/docs/manpage.html

curl很强大,如果那只是传说,那你用一天就会知道什么叫做神器smiley。看看源于cnblogs小伍的评论:

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'));

 

很强大,很方便。

正道上,可以做自动化测试。黑道上,可以做黑客工具。

如何使用?确实很简单!

可以参考另一篇文章:curl用法和抓取遇到的问题 

但看完小伍的这篇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;
        }
    }
    
?>

 

发表评论