苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

12
返回列表 发新帖
楼主: 站长苏飞

[例子] C#Httphelper登录小米账户(https://account.xiaomi.com/pass/serviceLogin)源码

 关闭 [复制链接]
发表于 2014-1-14 11:03:43 | 显示全部楼层
调试了苏飞哥的代码,并且用抓包也进行测试,对比后,思路很清晰。
不过还有个问题需要请教下:代码中post
"passToken={0}&user={1}&pwd={2}&callback={3}&sid={4}&qs={5}&hidden={6}&_sign={7}",这段字符串怎么和我网页抓包到的字符串:
user=techno_xie%40126.com&_json=true&pwd=catarc&sid=passport&_sign=KKkRvCpZoDC%2BgLdeyOsdMhwV0Xg%3D&callback=https%3A%2F%2Faccount.xiaomi.com&qs=%253Fsid%253Dpassport
字符串的参数不一致?


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-1-14 11:05:01 | 显示全部楼层
passToken= 这个参数第一次访问小米网站时,不存在呀!
 楼主| 发表于 2014-1-14 11:18:44 | 显示全部楼层
无法浏览网页 发表于 2014-1-14 11:05
passToken= 这个参数第一次访问小米网站时,不存在呀!

具体是怎么获取到的你调试看看吧。
不一样说明有些参数是没有必要的。
发表于 2014-1-15 10:06:44 | 显示全部楼层
前不久正好也想写个小米抢购的辅助工具,首先要解决的当然就是登陆。
本人c#初学者,所以起初从网上搜索了些许资料(当然大多是别人已经提供思路的),结合实践和
自身理解,最后把代码diy成了下面模样,也是能得到cookie的。
第一次逛这个论坛,潜水看了些许帖子,果断注册,正好看到此贴,把我的代码页贴出来,
算是跟大家分享,也希望经验者指导。  {:soso_e106:}

         
[C#] 纯文本查看 复制代码
   string id = this.txtUserName.Text;
            string password = this.txtPwd.Text;
            // login start
            string requestUriString = "https://account.xiaomi.com/pass/serviceLoginAuth2";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUriString);
            request.CookieContainer = new CookieContainer();
            request.CookieContainer = m_Cookie;
            request.Method = "POST";
            request.AllowAutoRedirect = true;
            request.ContentType = "application/x-www-form-urlencoded";
            byte[] bytes = Encoding.UTF8.GetBytes("passToken=&user=" + id + "&pwd=" + password + "&callback=https%3A%2F%2Faccount.xiaomi.com&sid=passport&qs=%253Fsid%253Dpassport&hidden=&_sign=KKkRvCpZoDC%2BgLdeyOsdMhwV0Xg%3D");
            request.ContentLength = bytes.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(bytes, 0, bytes.Length);
            this.loginResponse = (HttpWebResponse)request.GetResponse();
            m_Cookie = request.CookieContainer;
            this.loginRespReader = new StreamReader(this.loginResponse.GetResponseStream());
            //  login end
            if (loginRespReader.ReadToEnd().Contains("小米帐户 - 登录"))
            {
                this.AppendText(text + "登陆失败\n");
            }
            else
            {
                this.AppendText(text + "登陆成功");    
            }
发表于 2014-1-15 10:12:40 | 显示全部楼层
受教了,学习中……
 楼主| 发表于 2014-1-15 10:33:25 | 显示全部楼层
jint97 发表于 2014-1-15 10:06
前不久正好也想写个小米抢购的辅助工具,首先要解决的当然就是登陆。
本人c#初学者,所以起初从网上搜索了 ...

多谢你的分享
发表于 2014-1-18 08:30:31 | 显示全部楼层
拿去学习下
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-27 17:48

© 2014-2021

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