自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Node.js發(fā)送微信 獲取fakeID

移動(dòng)開(kāi)發(fā)
上一章已經(jīng)講過(guò)如何用node.js發(fā)送微信消息了,,這一章為大家深入一點(diǎn)研究微信公眾平臺(tái)的機(jī)制。

首先我們要獲取這個(gè)發(fā)送微信人的信息,當(dāng)你用控制臺(tái)查看微信的接口你會(huì)發(fā)現(xiàn),要有一個(gè)Fakeid,那么我們首要要獲取Fakeid,其他就好辦了.首先 我們先獲取登錄人的這個(gè)fakeid,防止后面還會(huì)用的.看了一下微信公眾平臺(tái)的所有api接口,,沒(méi)有發(fā)現(xiàn),那么我們只能去它的用戶(hù)頁(yè)面去拿,代碼如 下:

  1. getFakeId: (options, fn) -> 
  2.     request 
  3.       .get('http://mp.weixin.qq.com/cgi-bin/userinfopage?t=wxm-setting&lang=zh_CN#'
  4.       .set('Cookie', options.cookie) 
  5.       .end (res) -> 
  6.          //這里是你的fakeid 
  7.  //在拿到的結(jié)果里,實(shí)際上是一個(gè)頁(yè)面的所有數(shù)據(jù),那么我們只能用正則去匹配到所需的fakeid數(shù)據(jù),下面是完整的代碼: 
  8. getFakeId: (options, fn) -> 
  9.     request 
  10.       .get('http://mp.weixin.qq.com/cgi-bin/userinfopage?t=wxm-setting&lang=zh_CN#'
  11.       .set('Cookie', options.cookie) 
  12.       .end (res) -> 
  13.         fakeid = res.text.match(/FakeID : "(\d+)"/)[1] 
  14.         fn null, fakeid 

到了這一步,其實(shí)還沒(méi)有成功,因?yàn)槲覀冞€沒(méi)有拿到發(fā)送人的fakeid,不然怎么發(fā)微信消息給好友呢?于是,我們要去微信公眾平臺(tái)的用戶(hù)管理頁(yè)面拿到你所有的好友的fakeid,代碼如下:

  1. getFriendPage: (req, fn) -> 
  2.     @login (err, cookie)-> 
  3.       request 
  4.         .get('http://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&lang=zh_CN&pagesize=&pageidx=0&type=0&groupid=0'
  5.         .set('Cookie', cookie) 
  6.         .end (res) -> 
  7.        //在這里res.text已經(jīng)是用戶(hù)管理頁(yè)面的html代碼了,但是并不會(huì)出來(lái),一番查找后,發(fā)現(xiàn)是因?yàn)樗锩娴膉s在我們這里用是有跨域的問(wèn)題的,知道問(wèn)題就好辦了,查找html它里面設(shè)置了document.domain:`document.domain = document.location.hostname.match(/[^\.]+\.com/)[0];`結(jié)果在控制臺(tái)的輸出是qq.com,看到這里,就證明我的判斷是沒(méi)有錯(cuò)誤的.正則替換掉里面的hostname就ok了.完整代碼如下: 
  8. getFriendPage: (req, fn) -> 
  9.     @login (err, cookie)-> 
  10.       request 
  11.         .get('http://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&lang=zh_CN&pagesize=&pageidx=0&type=0&groupid=0'
  12.         .set('Cookie', cookie) 
  13.         .end (res) -> 
  14.           rs = res.text.replace(/document.location.hostname.match.*\[0\]/g, '"'+req.host+'"'
  15.           fn null, res.text 

在這里,大家已經(jīng)能拿到所有好友的fakeid了,但是不能用jsdom或者cheerio去拿,因?yàn)槭钦麄€(gè)頁(yè)面加載后才出現(xiàn)好友的html的,至于解決 方法我是用phantom.js解決的,具體代碼我就不貼了,因?yàn)橐婕暗桨惭b什么的.因?yàn)檠芯课⑿殴娖脚_(tái)時(shí)間也就幾天,如果有更好的方法獲取好友的 fakeid請(qǐng)?jiān)谙旅媪粞?

到這一步,在這里已經(jīng)拿到了fakeid了,我們可以去拿到這個(gè)微信好友的相關(guān)信息,在微信公眾平臺(tái)中,找到了如下接口,以下是代碼:

  1. getInfo: (fakeid, fn) -> 
  2.     @login (err, cookie) -> 
  3.       request 
  4.         .post(’http://mp.weixin.qq.com/cgi-bin/getcontactinfo?t=ajax-getcontactinfo&fakeid=‘+fakeid) 
  5.         .type('form'
  6.         .set('Cookie', cookie) 
  7.         .end (res) -> 
  8.           fn null, JSON.parse res.text 

調(diào)用代碼打印以下結(jié)果:

  1. FakeId: "xxxx"
  2. NickName: "岳蒙"
  3. ReMarkName: ""
  4. Username: "xxxx"
  5. Signature: ""
  6. Country: "中國(guó)"
  7. Province: "江西"
  8. City: "南昌"
  9. Sex: "1"
  10. GroupID: "0"
  11. Groups: [ 
  12. GroupId: "0"
  13. GroupName: "未分組" 
  14. }, 
  15. GroupId: "1"
  16. GroupName: "黑名單" 
  17. }, 
  18. GroupId: "2"
  19. GroupName: "星標(biāo)組" 

當(dāng)然群發(fā)的話(huà)也挺簡(jiǎn)單的,我已經(jīng)做好了就不發(fā)了,大家可以貼出自己的代碼,互相討論下。

微信發(fā)送到這里已經(jīng)講完,大家有更好的玩法也歡迎分享。

責(zé)任編輯:徐川 來(lái)源: net
相關(guān)推薦

2021-12-25 22:29:57

Node.js 微任務(wù)處理事件循環(huán)

2013-11-01 09:34:56

Node.js技術(shù)

2015-03-10 10:59:18

Node.js開(kāi)發(fā)指南基礎(chǔ)介紹

2013-04-12 01:22:02

2011-09-09 14:23:13

Node.js

2011-11-01 10:30:36

Node.js

2011-09-08 13:46:14

node.js

2011-09-02 14:47:48

Node

2012-10-24 14:56:30

IBMdw

2011-11-10 08:55:00

Node.js

2020-05-29 15:33:28

Node.js框架JavaScript

2012-02-03 09:25:39

Node.js

2015-06-23 15:27:53

HproseNode.js

2020-10-26 08:34:13

Node.jsCORS前端

2021-02-01 15:42:45

Node.jsSQL應(yīng)用程序

2024-07-08 08:53:52

2021-04-06 10:15:29

Node.jsHooks前端

2021-07-09 00:24:10

No.jsNode.js原理

2022-08-28 16:30:34

Node.jsDocker指令

2014-03-07 13:43:32

Node.jsNode
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)