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基础