php curl 抓取页面几种方法介绍
例 1,使用PHP的CURL模块取回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地址做限制这个时候,你可以换代理重新抓,代码如下:
3,post数据后,抓取数据
单独说一下数据提交数据,因为用 curl的时候,很多时候会有数据交互的,所以比较重要的,代码如下:
serialize(array('tank','zhang')),'sex'=>1,'birth'=>'20101010')//开源代码phprm.com *例如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种方法.
分类目录: apache/nginx
apache 页面访问控制:为什么要进行这样的控制呢,给不同的人看不同的东西,对信息进行保护,虽然这种保护比较低级,多多少少还是有点用的.
一,用htpasswd命令,产生权限控制文件,代码如下:
1.[zhangy@BlackGhost test]$ htpasswd -c ./access tank //生成一个密码文件 ,-c是新建一个文件 htpasswd -h可查看
2.New password: //提示输入密码
3.Re-type new password: //重复密码
4.Adding password for user tank
5.[zhangy@BlackGhost test]$ cat access //查看一下密码文件
6.tank:Uj5B3qIF/BNdI //用户名是明文的,密码是加密的。
[zhangy@BlackGhost test]$ htpasswd -c ./access tank //生成一个密码文件 ,-c是新建一个文件 htpasswd -h可查看
New password: //提示输入密码
Re-type new password: //重复密码
Adding password for user tank
[zhangy@BlackGhost test]$ cat access //查看一下密码文件
tank:Uj5B3qIF/BNdI //用户名是明文的,密码是加密的。到这儿密码文件是生成好了。
二,页面访问控制方法
1,能过修改httpd.conf或者是httpd-vhosts.conf来进行配置,代码如下:
listen 10004 NameVirtualHost *:10004DocumentRoot "/home/zhangy/www/test" ServerName *:10004 BandwidthModule On ForceBandWidthModule On Bandwidth all 1024000 MinBandwidth all 50000 LargeFileLimit * 500 50000 MaxConnection all 2 ErrorLog "/home/zhangy/apache/blog.51yip.com.com-error.log" CustomLog "/home/zhangy/apache/blog.51yip.com-access.log" common //看一下,下面的配置
AuthType Basic AuthName "access test" AuthUserFile /home/zhangy/www/test/access Require valid-user 2,我们可以利用.htaccess文件来进行控制,在test的根目录下面建一个.htaccess的文件,代码如下:
[zhangy@BlackGhost test]$ vi .htaccess //打开个文件 ,添加权限内容 [zhangy@BlackGhost test]$ cat .htaccess //下面就是.htaccess的内容 AuthType Basic AuthName "access test" AuthUserFile /home/zhangy/www/test/access Require valid-user3,不用密码文件,也可以进行访问控制,代码如下:
define('ADMIN_USERNAME','tank'); // Admin Username define('ADMIN_PASSWORD','tank'); // Admin Password //log check if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME ||$_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) { Header("WWW-Authenticate: Basic realm="access test""); Header("HTTP/1.0 401 Unauthorized"); echo ;Rejected!
Wrong Username or Password!;
上一篇: 怎么查看mysql当前连接数