itchat+在线聊天机器人接口实现微信聊天机器人

闲来无事(其实还在期末考试),想着怎么利用手里的服务器搞点事情时,发现了python的itchat库,想着可以再利用网页聊天机器人,做一个自动聊天的微信机器人。

总体思路很简单,用itchat登录微信,接受消息,通过聊天机器人的接口发送给聊天机器人,在将接受到的消息通过itchat发给用户,实现自动聊天。

经过几番寻找,找到一个聊天还算智能(语气逗比)的在线聊天机器人,

http://i.xiaoi.com/#

itchat+在线聊天机器人接口实现微信聊天机器人_第1张图片

在浏览器里找接口还是有点乱,用burp抓包清楚一些:

itchat+在线聊天机器人接口实现微信聊天机器人_第2张图片

我们的每一条消息应该是通过GET方法传入,然后返回数据中的content中应该包含回复内容,用python解码试一下:

itchat+在线聊天机器人接口实现微信聊天机器人_第3张图片

接下来构造url就可以了,我的思路是url解码后拼接再url编码发送,

itchat+在线聊天机器人接口实现微信聊天机器人_第4张图片

从返回的数据中用正则匹配出我们想要的数据:



itchat+在线聊天机器人接口实现微信聊天机器人_第5张图片

既然已经可以拿到返回数据了,就可以用itchat库从微信上接受发送了:

itchat+在线聊天机器人接口实现微信聊天机器人_第6张图片

itchat+在线聊天机器人接口实现微信聊天机器人_第7张图片

运行之后会有二维码图片生成,扫码登录微信网页版即可。

关于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

转载指明出处


你可能感兴趣的:(Something,Interesting)