轉到腳本標籤頁,咱們要找的是登陸那塊的JS代碼,好根據你們豐富的經驗,判斷出那個名字很長的先後有個勾的JS文件是包含登陸代碼的,咱們選擇查看它。沒有經驗的朋友們也不要慌,右邊有個搜索框,你去搜下「登錄」或者「login」,而後慢慢找也是能夠的嘛。(我前文和下文說的都是IE9,其它瀏覽器我不知道,請你們本身對應)java
選擇了這個JS文件後,可能你看到的是一坨壓縮過的代碼,點擊上圖長的紅框左邊的那個錘子和不知道什麼東西交叉在一塊兒的那個按鈕,在下拉菜單裏選擇「格式化JavaScript」。而後咱們翻翻代碼,找到這一段代碼:jquery
第一句裏的t,咱們猜他是jquery好了,其實並不重要,關鍵是後面的post,網址是這個「/cgi-bin/login?lang=zh_CN」,加上主機地址就是「https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN」,也就是說咱們要像這個網址post這些個東西過去:username:e.account,pwd:t.md5(e.password.substr(0,16)),imgcode:c.data("isHide")?"":e.verify,f:"json"。簡單分析一下,就四個東西username用戶名、pwd密碼(MD5加密)、imgcode驗證碼、f格式是json。json
咱們能夠看到驗證碼能夠是三目運算,要是驗證碼圖片是隱藏的,就傳"",要是顯示着就傳驗證碼。我一開始想着傳一個"",它總是返回-6,看上面的代碼可知是「請輸入圖中的驗證碼」,開源社區裏有一個開源的項目,java寫的,他的作法是失敗了再試,多試幾回,不知道試幾回能成功,應該不多的次數吧,算是一種成功的案例吧,你們能夠試試循環不停的登陸。當時我就是死腦筋,它讓我輸入驗證碼我就輸入驗證碼好了,在「開發人員工具」能夠看到登陸代碼的上面一點點是下載驗證碼圖片的瀏覽器
能夠很簡單的看到網址是 https://mp.weixin.qq.com /cgi-bin/verifycode?username=你的賬號&r=一個日期毫秒數(名字是我亂起的,至關於一個隨機數)。咱們先獲取驗證碼,而後把它和賬號密碼一塊兒發回去,返回的結果應該仍是-6,這是怎麼回事呢?(不得不注一下:我說的是幾個月前的,那是後微信公衆平臺仍是HTTP的不是HTTPS的,期間網站變更過,我說的東西不必定對,可是出來的結果必定是對的,好比你把賬號和密碼發過去一次就成功了,也沒發驗證碼。我接下來講的是極端的狀況,即:賬號密碼驗證碼都發了仍是-6,若是你一次就成功了,下面的請跳過)服務器
接下來要講到IE9開發人員工具的另外一個功能(至關於抓包),在「網絡」選項卡里有一個按鈕叫「開始捕獲」,點了它以後,這個網頁發的接的全部的消息都內被記錄下來。
我來試試看登陸,此次我不會輸入正確的賬號密碼,由於正確的話它會調到另外一個頁面,捕獲的內容會被重置掉(由於又是一個新的頁面了)。微信
雙擊這個記錄,而後能夠看到下面的cookie
還有請求正文,我就不截圖了:username=賬號&pwd=32位小寫MD5加密以後的密碼&imgcode=驗證碼&f=json。
咱們反過來思考,咱們明明什麼都發了,作的和IE同樣,這些值都post過去了,爲啥服務器還說咱們錯呢?咱們看那張請求標頭的圖,它上面每個咱們都分析一下,咱們全都照着抄好了,咱們把HttpRequest的屬性都是設一下,我總結了一下,主要是Content-Type、User-Agent、Content-Length和cookie。前面三個都是固定的值,那麼cookie從哪來呢?看那張捕獲列表截圖,login下面那個記錄,咱們登陸失敗後它去獲取驗證碼了,咱們去看一下它的詳細信息網絡
咱們能夠看到,在下載到圖片的同時,接收到了一個cookie,反正咱們的目的就是要模擬IE(模擬瀏覽器),因此咱們每次請求資源的時候,都把cookie保存下來,在下次請求的時候傳回去好了,也別管它須要不須要。微信公衆平臺
這樣post消息的話應該就能成功了。成功消息應該是這樣的ide
若是不成功,本身多試試,看看上述的這些有哪些漏了。社區裏我見過一位同志用ASP寫的,我看了他po出來的全部代碼也沒有發現任何問題。。。。這種東西只有本身試,之前還好,能用wireshark抓包看的,如今是HTTPS的,抓出來的都是亂碼,很差對比了。
模擬登陸的步驟能夠是:不停的向 https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN post username:賬號,pwd:t.md5(密碼.substr(0,16)),imgcode:"",f:"json",
或者先獲取驗證碼(同時保存cookie),而後發送賬號密碼驗證碼(帶上cookie)。關於收發cookie,C#我推薦用CookieContainer,VB的好像不用保存,只要在一個程序裏貌似對象本身會保存