admin管理员组

文章数量:1656270

用C#写一个微信登录软件(自己写协议)

为什么会写这个?
我本来想用于参加高中(普通高中 编程是自己学的)的一个竞赛,但是由于微信号被微信限制网页登录,所以无法继续进行编写. 于是想写个教程,从头到尾详细的分享给大家制作过程,造福以后想做的人.

效果预览
打开软件,第一步需要你扫码.

扫码后,会获取微信号头像,并且显示已扫码,要求在微信确认.

当用户登录后,会显示已登录.
一些附加功能: 如果长时间不登录,会提示二维码过期,并且刷新二维码,头像回到默认头像.

一个小菜蛋, 最终也没有用于参赛…

开始教程:
首先我们要知道,制作一个微信登录软件,对接的其实是微信网页版.
大致步骤为:
1.获取UUID
2.获取二维码
3.检测二维码状态

以下URL均可以抓包获取

先创建一个类似于这样的页面 这里使用了winform 当然,你也可以用wpf
首先,在界面加载事件中,我们需要做的事情有二行代码(有三行代码 建议加第一行)

 private void Form1_Load(object sender, EventArgs e)
 {
   
            System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
            flushQRCode();
            checkLoginState();
 }

我们先来看第一个 刷新二维码(flushQRCode) 函数
这里面包含了获取UUID的步骤,先来获取UUID(有了UUID才能像微信要对应的二维码)
我们像微信获取UUID 要访问的URL为: wx.qq/jslogin
当然,光这个URL还不行,我们还需要参数,这里我们使用(GET)请求,然后获取response并读取内容.
参数有

1.appid = wx782c26e4c19acffb (固定的)
2.redirect_uri = https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage
3.fun = new (这个应该是代表新登录协议)
4.lang = zh_CN (语言,zh_CN表示中文)
5._ = 时间戳

知道了参数,我们先先同过这些参数获取UUID

 TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);
 String returnn = sendGetRequestAndGetReturn("https://login.wx.qq/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=" + Convert.ToInt64(ts.TotalSeconds).ToString());
private String 

本文标签: 协议软件