php新浪通行证、新浪微博模拟统一登录(后台网页抓取版)2016
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php新浪通行证、新浪微博模拟统一登录(后台网页抓取版)2016,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5082字,纯文字阅读大概需要8分钟。
内容图文
![php新浪通行证、新浪微博模拟统一登录(后台网页抓取版)2016](/upload/InfoBanner/zyjiaocheng/206/b5a5ff520d7c44568efa4ea3de94b09d.jpg)
'login.sina.com.cn', 'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0', 'Accept' => '*/*', 'Accept-Language' => 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding' => 'gzip, deflate', 'Referer' => 'http://login.sina.com.cn/', 'Connection' => 'keep-alive' ); //base64加密后用户名 private $su = ''; //js加密后的密码 private $sp = ''; function __construct() { } //预登陆 function pre_login() { // 用户名称base64加密-用于预登陆 $this->su = base64_encode ( urlencode ( $this->username ) ); // 预登陆url $pre_login_url = 'http://login.sina.com.cn/sso/prelogin.php?entry=account&callback=sinaSSOController.preloginCallBack&su='; $pre_login_url = $pre_login_url . $this->su . '&rsakt=mod&client=ssologin.js(v1.4.15)&_=' . time (); $return_val = $this->request_url ( $pre_login_url, null, $this->request_cookie, $this->request_headers); list ( $header, $body ) = explode ( "\r\n\r\n", $return_val, 2 ); preg_match_all ( "/Set\-Cookie:([^;]*);/", $header, $matches ); $info ['cookie'] = $matches; $info ['header'] = $header; $info ['content'] = $body; $this->request_cookie .= $matches; $body = str_replace('sinaSSOController.preloginCallBack(', '', $body); $json = str_replace(')', '', $body); $this->json_obj = json_decode($json); //ajax后变量重置,所以存到cookie param::set_cookie('sina_su', $this->su); param::set_cookie('sina_cookie', $this->request_cookie); param::set_cookie('sina_servertime', $this->json_obj->servertime); param::set_cookie('sina_nonce', $this->json_obj->nonce); param::set_cookie('sina_rsakv', $this->json_obj->rsakv); //加密明文密码 $this->ajax_pwd_encode(); } //根据预登陆返回信息,登录 function account_login() { //登录url $login_url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_='.time(); $this->request_headers['Content-Type'] = 'application/x-www-form-urlencoded'; //登录所需数据 $post_data['entry'] = 'account'; $post_data['gateway'] = '1'; $post_data['from'] = ''; $post_data['savestate'] = '0'; $post_data['useticket'] = '0'; $post_data['pagerefer'] = ''; $post_data['vsnf'] = '1'; $post_data['su'] = param::get_cookie('sina_su'); $post_data['service'] = 'sso'; $post_data['servertime'] = param::get_cookie('sina_servertime'); $post_data['nonce'] = param::get_cookie('sina_nonce'); $post_data['pwencode'] = 'rsa2'; $post_data['rsakv'] = param::get_cookie('sina_rsakv'); $post_data['sp'] = $this->sp; $post_data['sr'] = '1366*768'; $post_data['encoding'] = 'UTF-8'; $post_data['cdult'] = '3'; $post_data['domain'] = 'sina.com.cn'; $post_data['prelt'] = '51'; $post_data['returntype'] = 'TEXT'; //登录 $data = $this->request_url($login_url, $post_data, $this->request_cookie, $this->request_headers); //获取返回cookie 及 json数据 list ( $header, $body ) = explode ( "\r\n\r\n", $data, 2 ); //保存cookie $this->save_cookie($header); $json_login = json_decode($body); //访问返回json链接 $domain_urls = $json_login->crossDomainUrlList; $i = 0; foreach ($domain_urls as $v) { $req_url = $v.'&callback=sinaSSOController.doCrossDomainCallBack&scriptId=ssoscript'.$i.'&client=ssologin.js(v1.4.15)&_='.time(); $req_data = $this->request_url ( $req_url, null, $this->request_cookie, array(), 0); // list ( $header, $body ) = explode ( "\r\n\r\n", $data, 2 );// $this->save_cookie($header); $i ++; } } function save_cookie($header) { $headers = explode('\r\n', $header); foreach ($headers as $v) { $tmp = explode("\r\n", $v); foreach ($tmp as $it) { $pos = strpos($it, 'Set-Cookie'); if ($pos !== false) { $cv = explode(":", $it); $this->request_cookie .= $cv[1].';'; } } } } function sina_login() { //获取加密后的密码 $this->sp = $_GET['sp']; //账号登录 $this->account_login(); //重定向到新浪通行证页面 $this->request_cookie = trim($this->request_cookie); $this->request_headers['Content-Type'] = 'text/html'; $url = 'http://login.sina.com.cn'; //返回的html $html = $this->request_url($url, null, $this->request_cookie, $this->request_headers, 0); } //调用js 加密密码 function ajax_pwd_encode() { echo ""; echo <<结果为字符串且输出到屏幕上 if ($is_post) { curl_setopt ( $ch, CURLOPT_POST, 1 ); // post提交方式 curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data ); // post数据 } curl_setopt ( $ch, CURLOPT_COOKIE, $request_cookies ); // 请求cookie curl_setopt ( $ch, CURLOPT_HEADER, $return_cookie); // 返回cookie到头 curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 120 ); curl_setopt ( $ch, CURLOPT_HTTPHEADER, $request_headers ); curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1); $data = curl_exec ( $ch ); // 运行curl curl_close ( $ch ); return $data; }}?>$v ) { $o .= "$k=" . urlencode ( $v ) . "&"; } $post_data = substr ( $o, 0, - 1 ); $is_post = true; } $ch = curl_init (); // 初始化curl curl_setopt ( $ch, CURLOPT_URL, $url ); // 抓取指定网页 curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); // 要求
内容总结
以上是互联网集市为您收集整理的php新浪通行证、新浪微博模拟统一登录(后台网页抓取版)2016全部内容,希望文章能够帮你解决php新浪通行证、新浪微博模拟统一登录(后台网页抓取版)2016所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。