CURL库的详细使用(上)

phpCurl是一个在实战中运用非常多的和外部服务器进行交互的一个函数库。
 先查看下cURL的函数库的版本信息print_r(curl_version())(版本信息透漏出了很多的功能介绍)
 可以看到:
 Array
(
   //cURL的24位版本号
    [version_number] => 468480
    //出版时间
    [age] => 3
    //CURL_VERSION_XXX常量的位掩码
    [features] => 3997
    //OpenSSL 24 位版本号
    [ssl_version_number] => 0
    //cURL 版本号,字符串形式
    [version] => 7.38.0
    //关于编译cURL主机的信息
    [host] => i386-pc-win32
    //OpenSSL 版本号,字符串形式
    [ssl_version] => OpenSSL/1.0.1i
    //zlib 版本号,字符串形式
    [libz_version] => 1.2.7.3
    //一个cURL支持的协议名字的数组
    [protocols] => Array
        (
            [0] => dict
            [1] => file
            [2] => ftp
            [3] => ftps
            [4] => gopher
            [5] => http
            [6] => https
            [7] => imap
            [8] => imaps
            [9] => ldap
            [10] => pop3
            [11] => pop3s
            [12] => rtsp
            [13] => scp
            [14] => sftp
            [15] => smtp
            [16] => smtps
            [17] => telnet
            [18] => tftp
        )
)
支持的协议和版本可以描述大部分的功能范畴(大部分库的版本会随着时间慢慢更新,由于库版本不兼容的一些事情会在引用的时候,出现各种BUG问题)。从上述的介绍里,也可以看到curl支持的通讯协议达到了18种(基本涵盖了网络应用)在这节里我们重点使用的是http和https的支持(一般用来调用其他服务器上的接口用的比较多)。有关数据表明,Curl函数库的通讯效率是直接file_get_contents的4倍(所以比较专业抓取类都是用cURL库)。
使用该库前,需要初始化(当然更需要的一个前提是安装了该库,同时开启该库的支持,当前的php一般都支持开启该库)
标准使用三个参数:
$ch=curl_init("http://www.oschina.net");
$a =curl_exec($ch);
$b = curl_close($ch);
可以看到页面出了页面,该三个参数执行的目的就是读取http://www.oschina.net网页然后显示出来。
改进的写法:(因为我们可能是需要读取页面,但是不需要在浏览器里显示出来,比如抓去到某个页面后,我们需要对页面进行分析,分析完成后只告诉我们结果后就可以)

<?php
$ch =curl_init();
//将需要抓去的url写入
curl_setopt($ch,CURLOPT_URL,"http://www.oschina.net");
//设置了该参数后,就可以达到获取上面url网页内容赋值给变量的目的
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//该变量进行调用
$txt=curl_exec($ch);
curl_close($ch);
?>

上面这个过程可以完成了一个类似 file_get_contents(URL)的动作。现在对功能进行进一步的功能复杂化,
比如是否抓去头部
curl_setopt($ch,CURLOPT_HEADER,true) 这样url的头部信息也可以显示出来。
下面完成一个curl模拟发送表单的信息(用户登录情况下发送数据——最简单的可能是模拟登录用户数据自动提交表单,比如今目标的打卡)

<?php
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"shuju");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//允许发送post数据
curl_setopt($ch,CURLOPT_POST,1)
//发送post数据
curl_setopt($ch,CURLOPT_POSTFIELDS,array('test'=>1));
//模拟cookie的发送
curl_setopt($ch,CURLOPT_COOKIE,"name=test;logintest=1");
$output = curl_exec($ch);
curl_close($ch);
?>

这样就完成了一个简单的在cookie情况下对数据表单的提交(如果身份验证通过了,可以在账户下做很多自动化的事情,发送一个这样的脚本即可)

你可能感兴趣的:(CURL库的详细使用(上))