博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTPClient模拟登陆21CN
阅读量:6846 次
发布时间:2019-06-26

本文共 3631 字,大约阅读时间需要 12 分钟。

hot3.png

            String retCode_0 = "0";// 登录成功
            String retCode_5 = "1008";// 用户名不存在
            String retCode_20 = "1014";// 密码错误
            account = StringUtils.substring(account, 0, account.indexOf("@"));
            StringBuilder loginUrl = new StringBuilder("http://fmail.21cn.com/freeinterface/maillogin.jsp?").append("jsoncallback=jsonp")
                    .append(System.currentTimeMillis()).append("&loginName=").append(account).append("&UserName=").append(account).append("&passwd=")
                    .append(password);
            System.out.println(loginUrl.toString());
            String referer = "http://mail.21cn.com/";
            String responseStr = crawlHttpClientHelper.doGet(loginUrl.toString(), "", referer);
            System.out.println(responseStr);
            if (responseStr.indexOf(retCode_0) != -1) {
                GetMethod method = new GetMethod("http://hermes.webmail.21cn.com/webmail/login.perform?key=1");
                method.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml,application/json,text/javascript,*/*;");
                method.setRequestHeader("Accept-Language", "zh-cn");
                method.setRequestHeader("User-Agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; QQDownload 1.7; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; CIBA)");
                method.setRequestHeader("Keep-Alive", "300");
                method.setRequestHeader("Connection", "Keep-Alive");
                method.setRequestHeader("Cache-Control", "no-cache");
                method.setRequestHeader("Referer", referer);
                method.setRequestHeader("Connection", "close");
                // 使用系统提供的默认的恢复策略
                method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
                method.getParams().setParameter("http.protocol.cookie-policy", CookiePolicy.BROWSER_COMPATIBILITY);
                method.getParams().setParameter("http.protocol.single-cookie-header", true);
                crawlHttpClientHelper.getHttpClient().getParams().setBooleanParameter(HttpClientParams.ALLOW_CIRCULAR_REDIRECTS, false);
                // crawlHttpClientHelper.getHttpClient().getParams().setIntParameter(HttpClientParams.MAX_REDIRECTS,
                // 5);
                method.setFollowRedirects(false);
                int statusCode = crawlHttpClientHelper.getHttpClient().executeMethod(method);
                System.out.println(statusCode);
                
                String newHost = "";
                if (method.getResponseHeader("Location") != null) {
                    if (method.getResponseHeader("Location").getValue().startsWith("http")) {
                        String redirectUrl = method.getResponseHeader("Location").getValue();
                        newHost = redirectUrl.toString();
                        newHost = newHost.split("/")[2];
                    } else {
                        newHost = method.getURI().toString();
                        newHost = newHost.split("/")[2];
                        String redirectUrl = "http://" + newHost + method.getResponseHeader("Location").getValue();
                    }
                }
                responseStr = crawlHttpClientHelper.doGet("http://"+newHost+"/webmail/forwardlogin.jsp", "",
                        "http://hermes.webmail.21cn.com/webmail/login.perform?key=1");
                System.out.println(responseStr);
                responseStr = crawlHttpClientHelper.doGet("http://"+newHost+"/webmail/logon.do?uud=1", "",
                        "http://"+newHost+"/webmail/forwardlogin.jsp");
                System.out.println(responseStr);
                referer = "http://"+newHost+"/webmail/signOn.do";
                String result1 = "http://passport.21cn.com/api/getUser.do?jsoncallback=jsonp" + System.currentTimeMillis() + "&require=pswdProtect";
                responseStr = crawlHttpClientHelper.doGet(result1, "", "");
                responseStr = StringUtils.substringBetween(responseStr, "isLogin\":\"", "\",");
                if (!responseStr.equals("true")) {
                    throw new CrawlException("登录失败");
                }
                String searchEmailUrl = "http://"+newHost+"/webmail/mailList.do?label=1";
                referer = "http://hermesw8.mail.21cn.com/webmail/navigator.do?sid=null";
                responseStr = crawlHttpClientHelper.doGet(searchEmailUrl, "", referer);
                if(Validate.isEmpty(responseStr)){
                    throw new RuntimeException("获取邮箱的内容为空");
                }

转载于:https://my.oschina.net/zplswf/blog/103716

你可能感兴趣的文章
ERROR: Java 1.7 or later is required to run Apache Drill.
查看>>
初入android驱动开发之字符设备(一)
查看>>
外网上传到NAS速度很慢是什么情况?上行1M都不到,但是测试有4M
查看>>
ASP.NET Core 中使用 GrayLog 记录日志
查看>>
RabbitMQ的几种工作模式
查看>>
关于Java类加载双亲委派机制的思考(附一道面试题)
查看>>
java中关于volatile的理解疑问?
查看>>
SQL Server Management Studio(SSMS)的使用与配置整理
查看>>
Activit工作流学习例子
查看>>
安装了宝塔面板的服务器,一键部署私有云
查看>>
干货!14个最新优质加载动画设计,让等待成为一种享受
查看>>
Android listview与adapter用法
查看>>
Android开发之再探底部菜单TabLayout与Bottom navigation实现方式
查看>>
传瑞幸咖啡获新一轮融资,投前估值达20亿美元
查看>>
惠普集团放弃Salesforce 采用微软的云端CRM
查看>>
《DBA修炼之道:数据库管理员的第一本书》——第3章附加问题
查看>>
爱尔兰不得不接受苹果130亿欧元税款 都是欧盟逼的
查看>>
《DBA修炼之道:数据库管理员的第一本书》——3.4节概念、逻辑和物理数据模型...
查看>>
顶级智囊支招 丰泽智慧城市建设
查看>>
移动安全成头号威胁,中国NFC安全技术有望抢占国际标准制高点
查看>>