http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 18111|回复: 6

[项目源码] 抓包小项目 京东登录源码讲解

[复制链接]
发表于 2015-11-3 13:00:32 | 显示全部楼层 |阅读模式
本帖最后由 酒戒哥 于 2015-11-3 15:44 编辑

一、抓包软件的安装与设置
抓包软件:fiddler  可以去网上下载安装安装好后先对fiddler进行下简单的设置,软件默认不抓取https数据包。设置如图:

1、选择工具菜单栏--fiddler options
1.png

2、勾选捕获https连接
2.png

3、保存修改。


2、京东登录页面数据包提取与分析
清空浏览器数据,然后打开京东登录页,输入账号,密码,点击登录,然后我们查看下浏览器向服务器提交了哪些数据。
post 提交页面
https://passport.jd.com/uc/login ... 832235&version=2015
提交的数据
uuid=99161015-8880-4ecd-8b25-a5d33f21c9c2&machineNet=&machineCpu=&machineDisk=&XjbGwwToTM=USSgd&loginname=用户名&nloginpwd=密码&loginpwd=密码&chkRememberMe=on&authcode=
此处的用户名 、密码 为京东的账号密码。每次登录时的uuid不一样,XjbGwwToTM=USSgd 这两个值也每次不一样。得通过html页面获得。
在初次打开登录页面的时候,这三个值就返回给你了。
3.png 当要求输入验证码时,authcode才有值。验证码获取地址:https://authcode.jd.com/verify/image?a=1&acid=435d00fa-6bcc-47ab-9f59-c5219aef198b&uid=435d00fa-6bcc-47ab-9f59-c5219aef198b&yys=
acid、uid的值为uuid。

用于验证的cookie:Cookie: alc=7XEZFOCwB9Xyedl5vy7wRA==; _t=wTzE5Y1dDfBa7bacWswRTAuG2V/rdM0VFtCvzuemHDo=; __jda=122270672.609753708.1446530402.1446530402.1446530402.1; __jdb=122270672.1.609753708|1.1446530402; __jdc=122270672; __jdv=122270672|direct|-|none|-; __jdu=609753708

其中:__jda=122270672.609753708.1446530402.1446530402.1446530402.1; __jdb=122270672.1.609753708|1.1446530402; __jdc=122270672; __jdv=122270672|direct|-|none|-; __jdu=609753708是必不可少的。post提交数据时,你可以每次都用一个固定的数值。


注意:
1、post提交数据时,用户名与密码的编码问题。
2、验证码与页面不匹配问题。验证码超时、网页已过期。解决方法是先请求登录页,然后获取验证码。

理解这些后,相信登录就能自己做出来了。


代码:
获取uuid  name value的值
private void GetLoginPage()
        {
            HttpPara para = new HttpPara();
            para.Referer = "";
            para.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
            para.ContentType = "application/x-www-form-urlencoded";
            para.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

            string result = helper.GetHtml("https://passport.jd.com/new/login.aspx", para);

            HTMLDocumentClass document = new HTMLDocumentClass();
            document.designMode = "on";
            document.IHTMLDocument2_write(result);

            while (document.getElementById("uuid") == null)
            {
                GetIndexHtml();
            }

           string uuid = document.getElementById("uuid").getAttribute("value").ToString();
            mshtml.HTMLFormElement formEle = (mshtml.HTMLFormElement)document.getElementById("formlogin");
            IHTMLElementCollection inputsEle = formEle.getElementsByTagName("input");
            mshtml.HTMLInputElement ele = (mshtml.HTMLInputElement)inputsEle.item(4);
            string  name = ele.getAttributeNode("name").nodeValue.ToString().Trim();
            string  value = ele.getAttributeNode("value").nodeValue.ToString().Trim();
            vcodeUri = "https://authcode.jd.com/verify/image?a=1&acid=" + uuid + "&uid=" + uuid + "&yys=";
        }




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-11-3 13:03:17 | 显示全部楼层
我只是路过打酱油的。
发表于 2016-9-4 09:17:38 | 显示全部楼层
密码现在不是明文的了,加密了
 楼主| 发表于 2016-9-22 17:01:33 | 显示全部楼层
seamen 发表于 2016-9-4 09:17
密码现在不是明文的了,加密了

那就找到加密的js
发表于 2018-1-4 14:58:56 | 显示全部楼层
谢谢啊,我试试手
发表于 2018-1-4 17:51:33 | 显示全部楼层
很棒,我刚学会显示验证码
发表于 2018-1-12 10:48:56 | 显示全部楼层
请问Httppara是什么类??
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-22 12:07

© 2014-2021

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