curl---snoopy 获取远端的文件&curl 模拟表单的登陆

curl---snoopy 获取远端的文件  
curl 模拟表单的登陆




file_get_contents()


snoopy:






curl:利用url 语言规定来传送文件和数据的一种工具
 
curl : 支持 http https


php 默认是支持 curl


打开curl 


extension=php_curl.dll 
先在本机测试,在php.ini中去掉了extension=php_curl.dll前面的;,查看一下phpinfo(),并没有curl。
将libeay32.dll 和ssleay32.dll复制到system32下,重启apache,刷新phpinfo(),看到了curl。


curl的使用: 四剑
 1--初始化  curl_init(); 返回一个资源
 2--设置变量 curl_setopt(资源,常量,常量值);
 3--执行并返回结果  curl_exec(资源)
 4--关闭curl 资源 curl_close(资源)


常见的常量:
  CURLOPT_URL      设置需要抓起网页的路径
  CURLOPT_HEADER   设置header 头信息  值 1 或者 0  如果是1 表示要求浏览器保存字符串 否则 输出字符串
  CURLOPT_POST     模拟post提交
  CURLOPT_RETURNTRANSFER   是否运行当前设置的这个curl地址 值 1 或者0 如果是1 表示运行这个curl 地址 否则 不运行
  CURLOPT_POSTFIESDS 设置post 提交的数据 ,相当于点击了按钮


实例:
 curl 获取运程数据
<?php
//第一步初始化
     $ch=curl_init();  //返回一个资源
 //第二步: 设置常量规则
     curl_setopt($ch,CURLOPT_URL,'http://www.phpernote.com/php-template/199.html') ;  //远程获取数据
     //第三步: 设置是否执行
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ;
      //第四步: 执行该资源
       $data=curl_exec($ch);
       //第五步: 关闭资源
        curl_close($ch);


        //输出数据
          print_r($data)
?>


curl 运程登录网站


<?php


/**
 * @author phpadmin
 * @copyright 2012
 * 
 * 不通过登录界面进行登录
 * 从我的服务器 远程的去登录你的网站
 * 
 * 1--准备数据 url
 * 
 */
   
   $post_url='http://127.0.0.1/loginAction.php'; //这是登录地址


   $post_data='name=lyle_zhang&pwd=test123&sub=登录'; //设置post 数据
   /**
    * 执行curl
    * 
    * 初始化是传递地址
    */
    $ch=curl_init($post_url); 
    /**
     * 模拟浏览器传递
     */ 
    curl_setopt($ch,CURLOPT_HEADER,0);
    /**
     * 设置运行该curl
     */ 
     
     curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
     
     /**
      * 模拟post 提交
      * 告诉浏览器 我数据时 post 提交过来的
      */ 
      
      curl_setopt($ch,CURLOPT_POST,1);
      
      /**
       * 设置执行post 相当于 点击了 登录的这个按钮
       */ 
       
       curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
       
       /**
        * 执行 curl
        *  返回数据
        */ 
         $data=curl_exec($ch);
        
        /**
         * 关闭
         */ 
         
         curl_close($ch);
   
   
    echo '<pre>';
      print_r($data);
    echo '</pre>';
?>


用CURL模拟用户登录并采集需要用户登录的页面的。
<?php
$cookie_jar = tempnam('./tmp','cookie');
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,'登陆地址');
curl_setopt($ch, CURLOPT_POST, 1);
$request = 'username=xxx&pwd=xxx';
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);//传递数据
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);//把返回来的cookie信息保存在$cookie_jar文件中
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设定返回的数据是否自动显示
curl_setopt($ch, CURLOPT_HEADER, false);//设定是否显示头信息
curl_setopt($ch, CURLOPT_NOBODY, false);//设定是否输出页面内容
curl_exec($ch);
curl_close($ch); //get data after login


$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, '查看地址');
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
$orders = curl_exec($ch2);


echo $orders;
curl_close($ch2);// 实践证明很稳定:)
?>




   

你可能感兴趣的:(curl---snoopy 获取远端的文件&curl 模拟表单的登陆)