模拟登录练习

选取测试对象

       就是他了,主要是根据可靠情报,他的登录是十分简单的,比较适合练手.

      

准备的工具

       IEWin7自带

       记事本

      

收集模拟登录数据

       为了不被旧的数据影响,第一步就是清空缓冲数据,不过根据实际测试IE开发者工具自带的菜单命令根本不可靠,还是直接手动进入到缓冲文件夹手动del.

      

       F12进入开发者工具,切换到网络选项页,F5启用捕获。进入登录页面,填入自己的账号,密码,点登录,这时就可以看到捕获很多网络请求。

 

      

    其中靠前的发现有一个https://www.oschina.net/action/user/hash_login

地址很是可疑,一看是post方式的,双击进入详细信息,可以看到请求正文有你的用户名密码什么的,但是密码是一串奇怪的字串不知道是什么,那么就用“pwd”作为关键字在捕获的请求中搜下好了,结果有好几个,ccs肯定不是,js才有可能,点下一个几次后然后发现这个东西,sha1,哦,找个在线摘要转换页看看我的密码的sha1,其结果一样。

    

接下来的还有个verifyCode=&save_login=1什么的明显是验证码和保存登录什么的,照着填就行了,到此,所有的数据收集完成,总结下。

       https://www.oschina.net/action/user/hash_login发送post请求,其内容是:

"email={0}&pwd={1}&verifyCode=&save_login=1",user,sha1(pwd);成功会返回一个oscid给你存在cookie,相应正文空,失败相应正文会有一段json给你,告诉你登录失败了.

用你熟悉的语言整一个模拟登录程序

       我的是这样的.

class CLoginOsChina
    {
        private CookieContainer m_Cookie=new CookieContainer();

        public bool Login(string user,string pwd)
        {
            bool bRet = false;
            
            HttpWebRequest req=(HttpWebRequest)
                WebRequest.Create(@"https://www.oschina.net/action/user/hash_login");

            req.CookieContainer = m_Cookie;
            //req.CookieContainer.Add(m_Cookie);

            req.Method="POST";
            req.ContentType = "application/x-www-form-urlencoded";
            string sha1=KLib.CryptKit.SHA1(pwd).ToLower();
            
            StringBuilder pdata=new StringBuilder();
            //email=qqq&pwd=a056c8d05ae9ac6ca180bc991b93b7ffe37563e0&verifyCode=&save_login=1
            pdata.AppendFormat("email={0}&pwd={1}&verifyCode=&save_login=1", user, sha1);
            
            //byte[] postBytes = Encoding.UTF8.GetBytes(pdata.ToString());
            //req.ContentLength = postBytes.Length;

            using (StreamWriter sw = new StreamWriter(req.GetRequestStream()))
            {
                sw.Write(pdata.ToString());
                sw.Flush();
            }


            //Stream postDataStream = req.GetRequestStream();
            //postDataStream.Write(postBytes, 0, postBytes.Length);
            //postDataStream.Close();

            //got response
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            
            foreach (Cookie o in resp.Cookies)
            {
                if (o.Name == "oscid")
                {
                    Console.WriteLine("登陆成功");
                    bRet = true;
                    return bRet;
                }
            }

            Console.WriteLine("登陆失败,失败信息是");
            using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
            {
                string loginBaiduRespHtml = sr.ReadToEnd();
                System.Console.Out.WriteLine(loginBaiduRespHtml);
            }

            
            bRet = false;
            return bRet;
        }
    }
 

最后,主页居然有没有处理的错误,茶品


转载于:https://my.oschina.net/u/1162343/blog/632326

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值