php的CURL简单实例

 

php的CURL可以实现模拟登录,以及上传,采集数据等等

采集之前先看页面的编码建议同意转成utf-8,使用函数icon

$return = iconv("gbk","UTF-8",$return);//将gbk转成ut-8

 

下面两个简单的get和post方法

/*
* curl_get请求
*$url 响应的的连接
*/

function C_get($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);//目标连接
curl_setopt($ch, CURLOPT_TIMEOUT, 300);//最长时间秒
curl_setopt($ch, CURLOPT_HEADER, 0);//启用时会将头文件的信息作为数据流输出。
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );//提高curl_exec的执行效率
$cip = '123.125.68.' . mt_rand(0, 254);
$xip = '125.90.88.' . mt_rand(0, 254);
$header = array('CLIENT-IP:'.$cip, 'X-FORWARDED-FOR:'.$xip);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//伪造ip
curl_setopt($ch, CURLOPT_REFERER, "http://www.baidu.com"); //构造来路
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出
$return = curl_exec($ch);
curl_close($ch);
return $return;
}

 

/*
* curl_post请求
* $url 响应的的连接
* $data 提交的数据
*/

function C_post($url,$data)
{
$ch = curl_init();
$cip = '123.125.68.' . mt_rand(0, 254);
$xip = '125.90.88.' . mt_rand(0, 254);
$header = array('CLIENT-IP:'.$cip, 'X-FORWARDED-FOR:'.$xip);
curl_setopt($ch, CURLOPT_URL, $url);//目标连接
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );//提高curl_exec的执行效率
curl_setopt($ch, CURLOPT_TIMEOUT, 300);//最长时间秒
curl_setopt($ch, CURLOPT_HEADER, 0);//启用时会将头文件的信息作为数据流输出。
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//伪造ip
curl_setopt($ch, CURLOPT_REFERER, "http://www.baidu.com"); //构造来路
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出
curl_setopt($ch,CURLOPT_POST,1);//设置为POST方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//POST数据
$return = curl_exec($ch);
curl_close($ch);
return $return;
}

 

 

curl_setopt($ch , CURLOPT_SSL_VERIFYPEER , false);加上400请求错误,不加上httpcode为空(0)
//$header[] = "User-Agent : Mozilla/5.0 (Windows NT 6.3; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";
//curl_setopt($ch , CURLOPT_HTTPHEADER , $header);//用header报400错误???

对URL参数做转码处理,以免出错
rawurlencode();
http_build_query($post)//post为数组

 

 

 

php的curl+post+json数据

注意:把类型改成json

$ch = curl_init($url);
curl_setopt($ch , CURLOPT_FAILONERROR , true);
$header[] = "Referer : https://www.cs.com/login";
$header[] = "User-Agent : Mozilla/5.0 (Windows NT 6.3; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";
$header[] = "Content-Type: application/json";//重点
$header[] = "Content-Length: " . strlen($pstr);
curl_setopt($ch , CURLOPT_HEADER , 0);
curl_setopt($ch , CURLOPT_RETURNTRANSFER , 1);//不输出
curl_setopt($ch , CURLOPT_POST , 1);
curl_setopt($ch , CURLOPT_FOLLOWLOCATION , 1); //自动跟踪location
curl_setopt($ch , CURLOPT_POSTFIELDS , $pstr);//json数据
//
//curl_setopt($ch , CURLOPT_HTTPHEADER , $header);//重点:把类型改成json
$res = curl_exec($ch);
$info = curl_getinfo($ch);
//var_dump($info);
curl_close($ch);




 

重定向参数有时候会失效。

curl_setopt($city_ch , CURLOPT_MAXREDIRS , 99); //最大重定向次数(依旧失效)获取重定向连接再次访问,还是重定向。怀疑代码防止curl抓取的问题
curl_setopt($ch , CURLOPT_COOKIEJAR , $this->cookie_file);//把cookie写入文件,只要路径就好,会自动创建文件。

转载于:https://www.cnblogs.com/dzlffmx/p/4736505.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值