如何尋找出微信官方的微信指數API ?

微信指數的橫空出世,立即就攪了整個互聯網,很多人都在觀察,很多對標產品也正在緊鑼密鼓的開發中。既然要使用微信指數,相信很多人都希望可以獲取到微信指數的官方API。現在,我們就來找一找微信指數的API。

第一步,手機搜索微信指數,我們發現微信搜索的BaseUri是https://search.weixin.qq.com,但是,這個地址卻不能發送到Windows客戶端。所以我抓包找到了https://search.weixin.qq.com/cgi-bin/searchweb/clientjump?tag=wxindex

第二步,在微信的Windows客戶端訪問https://search.weixin.qq.com/cgi-bin/searchweb/clientjump?tag=wxindex,就可以看到微信指數的搜索頁面了。如果這時,你用默認瀏覽器訪問該URI,就會發現返回了一段JSON字符串,告訴你參數無效。

第三步,不要氣餒,我們繼續來。雖然微信指數的首頁不能在瀏覽器中直接訪問,但是我們卻可以搜索某個關鍵詞進入指數詳情頁面,這樣就可以直接使用瀏覽器來訪問了。

第四步,現在我們得到了https://search.weixin.qq.com/cgi-bin/h5/wxindex/detail.html?q=%E5%A4%A9%E6%B4%A5#wechat_redirect這個網址。detail頁面既然已經展示使用highcharts的圖表,那么數據一定是通過Ajax傳入了Json數據,再進行渲染的。

第五步,打開https://search.weixin.qq.com/cgi-bin/h5/wxindex/detail.html?q=%E5%A4%A9%E6%B4%A5#wechat_redirect的源代碼,從240行開始,我們終于要發現線索了。

baseUrl: "https://wximg.qq.com/mmsearch/h5/dist/",指明了js文件所在的路徑,下面的兩個key分別為20170101-mmsearch-wxindex-common.js20170101-mmsearch-wxindex-detail.min.js是我們尋找的關鍵。

首先我們打開https://wximg.qq.com/mmsearch/h5/dist/wxindex/wxindex-common.js?v=2,密密麻麻都是壓縮過的js代碼。沒事,我們只需要尋找關鍵部分,就是

var e=encodeURIComponent(encodeURIComponent(window.location.href.replace(/#[\d\w\=\?.\&]+/,""))),i="http://search.weixin.qq.com/cgi-bin/searchweb/getjsapiticket?sign_url="+e;

首先我們來看聲明的變量e,就是經過URL編碼后的一個字符串,然后將它以keysign_url的GET方式訪問search.weixin.qq.com/cgi-bin/searchweb/getjsapiticket,那么我們就來嘗試一下。

將第二步中的URI經過URL編碼得到https%3a%2f%2fsearch.weixin.qq.com%2fcgi-bin%2fsearchweb%2fclientjump%3ftag%3dwxindex,然后把它附加在https://search.weixin.qq.com/cgi-bin/searchweb/getjsapiticket?sign_url=的后面,直接訪問它。

又得到了JSON的響應,其他的我們不用管,我們只需要找到data中的timestamp,它代表了UNIX時間戳的格式,這個格式我們后面需要用到。

第六步,我們打開上一步中找到的第二個js文件https://wximg.qq.com/mmsearch/h5/dist/wxindex/detail.min.js?v=5(注意觀察這個文件的名字,是不是和https://search.weixin.qq.com/cgi-bin/h5/wxindex/detail.html?q=微信#wechat_redirect有些地方很相似呢?)。打開這個js后,發現這就是我們要找的文件,比如“該詞條暫未被收錄”這個目前只有微信指數搜索的空結果才會提示的Error信息,正是對應該文件的標識。

我們還是來找關鍵部分,

getWxIndexData:function(){var e=this,t=new Date;if(e.end_time=t.getTime()/1e3-86400,e.start_time=t.getTime()/1e3-7776e3,e.query){var a="https://search.weixin.qq.com/cgi-bin/searchweb/getwxindex",n={query:e.query,start_time:e.start_time,end_time:e.end_time};

代碼其實已經很明顯了,getWxIndexData就是“獲取微信指數數據”的定義,變量t被當前時間賦值,e.start_timee.end_time被t的getTime()方法的返回值做了進一步處理,說明這兩個變量就是微信指數中的“7天”、“30天”、“90天”的日期范圍起始值,變量a定義了api的地址及我們需要的三個參數:https://search.weixin.qq.com/cgi-bin/searchweb/getwxindex?query=【關鍵詞】&start_time=【日期范圍起始時間戳】&end_time=【日期范圍截止時間戳】

最后,我們來驗證一下,通過時間戳工具,我們得到了當前的時間戳1490322890,那么7天之前(2017年3月24日 10:35:22)的時間戳就是1489718155,我們來搜索一下【天津】這個指數,訪問URI:https://search.weixin.qq.com/cgi-bin/searchweb/getwxindex?query=%E5%A4%A9%E6%B4%A5&start_time=1489718155&end_time=1490322890

我們得到了json的響應,數據為"wxindex": "11666515.00,5237192.00,4685480.00,8226879.00,8329063.50,8431248.00,8431248.00,8431248.00",從手機端搜索微信指數并對比一下,以此驗證。

以上,完。

寧大叔小怪獸

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,814評論 25 708
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,489評論 2 45
  • 鄉城,素有香巴拉之域和白色珍珠散落山谷的美譽,金色鋪滿了這片土地的每一個角落,映襯著天空的藍,偶爾還帶著片片雪花…...
    行咖在路上閱讀 280評論 0 0
  • 1.由此可見,人這一生,機遇只有一次,而如何抓住機遇卻是自己的事,否則即便天降好事砸到你頭頂,你也渾然不覺。2.在...
    南之嘉木閱讀 167評論 0 0