专栏名称: Python入门与进阶
Python网络爬虫与数据挖掘、分析,尽在 datanami
目录
相关文章推荐
51好读  ›  专栏  ›  Python入门与进阶

如何用Python开发QQ机器人

Python入门与进阶  · 公众号  ·  · 2021-04-27 19:07

正文

tanleiDD

https://blog.csdn.net/TL18382950497/article/details/112321956

前言

  • 虽然该文最终是达到以python开发mirai机器人的目的,但起步教程,尤其是环境配置上仍然有大量的相同操作,对其他编程语言仍有借鉴之处
  • 假设你已经安装好了 Java Python 等运行必须的环境

mirai生态

  • mirai官方生态文档 [1]
  • 要使用mirai开发QQ机器人,首先要对其生态有一定的了解,因为它太复杂了,坑特别多,所以多了解一点,遇到问题之后解决起来也会更快
  • mirai生态汇总图
  • 简单来说,mirai生态的核心是Mirai框架,其中包含了 mirai-core mirai-core-api 两部分。
  • 其中,前者负责协议相关的内容,而后者负责对外提供操作前者的接口。因此与程序员直接打交道的是mirai-core-api,而mirai-core,对我们是不可见的。
  • 使用mirai-core-api就已经可以开发QQ机器人了,但对萌新来说难度还是太大,于是mirai官方开发组编写了一个QQ机器人程序, mirai-console ,它在 mirai 框架提供的基础功能的基础上进行了封装并进一步提供了更方便的开放接口。
  • 有了mirai-console,我们就不用直接去开发mirai的QQ机器人了,而是去开发mirai-console的插件,如下面的模式:
  • 尴尬的是,开发mirai-console的插件,又需要使用java或者kotlin。如果你跟我一样,对他们都不熟悉,那么官方的另一个插件 mirai-api-http ,则可以解决这个问题。
  • 于是借助mirai-api-http开发QQ机器人,就成了下面这种模式:
  • 可以看到,当我们使用了mirai-api-http后,我们就有了更多的开发语言选择。此处我选择python。

起步

使用 mirai-console-loader 启动 mirai-console

  • 根据上面的介绍,要开发一个mirai的QQ机器人,我们首先需要将mirai-console给运行起来,而要做到这一步,可难。例如你需要准备 mirai-core mirai-console mirai-console-terminal ,然后还需要通过一大串指令来启动它。

  • 而官方显然考虑到这一点,为了挽回被这一高难度操作劝退的萌新,官方又推出了 mirai-console-loader (简称mcl) —— mirai-console 的官方一键启动器。因此你仅需要下载它即可(第一步说的都不用管0.0)。github仓库位置: mirai-console-loader [2]

  • 下载完成mcl之后,解压、打开cmd、切换到mcl所在目录、运行mcl。如下图:

  • 不出意外的话,mirai-console就成功启动了,如下图:

  • 然而,咱从官方下载的项目,运行时却出错了0.0 ( 如果你没有出错,忽略此步骤 )。原因是配置文件出错 (太倒霉了 - -)。修改方式如图:

  • 然后再重新运行一下,mcl,不出意料的话,能成功运行。

  • 第一个大坎就迈过了…接下来是另一个大坎

使用 mirai-login-solver-selenium 处理滑块验证辅助登录

  • 在成功启动的mcl窗口,运行命令登录qq: login 账号 密码
  • 应该是会出错的,因为mirai-console在登录时,不能处理滑块验证:
  • 于是我们需要mirai的另一个项目 mirai-login-solver-selenium [3] 来辅助登录
  • mirai-login-solver-selenium安装步骤 ( 需要先安装 Chrome 浏览器 )
  • 先结束掉之前运行的 mirai-console, 然后在命令行运行如下命令,添加该包
mcl --update-package net.mamoe:mirai-login-solver-selenium --channel nightly --type plugin
  • 然后再重新运行mcl,这样mcl就会去尝试下载mirai-login-solver-selenium。

  • 然而,我这一步也出现问题了(如果你没有问题,也请跳过)。因为它用到了selenium,所以就要用chromedriver。但是chromedriver总是下载失败,所以这一步需要手动下载chromedriver,然后替换到对应目录。步骤如下:

  1. 查看cmd窗口,找到mcl正在下载的chromedriver是什么版本
  2. 然后去chromedriver的另一个镜像源下载,推荐: chromedriver [4]
  3. 找到一个版本号相近的即可,例如我就下载 86.0.4240.22
  4. 将下载好的文件解压,再重命名成 chromedriver-86.0.4240.198.exe ,也就是刚刚我们在命令行窗口查看的文件名,一定要跟它想下载的文件名一致
  5. 结束之前运行的mcl命令行程序,然后将准备好的 chromedriver-86.0.4240.198.exe , 替换到以下目录
  6. 重新运行mcl程序,如果一切顺利,就可以继续之前的步骤,输入命令: login 账号 密码 尝试登录。接下来会弹出一个浏览器窗口,你只需要傻瓜式的完成登录验证即可。如果登录成功,以后的每次登录,应该都是不需要再次验证的。
  • 又跨过一个坎…接下来就到了另外一个坎

  • 使用 mirai-api-http 增加语言拓展性 (为了能用其他语言来开发)

    • 前面一直在说 mirai-api-http,但是到目前为止,我们都还没有用上它。前面的工作就做了两个事情

    1. 使用mcl运行mirai-console
    2. 使用 mirai-login-solver-selenium 辅助通过滑块验证码,完成登录
  • 那么接下来就开始用mirai-api-http,首先在mirai-api-http项目地址,下载 mirai-api-http [5]

  • 然后将下载到的jar包,放在plugin文件夹下,如图







  • 请到「今天看啥」查看全文


    推荐文章
    Kindle电子书库  ·  你的心里有多少层抽屉?
    7 年前
    张德芬空间  ·  美满的婚姻,是久处不累、心生欢喜
    7 年前
    黄生看金融  ·  刚刚,战争打响,围魏救赵
    7 年前