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高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30377