分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

第一讲 从头开始做一个web qq 机器人,第一步获取smart qq二维码

发布时间:2023-09-06 02:03责任编辑:白小东关键词:二维码

新手教程:

前言:最近在看了一下很久很久以前做的qq机器人失效了,最近也在换工作目前还在职,时间很挺宽裕的。就决定从新搞一个web qq机器人 PC的协议解析出来有点费时间以后再做。

准备工作:

编译工具:vs2017

编程语言:C# 或者.net

开始建一个SDK  新建文件 -项目 -选择类库-(WEBQQSDK)-添加一个类 smartqq

第一步,登录了一下Smart QQ,以这个HTTP协议,做机器人交互吧,TX把这个版本的很多功能去掉了,基本的群聊,私聊 收发信息之类还在。(用谷歌浏览器 访问http://web2.qq.com/ 按F12 进入开发者窗口 进入 network -all)

开始拿二维码的连接name 为 /ptqrshow开头的就是二维码的请求连接 

https://ssl.ptlogin2.qq.com/ptqrshow?appid=501004106&e=2&l=M&s=3&d=72&v=4&t=0.05929581762262637&daid=164&pt_3rd_aid=0

标黄的是随机的。后期可以弄一个Random 。我之前已经做好一个HTTP通信类,这些都会开源放到码云上面的。

private static Random rand = new Random();
???????static int ptqrtoken = 0;//检查二维码状态需要验证
???????/// <summary>
???????/// 第一步获取二维码
???????/// </summary>
???????/// <returns></returns>
???????public static Image Login_GetQRCode()
???????{

???????????HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://ssl.ptlogin2.qq.com/ptqrshow?appid=501004106&e=2&l=M&s=3&d=72&v=4&t=#{t}&daid=164&pt_3rd_aid=0".Replace("#{t}", rand.NextDouble().ToString()));
???????????req.CookieContainer = HTTP.cookies;//设置cookies
???????????HttpWebResponse res = (HttpWebResponse)req.GetResponse();//请求到Response可以对比开发者界面的数据
???????????ptqrtoken = HTTP.Hash33(HTTP.GetAllCookies(res.Cookies));//保存下来,检查二维码状态需要验证。
???????????return Image.FromStream(res.GetResponseStream());

???????}

这个已经获取到二维码了。新建一个login form窗口,拉一个pictureBox组件,还有一个button 按钮。

窗口Login 代码

private void button1_Click(object sender, EventArgs e)
???????{
???????????pictureBox1.Image = SmartQQ.Login_GetQRCode();
???????}

运行

 运行结果,这个就是登陆的二维码。第一步到这里就完成了。

 HTTP类

/// <summary>
???/// HTTP网络通信类
???/// </summary>
???public static ?class HTTP
???{
???????
??????public ?static CookieContainer cookies = new CookieContainer();
??/// <summary>
???????/// Hash ?转换
???????/// </summary>
???????/// <param name="s"></param>
???????/// <returns></returns>
???????public static int Hash33(string s)
???????{
???????????var e = 0;
???????????foreach (var t in s)
???????????????e += (e << 5) + t;
???????????return int.MaxValue & e;
???????}
???????/// <summary>
???????/// 获取CookieCollection下 所有cookie
???????/// </summary>
???????/// <param name="cc"></param>
???????/// <returns></returns>
???????public static string GetAllCookies(CookieCollection cc)
???????{
???????????//List<Cookie> lstCookies = new List<Cookie>();
???????????string lstCookies = "";
???????????ArrayList table = (ArrayList)cc.GetType().InvokeMember("m_list",
???????????????System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField |
???????????????System.Reflection.BindingFlags.Instance, null, cc, new object[] { });

???????????if (table != null)
???????????{
???????????????for (int i = 0; i < table.Count; i++)
???????????????{
???????????????????string[] tacookie = table[i].ToString().Split(‘=‘);
???????????????????lstCookies = tacookie[1].ToString().Trim();
???????????????}
???????????}


???????????return lstCookies;
???????}
???}

第一讲 从头开始做一个web qq 机器人,第一步获取smart qq二维码

原文地址:https://www.cnblogs.com/qizhuocai/p/9295772.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved