帮我搞个京东post自动登录的

majunbopmpm 2014-02-08 04:11:42
我想做一个自动登录京东的demo.用HttpWebRequest、post登录老返回一个中文编码告诉我请刷新页面,cookie我也带过去了啊 不知道神马原因。
用WebBrowser由于是asp.net框架页太多判断页面加载是否完成也非常麻烦。
请大神明示。
...全文
488 点赞 收藏 8
写回复
8 条回复
dfachl 2014年04月13日
加个时戳yys=即可
回复 点赞
majunbopmpm 2014年02月17日
引用 4 楼 wyd1520 的回复:
FvVLaQFOlY=VDvKN 要先做两步,先用HttpRequest请求Login页面 取到FvVLaQFOlY=VDvKN 这个值 与Cookies FvVLaQFOlY 这个是隐藏表单你要找找,这名字看起来也是随机的 =VDvKN 这个是随机值,这两个值可能与Session有关,你取到Cookeis就可以了 取到后再拼接成你上面的数据进行Login包发送
我已经这么弄了 我用抓包工具发现有好多cookie 但是我用HttpWebRequest只能获取俩个cookie Post过去还是提示我启用浏览器cookie功能。
回复 点赞
emailtome 2014年02月08日
http://help.jd.com/oapihelp/question-459.html 1.商家与京东签署合约,成为POP商家后,商家可申请调用API获取商家信息,进行系统对接; 2.购买第三方软件商家,可自助开通接口授权,可使用商家的账户密码通过自助操作即可获取授权信息,具体操作方法请询问商家所使用软件的供应商。 3.如商家为自主开发软件对接京东,请发送邮件至jos@jd.com,申请对接支持,邮件内请注明自主开发软件对接。 1、调用京东API接口时,即是与京东服务器进行一次数据交互的过程,所有的API都是基于REST基础的接口规范,可兼容多种编程语言,同时查询API全部支持http post和http get两种方法,对于修改及操作类型API只支持http post方法,推荐大家使用http post方法。 2、使用API现使用在沙箱环境下默认提供的用户ID与API-Key来调用一个接口来获取信息;其中API-Key释义:appkey:京东颁发的唯一标识一个商家的ID号,具体获取签名调用接口方法请参看技术规范。 3、数据获取方式:京东开放平台调用接口都是通过调用API来实现的,所有的API都是基于REST协议,可兼容多种编程语言。只要能够按照京东的规范POST调用参数就可以取得相应接口返回的商家数据。 4、调用入口环境地址,即调用接口(API)时,都通过访问该地址,来获取该接口需要获取的数据正式环境: http://gw.shop.360buy.com/routerjson沙箱环境:http://220.231.59.70/routerjson 5、调用参数 调用接口(API)时,必须传入的系统级参数以及应用级参数,该接口更多输入参数以及返回结构详见API文档
回复 点赞
本拉灯 2014年02月08日
FvVLaQFOlY=VDvKN 要先做两步,先用HttpRequest请求Login页面 取到FvVLaQFOlY=VDvKN 这个值 与Cookies FvVLaQFOlY 这个是隐藏表单你要找找,这名字看起来也是随机的 =VDvKN 这个是随机值,这两个值可能与Session有关,你取到Cookeis就可以了 取到后再拼接成你上面的数据进行Login包发送
回复 点赞
feiyun0112 2014年02月08日
uuid=492f11d9-e50c-48fa-8533-a734f33a6c2d
FvVLaQFOlY=VDvKN
应该不是固定的,你要先打开登录页面得到当前值
回复 点赞
majunbopmpm 2014年02月08日

string IE = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN)";
StringBuilder sb = new StringBuilder();
            string postdata = "uuid=492f11d9-e50c-48fa-8533-a734f33a6c2d&loginname="+this.TextBox1.Text+"&nloginpwd="+TextBox2.Text+"&loginpwd="+TextBox2.Text+"&machineNet=&machineCpu=&machineDisk=&authcode=&FvVLaQFOlY=VDvKN";
            
            string Url= "http://passport.jd.com/uc/loginService?uuid=58d51760-e2f8-46eb-a5f5-dbda93cd44b1&&r=0.05565985920839012";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.UserAgent = IE;
            request.Method = "Post";
            request.Accept = "*/*";
            //如果方法验证网页来源就加上这一句如果不验证那就可以不写了
            request.Referer = "http://passport.jd.com/uc/login";
            request.ContentType = "application/x-www-form-urlencoded";
            request.AllowAutoRedirect = true;
            byte[] Postbyte = Encoding.ASCII.GetBytes(postdata);
            request.ContentLength = Postbyte.Length;
            Stream newStream = request.GetRequestStream();
            newStream.Write(Postbyte, 0, Postbyte.Length);//把参数用流对象写入request对象中   
            newStream.Close();

            /////////////////////////////////
		//////Cookie
/////////////////////////////////
            //不保持连接
            request.KeepAlive = true;
            // 获取对应HTTP请求的响应
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            // 获取响应流
            Stream responseStream = response.GetResponseStream();
            // 对接响应流(以"GBK"字符集)
            StreamReader sReader = new StreamReader(responseStream, Encoding.GetEncoding("gb2312"));
            // 开始读取数据
            Char[] sReaderBuffer = new Char[256];
            int count = sReader.Read(sReaderBuffer, 0, 256);
            while (count > 0)
            {
                String tempStr = new String(sReaderBuffer, 0, count);
                sb.Append(tempStr);
                count = sReader.Read(sReaderBuffer, 0, 256);
            }
            // 读取结束
            sReader.Close();
            Response.Write(sb.ToString());
回复 点赞
feiyun0112 2014年02月08日
你的具体代码?

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告