闲来无事(其实还在期末考试),想着怎么利用手里的服务器搞点事情时,发现了python的itchat库,想着可以再利用网页聊天机器人,做一个自动聊天的微信机器人。
总体思路很简单,用itchat登录微信,接受消息,通过聊天机器人的接口发送给聊天机器人,在将接受到的消息通过itchat发给用户,实现自动聊天。
经过几番寻找,找到一个聊天还算智能(语气逗比)的在线聊天机器人,
http://i.xiaoi.com/#
在浏览器里找接口还是有点乱,用burp抓包清楚一些:
我们的每一条消息应该是通过GET方法传入,然后返回数据中的content中应该包含回复内容,用python解码试一下:
接下来构造url就可以了,我的思路是url解码后拼接再url编码发送,
从返回的数据中用正则匹配出我们想要的数据:
既然已经可以拿到返回数据了,就可以用itchat库从微信上接受发送了:
运行之后会有二维码图片生成,扫码登录微信网页版即可。
关于itchat库:http://itchat.readthedocs.io/zh/latest/
操作很简单的。
所有代码:
import itchat,code,unicodedata import requests,re from urllib.parse import quote,unquote def get_reply(data): ini = "{'sessionId':'09e2aca4d0a541f88eecc77c03a8b393','robotId':'webbot','userId':'462d49d3742745bb98f7538c42f9f874','body':{'content':'" + data + "'},'type':'txt'}&ts=1529917589648" url = "http://i.xiaoi.com/robot/webrobot?&callback=__webrobot_processMsg&data=" + quote(ini) cookie = {"cnonce": "808116", "sig": "0c3021aa5552fe597bb55448b40ad2a90d2dead5", "XISESSIONID": "hlbnd1oiwar01dfje825gavcn", "nonce": "273765", "hibext_instdsigdip2": "1"} r = requests.get(url, cookies=cookie) print(r.text) pattern = re.compile(r'\"fontColor\":0,\"content\":\"(.*?)\"') result = pattern.findall(r.text) print(result[1]) return result[1] @itchat.msg_register(itchat.content.TEXT) def print_content(msg): print(msg['Text']) print(msg['FromUserName']) datas=get_reply(msg['Text'])[:-4] print(datas) itchat.send(datas, toUserName=msg['FromUserName']) itchat.auto_login() itchat.run()
小白选手,正则用的不太好,代码也没什么规范,大佬就别吐槽了。
另外如果用 图灵机器人或者小黄鸡提供的API效果会更好,不过网上教程已经很多了,这里就是提供一个其他思路。
文章同步到我的博客:http://www.zjzhhb.com/archives/356
转载指明出处