通过curl登录访问的PHP代码
$data=‘username=zjzhoufy@126.com pas sword=1 q2w3e remember=1’ ;
$curlobj=curl_in it(); //初始化curl_s etopt($curlobj,CURLOPT_URL, http://www.imooc.c om/us er/login //设置访问网页的URLc url_s etopt($c urlobj,CURLOP T_RETURNTRANSFER,true); //执行之后不直接打印出来
//Cookie相关设置这部分设置需要在所有会话开始之前设置date_default_timezone_set(‘PRC’);//使用Cookie时必须先设置时区curl_s etopt($curlobj,CURLOPT_COO KI ESES SION,TRUE);curl_s etopt($curlobj,CURLOPT_COO KI EJAR, ’c ookie.txt’);//保存curl_s etopt($curlobj,CURLOPT_COO KI EFILE, ’c ookie.txt’);//读取c url_s etopt($c urlobj,CURLOPT_HEADER,0);curl_s etopt($curlobj,CURLOPT_FOLLOWLOCATION,1);//这样能够让cURL支持页面链接跳转curl_setopt($curlobj,CURLOPT_COOKI E,ses sion_name(). ’=‘ .session_id());curl_s etopt($curlobj,CURLOPT_POST,1);curl_s etopt($curlobj,CURLOPT_POSTFIELDS,$data);curl_s etopt($curlobj,CURLOPT_HTTPHEADER,array( applic ation/x-www-form-urlenc oded;chars et=utf-8,
Content-length: .s trlen($data)
));c url_exec($c urlobj); //执行curl_s etopt($curlobj,CURLOPT_URL,http://www.imooc.c om/spac e/indexcurl_s etopt($curlobj,CURLOPT_POST,0);
c url_s etopt($c urlobj,CURLOP T_HT TPHEADER,array(Content-type:text/xml
));
$output=c url_exec($c urlobj); //执行curl_c los e($curlobj); //关闭cURLec ho$output;
?
如上代码并不完美我们应该把c ookie存到缓存中不应该持久化并且这样的持久化只能是单用户访问才行。
所以其实我们只要设置
CURLOPT_COOKI ESES SION
如下即可
?p hp
$data=‘username=demo_demo@126.c om pas sword=123456qwe remember=1’ ;
$curlobj=curl_in it(); //初始化curl_s etopt($curlobj,CURLOPT_URL, http://www.imooc.c om/us er/log in //设置访问网页的URLc url_s etopt($c urlobj,CURLOP T_RETURNTRANSFER,true); //执行之后不直接打印出来
//Cookie相关设置这部分设置需要在所有会话开始之前设置date_default_timezone_set(‘PRC’);//使用Cookie时必须先设置时区curl_s etopt($curlobj,CURLOPT_COO KI ESES SION,TRUE);
c url_s etopt($c urlobj,CURLOPT_HEADER,0);curl_setopt($curlobj,CURLOPT_COOKI E,ses sion_name(). ’=‘ .session_id());
//注释掉这行因为这个设置必须关闭安全模式以及关闭open_bas edir对服务器安全不利
//curl_s etopt($curlobj,CURLOPT_FOLLOWLOCATION,1);curl_s etopt($curlobj,CURLOPT_POST,1);curl_s etopt($curlobj,CURLOPT_P OSTFIELDS,$data);curl_s etopt($curlobj,CURLOPT_HTTPHEADER,array( applic ation/x-www-form-urlenc oded;chars et=utf-8,
Content-length: .s trlen($data)
));c url_exec($c urlobj); //执行curl_s etopt($curlobj,CURLOPT_URL,http://www.imooc.c om/spac e/indexcurl_s etopt($curlobj,CURLOPT_POST,0);c url_s etopt($c urlobj,CURLOP T_HT TPHEADE R,array(Content-type:text/xml
));
$output=c url_redir_exec($c urlobj); //执行curl_c los e($curlobj); //关闭cURLec ho$output;
*自定义实现页面链接跳转抓取
*/func tioncurl_redir_exec($ch,$debug=)
{
static$curl_loops=0;static$curl_max_loops=20;if($curl_loops++=$curl_max_loops)
{
$curl_loops=0;r eturnFALS E;
}c url_s etopt($c h,CURLOPT_HEAD ER,true);//开启header才能够抓取到重定向到的新URLc url_s etopt($c h,CURLOPT_RET URNTRANSF ER,true);
$data=curl_exec($ch);
//分割返回的内容
$h_len=c url_get info($c h,CURLINF O_HEADER_S IZE);
$header=substr($data,0,$h_len);
$data=substr($data,$h_len-1);
$http_c ode=c url_getinfo($c h,CURLINF O_HT TP_CODE);if($http_c o de==301| |$http_c o de==302){
$matches=array();preg_match(‘/Location:(.*?)\n/’ ,$header,$matches);
$url=@pars e_url(trim(array_pop($matc hes)));
//p r int_r($ur l);if(!$ur l)
{
//c ouldn’tproc esstheurltoredirec tto
$curl_loops=0;r eturn$data;
}
$last_url=pars e_url(curl_getinfo($c h,CURLINFO_EFFE CTIVE_URL));if(!is s et($url[‘sc heme’]))
$url[‘scheme’]=$last_url[‘scheme’];if(!is s et($url[‘hos t’]))
$url[‘host’]=$last_url[‘host’];if(!is s et($url[‘p ath’]))
$ur l[‘p ath’]=$las t_ur l[‘p ath’];
$new_url=$url[‘sc heme’]. ’ ://’ .$url[‘hos t’].$url[‘p ath’].(is s et($url[‘query’])?’?’.$url[‘query’]:’’);c url_s etopt($c h,CURLOPT_URL,$new_url);returnc url_redir_exec($c h);
}els e{
$curl_loops=0;r eturn$data;
}
}
?
炭云怎么样?炭云(之前的碳云),国人商家,正规公司(哈尔滨桓林信息技术有限公司),主机之家测评介绍过多次。现在上海CN2共享IP的VPS有一款特价,上海cn2 vps,2核/384MB内存/8GB空间/800GB流量/77Mbps端口/共享IP/Hyper-v,188元/年,特别适合电信网络。有需要的可以关注一下。点击进入:炭云官方网站地址炭云vps套餐:套餐cpu内存硬盘流量/带宽ip价格购买上...
傲游主机商我们可能很多人并不陌生,实际上这个商家早年也就是个人主机商,传说是有几个个人投资创办的,不过能坚持到现在也算不错,毕竟有早年的用户积累正常情况上还是能延续的。如果是新服务商这几年确实不是特别容易,问到几个老牌的个人服务商很多都是早年的用户积累客户群。傲游主机目前有提供XEN和KVM架构的云服务器,不少还是亚洲CN2优化节点,目前数据中心包括中国香港、韩国、德国、荷兰和美国等多个地区的CN...
v5net当前对香港和美国机房的走优质BGP+CN2网络的云服务器进行7折终身优惠促销,每个客户进线使用优惠码一次,额外有不限使用次数的终身9折优惠一枚!V5.NET Server提供的都是高端网络线路的机器,特别优化接驳全世界骨干网络,适合远程办公、跨境贸易、网站建设等用途。 官方网站:https://v5.net/cloud.html 7折优惠码:new,仅限新客户,每人仅限使用一次 9...