如题
一般来说有三种实现微信机器人的方式
企业微信 开发者中心 - https://developer.work.weixin.qq.com/
这玩意是需要营业执照的 所以没开公司之前别想了
网页版微信 https://wx.qq.com/
基于网页版微信登录实现的机器人其实就是封装了一层http,但是大部分微信都不能通过网页版登录,比如说我自己的微信,所以这个方法也不行
蒽....这是我们采取的方式
下载指定版本的微信和注入器 就能够hook微信对应方法的接口,在代码中实现消息监听和发送等动作了
下载指定版本的微信
https://github.com/tom-snow/wechat-windows-versions/releases?page=2
这里我使用 Wechat v3.2.1.121
安装之后记得取消掉自动升级
下载安装后还需要使用对应的DLL注入器
注入器地址
https://github.com/zhizhuoshuma/WechatBot
运行注入器
选择对应版本的微信并进行注入
所有调用API的代码在Api_Server
中,根据自己的需求裁剪
以获取各平台文章为例
# 获取各平台安全文章
def get_safety_news(self, ):
news_list = ''
output("[+]:正在爬取安全新闻... ...")
news_list = self.get_xz_news(news_list)
news_list = self.get_qax_news(news_list)
news_list = self.get_anquanke_news(news_list)
output("[+]:获取成功")
news_list += f"\n{self.system_copyright + '整理分享,更多内容请戳 #' + self.system_copyright if self.system_copyright else ''}\n{time.strftime('%Y-%m-%d %X')}"
return news_list.strip()
可以看到就是获取内容之后返回一个文本
具体调用这个方法的地方在
# 管理员功能-晚报推送
def send_evening_page(self, ws, roomid):
msg = self.Asm.get_safety_news()
ws.send(self.Ss.send_msg(msg=msg, wxid=roomid))
当然这里需要先实例化对象
# 实例化接口服务类
self.Asm = Api_Server_Main()
然后把消息发送出去
具体的判断关键字是在
# 判断关键词
def judge_keyword(self, keyword, custom_keyword, split_bool=False, one_bool=False):
# 分割触发
if split_bool:
keyword = keyword.split(' ')
for ckw in custom_keyword:
for kw in keyword:
if ckw == kw:
return True
# 单个触发
elif one_bool:
return True if keyword.strip() == custom_keyword.strip() else False
# 单个循环触发
elif keyword and custom_keyword and not split_bool and not one_bool:
return True if [ckw for ckw in custom_keyword if ckw == keyword] else False
裁剪之后API这部分变成了
class Api_Server_Main:
def __init__(self):
urllib3.disable_warnings()
# AI对话接口
def get_ai(self, keyword):
msg=""
return msg
我们在get_ai
中编写自己的逻辑
因为之前一直在看gpt4free,所以这里直接对接这部分代码就行
目录结构为
/you文件夹就不用说了,就是之前gpt4free的,这里直接复制过来就行
Api_Server_Main里面的关键的代码如下
def get_answer(self,question: str) -> str:
# Set cloudflare clearance cookie and get answer from GPT-4 model
try:
result = you.Completion.create(prompt=question)
return result.text
except Exception as e:
# Return error message if an exception occurs
return (
f'An error occurred: {e}. Please make sure you are using a valid cloudflare clearance token and user agent.'
)
# AI对话接口
def get_ai(self, keyword):
question="请用中文回答,"+keyword
answer=self.get_answer(question)
msg=answer.encode().decode("unicode_escape")
return msg
为啥question里面我自己拼接了这部分
question="请用中文回答,"+keyword
因为我发现在you.com网站回答问题的时候 大多数时候都是回答的英文,为了避免出现这个问题,所以进行了强制要求
最后的效果是
所以在群里面提问的话就会有机器人进行响应了
建了一个微信的安全交流群,欢迎添加我微信备注进群
,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注 :)
加我拉你入群 | 黑糖安全公众号 |
---|---|
文章引用微信公众号"黑糖安全",如有侵权,请联系管理员删除!