吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 20473|回复: 90
收起左侧

[易语言 转载] 【开源】关于兜兜风f大佬某东扫码登录分析

  [复制链接]
ly765893958 发表于 2021-2-7 18:27
本帖最后由 ly765893958 于 2021-2-7 18:43 编辑

1.jpg
按照@Peanut_GGG 大佬分析的思路,弄出了成品,供大家学习和研究!!!
在此特别感谢原作者@兜兜风f  ,也特别感谢@Peanut_GGG 大佬贡献自己的分析思路。
源码+成品下载地址:下载地址
原帖:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1362891&highlight=%B6%B5%B6%B5%B7%E7

免费评分

参与人数 30吾爱币 +29 热心值 +28 收起 理由
vli + 1 + 1 我很赞同!
A120453398 + 1 + 1 下载地址打不开了
小不点的小脚丫 + 1 + 1 大佬,下载地址打不开了,麻烦换个新的
往复丨 + 1 + 1 我很赞同!
qwqwqwqw154 + 1 + 1 大神,求开个教学贴,想要学会怎么分析fiddler抓取到的手机应用包
罗卜235 + 1 + 1 我很赞同!
chaoge1229 + 1 + 1 谢谢@Thanks!
777战神 + 1 + 1 大佬求最新签到自己使用啊又来麻烦你了已私信上次25号私信你还说只要文件损.
金仨胖 + 1 + 1 谢谢@Thanks!
yjufk + 1 + 1 谢谢@Thanks!
YANGNZ + 1 + 1 给大佬贡献点币
maxqq001 + 1 + 1 我很赞同!
2569196668 + 1 + 1 我很赞同!
冬马 + 1 + 1 大佬,能不能求一下新版的签到助手,一直自用,看到你的留言板的留言就不太.
jinxiran + 1 + 1 大佬,求更新签到。
hululu + 1 + 1 谢谢@Thanks!
pixia1234 + 1 + 1 大佬,求软件及授权码,一直自用的
miqi1314 + 1 + 1 老大,求52签到助手,已私信
始终 + 1 + 1 我很赞同!
danran + 2 + 1 我很赞同!
小明不才 + 1 用心讨论,共获提升!
欧迈尬 + 1 + 1 大佬,求软件及授权码,我自己用啊!!谢谢看私信啊
shisu666 + 1 热心回复!
18061951579 + 1 + 1 老哥,大神,实在找不到签到在哪了,求私发一下,一直自己用
吾爱破解- + 1 + 1 挺老大
风辰熙 + 1 + 1 谢谢@Thanks!
e881228 + 1 大佬,您的帖子找不到了 求个授权码.一直在用您的软件,太贴心了 236090999@q.
123qweasdZXC + 1 热心回复!
Peanut_GGG + 1 + 1 我很赞同!
Mint_Grass + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| ly765893958 发表于 2021-2-13 13:41
zyxm2013 发表于 2021-2-8 20:28
我现在的情况是
没扫码前,提示
{"check_ip":0,"errcode":176,"message":"授权登录未确认"}

我今天也遇到这个情况了,最后的解决办法是更换心跳包的UA为Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36就正常了
Pleasant 发表于 2021-2-10 11:18
本帖最后由 Pleasant 于 2021-2-10 11:21 编辑

