闲来无事(其实还在期末考试),想着怎么利用手里的服务器搞点事情时,发现了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,unquotedef 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
转载指明出处