註明:番外篇,非微信官方正式接口不推薦使用...........(騷年們,慎用);
在微信開發中,爲了獲取用戶的信息,公衆帳號的一些信息,除了經過官方給出的接口外,還能夠經過"非法手段"經過模擬登錄進行獲取數據(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