好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php curl模拟登陆人人网发表状态 - php高级应用

php curl模拟登陆人人网发表状态

在php中要实现用户登录我们一般都会到curl模拟登陆功能,下面我就基于php的curl来实现登录人人网,完整的例子希望对各位有帮助,代码如下:

<?php  $cookie_file  = dirname( __FILE__ ). "/renren.cookie" ;    $login_url  =  'http://passport.renren.com/PLogin.do' ;    $post_fields [ 'email' ] =  '' ; //人人的帐号   $post_fields [ 'password' ] =  '' ; //人人密码   $post_fields [ 'origURL' ] =  'http%3A%2F%2Fhome.renren.com%2FHome.do' ;  $post_fields [ 'domain' ] =  'renren.com' ;      $ch  = curl_init( $login_url );  curl_setopt( $ch , CURLOPT_USERAGENT,  'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5' );  curl_setopt( $ch , CURLOPT_HEADER, 0);  curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);  curl_setopt( $ch , CURLOPT_MAXREDIRS, 1);  curl_setopt( $ch , CURLOPT_FOLLOWLOCATION, 1);  curl_setopt( $ch , CURLOPT_AUTOREFERER, 1);  curl_setopt( $ch , CURLOPT_POST, 1);  curl_setopt( $ch , CURLOPT_POSTFIELDS,  $post_fields );  curl_setopt( $ch , CURLOPT_COOKIEJAR,  $cookie_file );  $content  = curl_exec( $ch );  curl_close( $ch );  //匹配用户的ID   $send_url = 'http://www.renren.com/home' ;  $ch  = curl_init( $send_url );  curl_setopt( $ch , CURLOPT_HEADER, 0);  curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);  curl_setopt( $ch , CURLOPT_COOKIEFILE,  $cookie_file );  curl_exec( $ch );  $info  = curl_getinfo( $ch );  curl_close( $ch );  //获取用户id   $tmp  =  explode ( '/' , $info [ 'redirect_url' ]);  $uid  =  array_pop ( $tmp );  unset( $tmp );    //$uid = "305115027";   //获取token和rtk     $send_url = 'http://www.renren.com/' . $uid ;  $ch  = curl_init( $send_url );  curl_setopt( $ch , CURLOPT_HEADER, 0);  curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);  curl_setopt( $ch , CURLOPT_COOKIEFILE,  $cookie_file );  $tmp  = curl_exec( $ch );  curl_close( $ch );  preg_match_all( "/get_check:'(.*?)',get_check_x:'(.*?)',/is" , $tmp , $arr );  $token  =  $arr [1][0]; //1121558104   $rtk  =  $arr [2][0]; //e9a9cb2     //发布信息   $poststr [ 'content' ] =  "这就是一个测试而已!!!" ;  $poststr [ 'withInfo' ] =  '{"wpath":[]}' ;  $poststr [ 'hostid:' ] =  $uid ;  $poststr [ 'privacyParams' ] =  '{"sourceControl": 99}' ;  $poststr [ 'requestToken' ] =  $token ;  $poststr [ '_rtk' ] =  $rtk ;  $poststr [ 'channel' ] =  "renren" ;    $head  =  array (      'Referer:http://shell.renren.com/ajaxproxy.htm' ,      'X-Requested-With:XMLHttpRequest' ,    );  $ch  = curl_init( "http://shell.renren.com/{$uid}/status" );  curl_setopt( $ch , CURLOPT_USERAGENT,  'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5' );  curl_setopt( $ch ,CURLOPT_HTTPHEADER, $head );  curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);  curl_setopt( $ch , CURLOPT_MAXREDIRS, 1);  curl_setopt( $ch , CURLOPT_FOLLOWLOCATION, 1);  curl_setopt( $ch , CURLOPT_AUTOREFERER, 1);  curl_setopt( $ch , CURLOPT_POST, 1);  curl_setopt( $ch , CURLOPT_POSTFIELDS,  $poststr );  curl_setopt( $ch , CURLOPT_COOKIEFILE,  $cookie_file );  $content  = curl_exec( $ch ); //开源代码phpfensi.com   curl_close( $ch );  $data  = json_decode( $content ,true);  if ( $data [ "code" ] ==  "0" ){    echo   "发布成功!" ;  } else {    echo   "shit !!!" ;  }

查看更多关于php curl模拟登陆人人网发表状态 - php高级应用的详细内容...

  阅读:37次