用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

利用php curl实现程序登录新浪微博代码

时间:2015-01-23  来源:西部数据  作者:西部数据
  1. /**  
  2. * CURL请求  
  3. * @param String $url 请求地址  
  4. * @param Array $data 请求数据  
  5. */  
  6. function curlRequest($url,$data='',$cookieFile=''){  
  7. $ch = curl_init();  
  8. $option = array(  
  9. CURLOPT_URL => $url,  
  10. CURLOPT_HEADER =>0,  
  11. CURLOPT_RETURNTRANSFER => 1,  
  12. );  
  13. if($cookieFile){  
  14. $option[CURLOPT_COOKIEJAR] = $cookieFile;  
  15. $option[CURLOPT_COOKIEFILE] = $cookieFile;  
  16. //$option[CURLOPT_COOKIESESSION] = true;  
  17. //$option[CURLOPT_COOKIE] = 'prov=42;city=1';  
  18. }  
  19. if($data){  
  20. $option[CURLOPT_POST] = 1;  
  21. $option[CURLOPT_POSTFIELDS] = $data;  
  22. }  
  23. curl_setopt_array($ch,$option);  
  24. $response = curl_exec($ch);  
  25. if(curl_errno($ch) > 0){  
  26. throw_exception("CURL ERROR:$url ".curl_error($ch));  
  27. }  
  28. curl_close($ch);  
  29. return $response;  
  30. }  
  31. function login($username,$password){  
  32. if($username && $password){  
  33. $preLoginData = curlRequest('http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su='.base64_encode($username).'&client=ssologin.js(v1.3.16)','',self::COOKIE_FILE);  
  34. preg_match('/sinaSSOController.preloginCallBack((.*))/',$preLoginData,$preArr);  
  35. $jsonArr = json_decode($preArr[1],true);  
  36. if(is_array($jsonArr)){  
  37. $postArr = array(  
  38. 'entry' => 'weibo',  
  39. 'gateway' => 1,  
  40. 'from' => '',  
  41. 'savestate' => 7,  
  42. 'useticket' => 1,  
  43. 'ssosimplelogin' => 1,  
  44. 'su' => base64_encode(urlencode($username)),  
  45. 'service' => 'miniblog',  
  46. 'servertime' => $jsonArr['servertime'],  
  47. 'nonce' => $jsonArr['nonce'],  
  48. 'pwencode' => 'wsse',  
  49. 'sp' => sha1(sha1(sha1($password)).$jsonArr['servertime'].$jsonArr['nonce']),  
  50. 'encoding' => 'UTF-8',  
  51. 'url' => 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',  
  52. 'returntype' => 'META'  
  53. );  
  54. $loginData = curlRequest('http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.16)',$postArr,self::COOKIE_FILE);  
  55. if($loginData){  
  56. $matchs = array();  
  57. preg_match('/replace('(.*?)')/',$loginData,$matchs);  
  58. $loginResult = curlRequest($matchs[1],'',self::COOKIE_FILE);  
  59. $loginResultArr = array();  
  60. preg_match('/feedBackUrlCallBack((.*?))/',$loginResult,$loginResultArr);  
  61. //$userInfo = json_decode($loginResultArr[1],true);  
  62. //Log::info(var_export($loginResultArr[1]));  
  63. }else{  
  64. throw_exception('Login sina fail.');  
  65. }  
  66. }else{  
  67. throw_exception($preLoginData);  
  68. }  
  69. }else{  
  70. throw_exception('Param error.');  
  71. }  

 

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门