JAVA版微信机器人(非公众号)【L】

本文介绍了如何使用JAVA实现微信个人聊天机器人,通过模拟WEB微信登录流程,包括二维码生成、登录验证、信息同步等步骤,解析了微信Web版的通信过程,展示了在微信未提供API情况下开发微信机器人的技术细节。
摘要由CSDN通过智能技术生成

JAVA微信机器人(一)


我这是强调,我做的是个人聊天微信机器人,非公众号。就是你和你朋友聊天时用的微信。以下是微信机器人和我朋友的聊天记录。

首先,微信并没有给我们提供任何接口,或者功能去开发微信机器人。那么我们唯一的渠道就是用WEB微信,模拟浏览器,获取聊天记录,然后智能回复。当然说到智能我们可以用网上一些智回复插件。比如图灵。图灵的开发不难,因为别人提供好了接口给你用。但是微信就不一样了。我们先分析WEB微信的登录—聊天的过程。

1、WEB微信网址https://wx.qq.com/

大家访问时这个网址给我们的就是一个二维码。二维码里面无非就是一个网址。手机扫描后,用微信浏览器访问这个网址,并传送相应的数据。

好吧。我们先分析二维码生成流程。


以下先用转载,暂时没时间自己写。

昨天是周末,在家闲得无聊,于是去weiphone.com逛了一圈,偶然发现有人发了一帖叫《微信 for Mac》,这勾起了我的好奇心,国内做Mac开发的人确实很少,对于那些能够独自开发一些Mac第三方工具的开发者我都表示很敬畏,于是点进去看了一个究竟,如果你们好奇也可以点进去看个明白,我最终得出的结论就是:坑爹呢这是!直接用一个WebView去加载了wx.qq.com这个网页也敢自称是微信For Mac?对于这种欺骗用户的行为我十分不屑,同时也让我在思考在微信不提供API的环境下开发一款原生的微信Mac版本是否可行,最有可能的就是去分析微信Web版本的通信过程,然后在程序中模拟这个流程,在我苦苦研究了一个下午之后,终于摸透了这个过程,并用程序实现了大部分功能,下面就详细解说一下微信Web版的流程:

1.微信服务器返回一个会话ID

微信Web版本不使用用户名和密码登录,而是采用二维码登录,所以服务器需要首先分配一个唯一的会话ID,用来标识当前的一次登录,通过请求地址:

https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1377482012272(其中1377482012272这个值是当前距离林威治标准时间的毫秒)

服务器会返回如下的字符串:

window.QRLogin.code = 200; window.QRLogin.uuid = “DeA6idundY9VKn”;

而这个DeA6idundY9VKn字符串就是微信服务器返回给我们的ID。

2.通过会话ID获得二维码

既然微信Web版本是通过二维码进行登录,如何获得这个随机的二维码呢?答案就是利用刚才获得的ID去请求服务器生成的二维码,通过上面的ID我们组合得到以下的URL地址:

https://login.weixin.qq.com/qrcode/DeA6idundY9VKn?t=webwx

该请求返回的便是我们需要的二维码,此时需要用户在微信的手机版本中扫描这个二维码(我就搞不明白微信官方是如何想的,登录Web版本竟然还需要手机微信去配合登录,难道没有考虑我被迫选择Web微信就是因为手机不在身边这样的情形么?)

3.轮询手机端是否已经扫描二维码并确认在Web端登录

当获得二维码之后,就需要用户去手机端去扫描二维码,并获得用户的授权,此时我们并不知道用户何时完成这个操作,所以我

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值