分享一个我的实现方式。
1. 获取二维码链接
[C#] 纯文本查看 复制代码
            // 获取s_token
            SessionClient.DefaultRequestHeaders.Add("Accept", "application/json, text/plain, */*");
            SessionClient.DefaultRequestHeaders.Add("ContentType", "application/x-www-form-urlencoded");
            SessionClient.DefaultRequestHeaders.Referrer = new Uri("https://plogin.m.jd.com/login/login?appid=300&returnurl=https%3A%2F%2Fwq.jd.com%2Fpassport%2FLoginRedirect%3Fstate%3D1101078047599%26returnurl%3Dhttps%253A%252F%252Fhome.m.jd.com%252FmyJd%252Fnewhome.action%253Fsceneval%253D2%2526ufc%253D%2526%252FmyJd%252Fhome.action&source=wq_passport");
            var response = await SessionClient.GetAsync(@"https://plogin.m.jd.com/cgi-bin/mm/new_login_entrance?lang=chs&appid=300&returnurl=https:%2F%2Fwq.jd.com%2Fpassport%2FLoginRedirect%3Fstate%3D1101078047599%26returnurl%3Dhttps%253A%252F%252Fhome.m.jd.com%252FmyJd%252Fnewhome.action%253Fsceneval%253D2%2526ufc%253D%2526%252FmyJd%252Fhome.action&source=wq_passport");
            if (response.StatusCode != HttpStatusCode.OK)
            {
                Lbl_QRStatus.Text = "二维码加载失败,请重试或采用Cookie登录";
                return;
            }
            var responseText = await response.Content.ReadAsStringAsync();
            var responseJo = (JObject)JsonConvert.DeserializeObject(responseText);
            SToken = responseJo["s_token"].ToString();
            // 获取token和okl_token
            string tokenAPI = string.Format("https://plogin.m.jd.com/cgi-bin/m/tmauthreflogurl?s_token={0}&v={1}&remember=true", SToken, Utils.GetTimeStampLong());
            var nvc = new List<KeyValuePair<string, string>>
            {
                new KeyValuePair<string, string>("lang", "chs"),
                new KeyValuePair<string, string>("appid", "300"),
                new KeyValuePair<string, string>("returnurl", "https%3A%2F%2Fwqlogin2.jd.com%2Fpassport%2FLoginRedirect%3Fstate%3D1100399130787%26returnurl%3D%252F%252Fhome.m.jd.com%252FmyJd%252Fnewhome.action%253Fsceneval%253D2%2526ufc%253D%2526%252FmyJd%252Fhome.action"),
                new KeyValuePair<string, string>("source", "wq_passport")
            };
            var message = new HttpRequestMessage(HttpMethod.Post, tokenAPI) { Content = new FormUrlEncodedContent(nvc) };
            response = await SessionClient.SendAsync(message);
            responseText = await response.Content.ReadAsStringAsync();
            responseJo = (JObject)JsonConvert.DeserializeObject(responseText);
            if (response.StatusCode != HttpStatusCode.OK || responseJo["errcode"].ToString() != "0")
            {
                Lbl_QRStatus.Text = "二维码加载失败...";
                return;
            }
            Token = responseJo["token"].ToString();
            var collection = CookieContainer.GetCookies(new Uri("https://plogin.m.jd.com"));
            foreach (Cookie cookie in collection)
            {
                if (cookie.Name == "okl_token")
                    OKLToken = cookie.Value;
            }
            if (string.IsNullOrWhiteSpace(OKLToken))
            {
                Lbl_QRStatus.Text = "二维码加载失败...";
                return;
            }
            // 构建二维码URL
            string qrUrl = string.Format("https://plogin.m.jd.com/cgi-bin/m/tmauth?client_type=m&appid=300&token={0}", Token);

2. 轮训结果
[C#] 纯文本查看 复制代码
            if (string.IsNullOrWhiteSpace(Token)) return;
            if (string.IsNullOrWhiteSpace(OKLToken)) return;
            // 对查询API进行轮询
            string checkAPI = string.Format("https://plogin.m.jd.com/cgi-bin/m/tmauthchecktoken?&token={0}&ou_state=0&okl_token={1}", Token, OKLToken);
            var nvc = new List<KeyValuePair<string, string>>
            {
                new KeyValuePair<string, string>("lang", "chs"),
                new KeyValuePair<string, string>("appid", "300"),
                new KeyValuePair<string, string>("returnurl", "https%3A%2F%2Fwqlogin2.jd.com%2Fpassport%2FLoginRedirect%3Fstate%3D1100399130787%26returnurl%3D%252F%252Fhome.m.jd.com%252FmyJd%252Fnewhome.action%253Fsceneval%253D2%2526ufc%253D%2526%252FmyJd%252Fhome.action"),
                new KeyValuePair<string, string>("source", "wq_passport")
            };
            var message = new HttpRequestMessage(HttpMethod.Post, checkAPI) { Content = new FormUrlEncodedContent(nvc) };
            var response = SessionClient.SendAsync(message).Result;
            var responseText = response.Content.ReadAsStringAsync().Result;
            var responseJo = (JObject)JsonConvert.DeserializeObject(responseText);
            // 如果扫码成功,那么得到的CookieContainer就是所要的,否则更新信息到界面上
            if (responseJo["errcode"].ToString() == "0")
            {
                // 设置一下关键Cookie为永不过期
                var cookies = CookieContainer.GetCookies(new Uri("https://api.m.jd.com"));
                foreach (Cookie cookie in cookies)
                {
                    cookie.Expires = DateTime.Now.AddMonths(1);
                }
                TM_FetchStatus.Enabled = false;
                this.DialogResult = DialogResult.OK;
                return;
            }
            else
            {
                Lbl_QRStatus.Text = responseJo["message"].ToString();
            }
一萬只草泥马 发表于 2021-2-7 18:56
fuli2018 发表于 2021-2-7 19:07
好像不行啊?错误提示失效了哦
 楼主| ly765893958 发表于 2021-2-7 19:16
fuli2018 发表于 2021-2-7 19:07
好像不行啊?错误提示失效了哦

我已经投入使用了
fuli2018 发表于 2021-2-7 19:22
ly765893958 发表于 2021-2-7 19:16
我已经投入使用了

你这个心跳写的逻辑错误!电脑卡的一逼!内存占用率很大!
一直提示重试 错误提示
 楼主| ly765893958 发表于 2021-2-7 19:28
fuli2018 发表于 2021-2-7 19:22
你这个心跳写的逻辑错误!电脑卡的一逼!内存占用率很大!
一直提示重试 错误提示

放线程里就对了
mosou 发表于 2021-2-7 20:15
有淘宝的吗
wangdian113258 发表于 2021-2-7 20:15
相当不错过来学习了
不苦小和尚 发表于 2021-2-7 21:11

能否弄个百度短信验证登录的
恐怖如斯吧 发表于 2021-2-8 18:46
捕获001.JPG 这个不能直接更新
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表