注明:番外篇,非微信官方正式接口不推荐使用...........(骚年们,慎用);
在微信开发中,为了获取用户的信息,公众帐号的一些信息,除了经过官方给出的接口外,还能够经过"非法手段"经过模拟登录进行获取数据(PHPCURL,或者是借助snoopy类库);下面示例经过模拟登录获取公众帐号信息(借助于snoopy类库),在作模拟登录获取数据以前,你须要了解一下http知识,一些抓包软件(这里LZ使用的是chrome的F12进行分析...主要是不会用各类抓包工具),打开php的curl扩展等.
1.经过模拟登录 获取 TOKEN(万恶的TOKEN) 和 cookie
主要步骤 1. 下载snoopy,直接Google便可找到下载连接,页面中引入snoopy,snoopy类使用方法请自行Google
2. 打开公众平台登录页面 进行抓包分析!
能够看到,在登录是微信将发送 username,pwd,imgcode,f 三个参数到 http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN URL上. username, pwd 即微信公众帐号的登录邮箱和密码.imgcode 参数能够不用理会;pwd须要用MD5进行加密
核心代码以下:php
$snoopy = new Snoopy(); $submit = "http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN"; $snoopy->referer = "http://mp.weixin.qq.com/"; $snoopy->rawheaders["Origin"] = "http://mp.weixin.qq.com"; $snoopy->rawheaders["Host"] = "mp.weixin.qq.com"; $snoopy->rawheaders["Pragma"] = "no-cache"; $post["username"] = $user; $post["pwd"] = md5($pwd); $post['imgcode'] = ''; $post["f"] = "json"; $snoopy->submit($submit,$post); //取出token $rs = json_decode($snoopy->results,true); preg_match('/token=(\d+)/',$rs['redirect_url'],$token); //取得token[1]就是token值 $cookie = ''; foreach ($snoopy->headers as $key => $value) { $value = trim($value); if(strpos($value,'Set-Cookie: ') || strpos($value,'Set-Cookie: ') === 0){ $tmp = str_replace("Set-Cookie: ","",$value); $tmp = str_replace("Path=/","",$tmp); $cookie .= $tmp.';'; } } if(strlen($cookie) > 20){ $a['cookie'] = $cookie; $a['token'] = $token[1]; $this->cookie = $cookie; $this->token = $token[1]; $this->results = $a; return $a; //返回数组 }else{ return false; }
返回的数组$a 即 COOKIE 和 TOKEN;微信机制是TOKEN在7200S 以后自动过时.chrome
修改 微信更新后 继续使用http没法获取到数据 须要采用http 443端口 须要使用snoopy 2.0版本 snoopy 1.*版本 win环境下不支持https协议..................json