phpcurl中常用的5个代码示例介绍

phpcurl中常用的5个代码示例介绍

内容导读

收集整理的这篇技术教程文章主要介绍了phpcurl中常用的5个代码示例介绍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3987字,纯文字阅读大概需要6分钟

内容图文

本篇文章给大家带来的内容是关于php cur中常用的5个代码示例介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

我用php ,curl主要是抓取数据,当然我们可以用其他的方法来抓取,比如fsockopen,file_get_contents等。但是只能抓那些能直接访问的页面,如果要抓取有页面访问控制的页面,或者是登录以后的页面就比较困难了。
1,抓取无访问控制文件

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/mytest/phpinfo.php");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果把这行注释掉的话,就会直接
输出 $result=curl_exec($ch); curl_close($ch); ?>

2,使用代理进行抓取
为什么要使用代理进行抓取呢?以google为例吧,如果去抓google的数据,短时间内抓的很频繁的话,你就抓取不到了。google对你的ip地址做限制这个时候,你可以换代理重新抓。

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://blog.51yip.com");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt($ch, CURLOPT_PROXY, 125.21.23.6:8080);
//url_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');如果要密码的话,加上这个
$result=curl_exec($ch);
curl_close($ch);
?>

3,post数据后,抓取数据
单独说一下数据提交数据,因为用 curl的时候,很多时候会有数据交互的,所以比较重要的。

<?php
$ch = curl_init();
/*在这里需要注意的是,要提交的数据不能是二维数组或者更高 *例如array('name'=>serialize(array('tank','zhang')),'sex'=>1,'birth'=>'20101010') *例如array('name'=>array('tank','zhang'),'sex'=>1,'birth'=>'20101010')这样会报错的*/ $data = array('name' => 'test', 'sex'=>1,'birth'=>'20101010');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/mytest/curl/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>

在 upload.php文件中,print_r($_POST);利用curl就能抓取出upload.php输出的内容Array ( [name] => test [sex] => 1 [birth] => 20101010 )

4,抓取一些有页面访问控制的页面
以前写过一篇,页面访问控制的3种方法有兴趣的可以看一下。
如果用上面提到的方法抓的话,会报以下错误:

You are not authorized to view this pageYou do not have permission to view this directory or page using the credentials that you supplied because your Web browser is sending a WWW-Authenticate header field that the Web server is not configured to accept.

这个时候,我们就要用CURLOPT_USERPWD来进行验证了

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://club-china");
/*CURLOPT_USERPWD主要用来破解页面访问控制的 *例如平时我们所以htpasswd产生页面控制等。*/ //curl_setopt($ch, CURLOPT_USERPWD, '231144:2091XTAjmd=');
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://club-china");
curl_setopt($ch, CURLOPT_HEADER, 0);
$result=curl_exec($ch);
curl_close($ch);
?>

5,模拟登录到sina
我们要抓取数据,可能是登录以后的内容,这个时候我们就要用到curl的模拟登录功能了。

<?php
 function checklogin( $user, $password )
{
	if ( emptyempty( $user ) || emptyempty( $password ) )
	{
		return 0;
	}
	$ch = curl_init( );
	curl_setopt( $ch, CURLOPT_REFERER, "http://mail.sina.com.cn/index.html" );
	curl_setopt( $ch, CURLOPT_HEADER, true );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $ch, CURLOPT_USERAGENT, USERAGENT );
	curl_setopt( $ch, CURLOPT_COOKIEJAR, COOKIEJAR );
	curl_setopt( $ch, CURLOPT_TIMEOUT, TIMEOUT );
	curl_setopt( $ch, CURLOPT_URL, "http://mail.sina.com.cn/cgi-bin/login.cgi" );
	curl_setopt( $ch, CURLOPT_POST, true );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, "&logintype=uid&u=".urlencode( $user )."&psw=".$password );
	$contents = curl_exec( $ch );
	curl_close( $ch );
	if ( !preg_match( "/Location: (.*)\/cgi\/index\.php\?check_time=(.*)n/", $contents, $matches ) )
	{
		return 0;
	}else{
		return 1;
	}
}
 define( "USERAGENT", $_SERVER['HTTP_USER_AGENT'] );
define( "COOKIEJAR", tempnam( "/tmp", "cookie" ) );
define( "TIMEOUT", 500 );
 echo checklogin("zhangying215","xtaj227");
?>

以上就是php curl中常用的5个代码示例介绍的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的phpcurl中常用的5个代码示例介绍全部内容,希望文章能够帮你解决phpcurl中常用的5个代码示例介绍所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com