«

PHP CURL使用

时间:2023-3-1 21:54     作者:wen     分类: PHP


<?php
//curl 是利用URL规则,实现服务器之间数据,文件交流的工具
switch (3){
    case 0:
        //开启curl,初始化
        $curl = curl_init();

        //设置服务器是返回结果还是直接显示 true返回结果
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

        //默认访问http协议,https是不能执行的
        //跳过HTTPS安全协议
        curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
        curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);

        //不显示header头信息,默认就是不显示
        curl_setopt($curl,CURLOPT_HEADER,0);

        //2.告诉我们的服务器请求的资源地址
        //参数1:curl资源
        //参数2:路径配置项
        //参数3:路径配置项的值
        curl_setopt($curl,CURLOPT_URL,'https://www.baidu.com/');

        //3.发出请求
        return curl_exec($curl);

        //4.关闭资源
        curl_close($curl);
        break;
    case 1:
        //post提交
        $curl = curl_init();
        curl_setopt($curl,CURLOPT_URL,'https://localhost/log.txt');

        //开启post提交请求
        curl_setopt($curl,CURLOPT_POST,true);
        $data = '200W';
        //post提交的数据
        curl_setopt($curl,CURLOPT_POSTFIELDS,$data);

        curl_exec($curl);

        curl_close($curl);

        break;
    case 2:
        //文件上传
        //1.初始化
        $curl = curl_init();
        $url = "http://localhost/Test/test.php";
        curl_setopt($curl,CURLOPT_URL,$url);
        curl_setopt($curl,CURLOPT_POST,true);
        $data = array(
          'logo'=>new CURLFile('C:\PHP\123.gif'),
        );
        curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
        curl_exec($curl);
        curl_close($curl);
        break;
    case 3:
        //模拟cookie登录
        //1.先登录,登录成功获得钥匙(session文件名)
        $curl = curl_init();
        $url = "http://localhost/Ling/index.php?m=home&c=user&a=doLoginAction";
        curl_setopt($curl,CURLOPT_URL,$url);
        //将钥匙(保存session文件名字的cookie)
        curl_setopt($curl,CURLOPT_COOKIEJAR,'c:\php\cookie.txt');
        //携带数据过去
        curl_setopt($curl,CURLOPT_POST,true);
        $data = ['username'=>'wenhu2017','password'=>'admin12345'];
        curl_setopt($curl,CURLOPT_POSTFIELDS,$data);

        curl_exec($curl);
        //2.以后请求时,就会通过钥匙找到对应的session文件
        $url = "http://localhost/Ling/index.php?m=home&c=index&a=indexAction";
        curl_setopt($curl,CURLOPT_URL,$url);
        curl_setopt($curl,CURLOPT_COOKIEFILE,'c:\php\cookie.txt');
        curl_exec($curl);
        curl_close($curl);
        break;
    case 4:
        //文件采集
        break;
    default:
        echo 11;
        break;
    }
?>
const PROXY_LIST = [
   "127.0.0.1:3128",
   "127.0.0.1:3129",
];
/**
 * 代理CURL
 * @param $url 网络地址
 * @param $proxy_ip IP端口
 * @param array $headers 请求头
 * @param string $user_agent UA
 * @param string $method GET|POST
 * @return bool|string
 */
function curl_via_proxy($url, $proxy_ip, $headers = [], $user_agent = "curl", $method = "GET")
{
   $arr_ip = explode(";", $proxy_ip);

   $ch = curl_init($url); // 创建CURL对象
   curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
   curl_setopt($ch, CURLOPT_HEADER, 0); // 返回头部
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 返回信息
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); // 连接超时时间
   curl_setopt($ch, CURLOPT_TIMEOUT, 5); // 读取超时时间
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
   curl_setopt($ch, CURLOPT_PROXY, $arr_ip[0]); // 代理服务器
   curl_setopt($ch, CURLOPT_PROXYPORT, $arr_ip[1]); // 代理服务器端口
   curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
   curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
   //添加头部信息
   if (!empty($headers)) {
      curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
   }
   $res = curl_exec($ch);
   $curl_errno = curl_errno($ch);
   curl_close($ch);
   if ($curl_errno) {
      return false;
   }
   return $res;
}

标签: PHP基础