如何用Node.js改写微信协议实现长尾词登录功能?

2026-04-06 12:261阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计609个文字,预计阅读时间需要3分钟。

如何用Node.js改写微信协议实现长尾词登录功能?

使用Node.js实现微信协议登录的简单示例代码:

javascriptconst http=require('http');const https=require('https');const crypto=require('crypto');const fs=require('fs');const express=require('express');const iconv=require('iconv-lite');

var app=express();

如何用Node.js改写微信协议实现长尾词登录功能?

app.get('/wechatlogin', function(req, res) { // 登录逻辑代码});

wechatlogin.js

//使用NodeJs实现微信协议登录 var login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid="+nowUuid+"&tip=1&r="+checkTime+"&_="+time; request(url, function (error, response, body) { if (!error && response.statusCode == 200) { isResponsed=true; var code = getSubstr(body,'window.code=',';'); switch (code){ case "200": url=getSubstr(body,'window.redirect_uri="','";'); url+="&fun=new&version=v2"; request(url, function (error, response, body) { if (!error && response.statusCode == 200) { BaseRequest.skey=getSubstr(body,' ',' '); BaseRequest.Sid=getSubstr(body,' ',' '); BaseRequest.Uin=getSubstr(body,' ',' '); BaseRequest.pass_ticket=getSubstr(body,'

',' '); var cookieArr=response.headers['set-cookie']; Config.cookie=""; cookieArr.forEach(function (cookie){ var c=getSubstr(cookie,"",'; Domain'); Config.cookie+=c+"; "; }); debug("Wechat login success!"); res.end(); url = "wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r="+(~getTimeStamps())+"&pass_ticket="+BaseRequest.pass_ticket; request({ url: url, method: "POST", json: false, headers: { "content-type": "application/json", }, body: JSON.stringify({"BaseRequest":BaseRequest}) }, function(error, response, body) { if (!error && response.statusCode == 200) { body=JSON.parse(body); Config.myinfo=body.User; Config.last=body.SyncKey; debug("Listen wechat message..."); //Now start listen wechat message if(!progressListen){ //if not listenning... msgloop(); progressListen=true; } }else{ debug("Listen wechat message error"); } }); }else{ debug("Wechat login error!"); } }); break; case "201": res.setHeader("Refresh",1); res.end("Please confirm the login request!"); debug("Please confirm the request of login"); break; case "408": progressWaiting=false; debug("Login timeout and refresh please"); break; default: res.setHeader("Refresh",1); res.end(); progressWaiting=false; console.log(body); } }else{ progressWaiting=false; debug("Error with "+response.statusCode); } }); setTimeout(function() { if(!isResponsed){ progressWaiting=false; res.setHeader("Refresh",1); res.end(); } }, 3000); } }); function msgloop(){ debug("Getting Message..."); url = "wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid="+BaseRequest.Sid+"&skey="+BaseRequest.skey+"&lang=zh_CN&pass_ticket="+BaseRequest.pass_ticket; request({ url: url, method: "POST", json: false, headers: { "content-type": "application/json", }, body: JSON.stringify({"BaseRequest":BaseRequest,"SyncKey":Config.last,"rr":(~getTimeStamps())}) }, function(error, response, body) { if (!error && response.statusCode == 200) { body=JSON.parse(body); //console.log(body); Config.last=body.SyncKey; body.AddMsgList.forEach(function (msg){ console.log("MSG from "+msg.FromUserName+" : "+msg.Content); var fromType=msg.FromUserName.substring(0,2); if(fromType=="@@"){ //群消息 debug("Msg From Group : "+msg.Content); responseMsg(msg.FromUserName,"[自动回复]:"+msg.Content); }else{ fromType=msg.FromUserName.substring(0,1); if(fromType=="@"){ //个人消息 debug("Msg From Person : "+msg.Content); responseMsg(msg.FromUserName,"[自动回复]:"+msg.Content); }else{ //公众号消息 debug("Msg From MpAccount : "+msg.Content); } } }); } setTimeout(function(){ msgloop(); },rand(1000,5000)); }); } function responseMsg(FromUserName,Content){ var url="wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?lang=zh_CN&pass_ticket="+BaseRequest.pass_ticket; var localId=(getTimeStamps()+rand(100,999)); request({ url: url, method: "POST", json: false, headers: { "content-type": "application/json", }, body: JSON.stringify({"BaseRequest":BaseRequest,"Msg":{ "ClientMsgId":localId, "Content":Content, "FromUserName":Config.myinfo.UserName, "LocalID":localId, "ToUserName":FromUserName, "Type":1 },"Scene":0}) }, function(error, response, body) { debug("Message response success!"); }); } app.get('/*', function(req, res) { var params = req.originalUrl; res.send("

808 Not Found

Nginx&Node
"); }); var server = app.listen(10002, function() { //var host = server.address().address //var port = server.address().port debug("Server running..."); });

本文共计609个文字,预计阅读时间需要3分钟。

如何用Node.js改写微信协议实现长尾词登录功能?

使用Node.js实现微信协议登录的简单示例代码:

javascriptconst http=require('http');const https=require('https');const crypto=require('crypto');const fs=require('fs');const express=require('express');const iconv=require('iconv-lite');

var app=express();

如何用Node.js改写微信协议实现长尾词登录功能?

app.get('/wechatlogin', function(req, res) { // 登录逻辑代码});

wechatlogin.js

//使用NodeJs实现微信协议登录 var login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid="+nowUuid+"&tip=1&r="+checkTime+"&_="+time; request(url, function (error, response, body) { if (!error && response.statusCode == 200) { isResponsed=true; var code = getSubstr(body,'window.code=',';'); switch (code){ case "200": url=getSubstr(body,'window.redirect_uri="','";'); url+="&fun=new&version=v2"; request(url, function (error, response, body) { if (!error && response.statusCode == 200) { BaseRequest.skey=getSubstr(body,' ',' '); BaseRequest.Sid=getSubstr(body,' ',' '); BaseRequest.Uin=getSubstr(body,' ',' '); BaseRequest.pass_ticket=getSubstr(body,'

',' '); var cookieArr=response.headers['set-cookie']; Config.cookie=""; cookieArr.forEach(function (cookie){ var c=getSubstr(cookie,"",'; Domain'); Config.cookie+=c+"; "; }); debug("Wechat login success!"); res.end(); url = "wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r="+(~getTimeStamps())+"&pass_ticket="+BaseRequest.pass_ticket; request({ url: url, method: "POST", json: false, headers: { "content-type": "application/json", }, body: JSON.stringify({"BaseRequest":BaseRequest}) }, function(error, response, body) { if (!error && response.statusCode == 200) { body=JSON.parse(body); Config.myinfo=body.User; Config.last=body.SyncKey; debug("Listen wechat message..."); //Now start listen wechat message if(!progressListen){ //if not listenning... msgloop(); progressListen=true; } }else{ debug("Listen wechat message error"); } }); }else{ debug("Wechat login error!"); } }); break; case "201": res.setHeader("Refresh",1); res.end("Please confirm the login request!"); debug("Please confirm the request of login"); break; case "408": progressWaiting=false; debug("Login timeout and refresh please"); break; default: res.setHeader("Refresh",1); res.end(); progressWaiting=false; console.log(body); } }else{ progressWaiting=false; debug("Error with "+response.statusCode); } }); setTimeout(function() { if(!isResponsed){ progressWaiting=false; res.setHeader("Refresh",1); res.end(); } }, 3000); } }); function msgloop(){ debug("Getting Message..."); url = "wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid="+BaseRequest.Sid+"&skey="+BaseRequest.skey+"&lang=zh_CN&pass_ticket="+BaseRequest.pass_ticket; request({ url: url, method: "POST", json: false, headers: { "content-type": "application/json", }, body: JSON.stringify({"BaseRequest":BaseRequest,"SyncKey":Config.last,"rr":(~getTimeStamps())}) }, function(error, response, body) { if (!error && response.statusCode == 200) { body=JSON.parse(body); //console.log(body); Config.last=body.SyncKey; body.AddMsgList.forEach(function (msg){ console.log("MSG from "+msg.FromUserName+" : "+msg.Content); var fromType=msg.FromUserName.substring(0,2); if(fromType=="@@"){ //群消息 debug("Msg From Group : "+msg.Content); responseMsg(msg.FromUserName,"[自动回复]:"+msg.Content); }else{ fromType=msg.FromUserName.substring(0,1); if(fromType=="@"){ //个人消息 debug("Msg From Person : "+msg.Content); responseMsg(msg.FromUserName,"[自动回复]:"+msg.Content); }else{ //公众号消息 debug("Msg From MpAccount : "+msg.Content); } } }); } setTimeout(function(){ msgloop(); },rand(1000,5000)); }); } function responseMsg(FromUserName,Content){ var url="wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?lang=zh_CN&pass_ticket="+BaseRequest.pass_ticket; var localId=(getTimeStamps()+rand(100,999)); request({ url: url, method: "POST", json: false, headers: { "content-type": "application/json", }, body: JSON.stringify({"BaseRequest":BaseRequest,"Msg":{ "ClientMsgId":localId, "Content":Content, "FromUserName":Config.myinfo.UserName, "LocalID":localId, "ToUserName":FromUserName, "Type":1 },"Scene":0}) }, function(error, response, body) { debug("Message response success!"); }); } app.get('/*', function(req, res) { var params = req.originalUrl; res.send("

808 Not Found

Nginx&Node
"); }); var server = app.listen(10002, function() { //var host = server.address().address //var port = server.address().port debug("Server running..."); });