【QQ机器人开发·日记1】模拟Cookie的各种好玩之处

【QQ机器人开发·日记1】模拟Cookie的各种好玩之处

做机器人的唯一目的,最终目的都是为了一个 “方便性”

平常各种繁琐的事情:如查天气查学习成绩查事件完成度都可以放在一个QQ会话窗口里,背后的一系列操作都可以交给机器人做,而你只需要一个“查询的结果”

而我今天要讲的就是这些,【网站的自动登录以及获取信息结果】

首先,要知道一个网站提供给每个用户登录的话,是如何区分每个用户登录之后的身份并返回其相应的用户信息并实现自动登录的呢?

这里就是要用到【Cookie】这个本地数据了。每个网站登录之后,网站会返回一段身份码到用户的电脑/手机本地并存储,以便下次用户再访问这个网址时,网站可以区分不同的用户身份以及实现记住密码等功能实现。

而我们今天要是实现的一个功能就要用到一个网站,而这个网址如果去访问获取数据得到信息的话则需要一个已登录的身份状态:也就是Cookie

【功能需求1: 实现一个自动查询指定QQ等级的机器人】

初看到这个功能实现感觉挺简单,不就是打开QQ资料卡看等级就行了吗,不,这些都是你人工操作的行为,现在我们要将其化为用机器人自动完成的操作。

目标地址:https://vip.qq.com/pk/index?param=

直接无状态去访问这个接口的话,可以看见页面是白的无任何数据

这时我们去腾讯的其他站点下登录下QQ(例如:qzone.qq.com   /   kf.qq.com)

这时返回目标页面刷新,发现有显示了,这时我们直接在param=后面加上我们想要查询的QQ号,再查看其源码,在底部JS中看到一段JSON数据,其中数据就包含了要查询Q的等级

这时我们F12查看此页面的Header发下此站点下已存放许多Cookie,当然真正访问此页面要用到的Cookie绝对不是全部,这里我们用到Postman一个一个Cookie尝试,最终尝试出只需要两个Cookie就可以正常访问获取到数据,uin(相当于QQ的身份ID),skey(大名鼎鼎的skey,进行QQ业务一系列敏感操作时要用到的密匙)

到此为止,以上操作都是我们用手一步一步操作出来的,如何放在机器人上用代码完成所有的操作呢。很简单,我们有最终的目标的话,我们将其拆分成几个小功能一个一个来最终成正果。

步骤:

1.获取到机器人Q本身的skey以及uin

2.带Cookie访问目标页面

3.获取到JSON中的QQ等级

4.返回给QQ信息发送者

第一步(获取到机器人Q本身的skey以及uin)

这里在酷Q的开发API里提供了直接获取本号skey等信息的方法,我们可以直接调用,这里我们直接输出看下(记住在酷Q的规则里获取SKEY是敏感操作,此操作需要去JSON配置文件里打开权限条请求,才可正常获取)。

可以看到里面有我们要用到的uin以及skey

第二步(带Cookie访问目标页面)

这里需要用到精易模块里的 网页_访问 方法,可以看到在其构造器里的第四和第五分别是,提交Cookie和返回Cookie,一个是访问时提交的Cookie,一个是获取登录后网站返回的Cookie,这里我们只需要用到前者。

将我们在第一步获取到的Cookie携带着去访问目标地址即可获取到我们目标页的网页源代码,而我们要获取的等级信息就在其中。

第三步(获取到JSON中的QQ等级)

这里就简单用到精易模块的取中间文本,这里不需要用到正则,首先取到”var GUEST_LEVEL_INFO” 开头的JSON串,然后再根据前后的字母定义欲取中间文的前文本和后文本,就可以直接把等级信息获取到了

这里注意的是易语言对双引号处理得不是很好,如果文本型内的内容有引号可以单独去定义在常量表里,否则重复引号将导致错误。当然也可以直接用#引号这个关键词来实现

最终效果(返回给QQ信息发送者)

可以看到机器人准确回复了我们待查QQ1278991552的等级,等级为54


此系列到此也告一段落了,学习了基本框架使用,以及深入方法的使用往后也是千遍一律的找API找接口写对口的方法,包括对SQL数据库的使用也是有现成的方法,用日记方式写下来也无意义,就不再记下来了,如果以后在易语言这方面还发现到了什么特别的好玩,我会再写新篇,机器人学习告一段落。

发表评论

电子邮件地址不会被公开。 必填项已用*标注