某比賽小記2- 從HTTP請求返回中得到答案

題目:在A頁面登陸後,重定向到A頁面,而後訪問B頁面,header中帶一指定內容"Content":"2018",而後從response中讀取answer的值。html

主要分三步分,首先在A頁面發送POST請求:java

String url = "http://192.168.1.105/";
        String responseMsg = "";
        byte[] responseBody = null;
        HttpClient httpclient = new HttpClient();
        httpclient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); 
        httpclient.getParams().setParameter("http.protocol.single-cookie-header", true);
        PostMethod httpPost = new PostMethod(url);
        httpPost.setRequestHeader("ContentType", "application/xml;charset=utf-8");
        String cookie = ".AspNetCore.Antiforgery.2asieuWmzUU=CfDJ8LzDUhYKe7pEsWY4r-H8oTev6zo3ttt4qg9Zo6xNEWNET1tpSwNSHS9SQf2xe1p9witfHgmLnLx1HKCvGsynU6Sv-YMB4u_Pbh0ZAQRoEAJ7KVGH09LsqrBowNV1uh6iU71ealeplU4Yps3td_dBh0I";
        httpPost.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
        httpPost.setRequestHeader("Accept-Encoding", "gzip, deflate");
        httpPost.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.9");
        httpPost.setRequestHeader("Cache-Control", "max-age=0");
        httpPost.setRequestHeader("Connection","Keep-Alive");
        httpPost.setRequestHeader("Content-Length", "274");
        httpPost.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        httpPost.setRequestHeader("Host", "192.168.1.105");
        httpPost.setRequestHeader("Origin", "192.168.1.105");
        httpPost.setRequestHeader("Origin", "http://192.168.1.105");
        httpPost.setRequestHeader("Referer", "http://192.168.1.105/");
        httpPost.setRequestHeader("Upgrade-Insecure-Requests", "1");
        httpPost.setRequestHeader("User-Agent", Constants.USER_AGENT);
        httpPost.setRequestHeader("Cookie", cookie);//ltpatoken+sessionid
        httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(6000000);     
        httpclient.getHttpConnectionManager().getParams().setSoTimeout(6000000);
        try {
            httpPost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler(3, false));
    		NameValuePair certsn=new NameValuePair("Input.Email", "yxteng@126.com");
    		NameValuePair certinfo=new NameValuePair("Input.Password", "&wxZC3`jBqo)'qtX");
    		NameValuePair subdn=new NameValuePair("__RequestVerificationToken", "CfDJ8LzDUhYKe7pEsWY4r-H8oTdN9wZgh60Tje5CyRR89Ps2Y67XUzTS7MdnpqmYWOjxqHVytkJq_cV3z8vwvsK6729LWWH1MRlV1QF6tqWRiOGEphxLKkbUxoKQfVEVRRjXV5LTKZafolsgJyOp0YbKnow");
    		NameValuePair ramcode=new NameValuePair("Input.RememberMe", "false");
    		httpPost.setRequestBody(new NameValuePair[]{certsn,certinfo,subdn,ramcode});   
    		LogUtils.info("開始登錄...");
            int statusCode = httpclient.executeMethod(httpPost);
			Cookie[] cookies = httpclient.getState().getCookies();
			cookie="";
			for (int i = 0; i < cookies.length; i++) {
				cookie+=cookies[i].toString();
				if(i!=cookies.length-1){
					cookie+=";";
				}
				LogUtils.info(cookies[i].getName()+":"+cookies[i].getValue());
			}
			LogUtils.info("COOKIE:"+cookie);
            if (statusCode == HttpStatus.SC_OK) {
                responseBody = httpPost.getResponseBody();
                LogUtils.info("登錄成功"+statusCode);
            }
            else {
                responseMsg = String.valueOf("statusCode:"+statusCode);
                LogUtils.error("登錄失敗"+statusCode);
            }

  而後get方法模擬重定向到本頁:web

cookie = ".AspNetCore.Antiforgery.2asieuWmzUU=CfDJ8LzDUhYKe7pEsWY4r-H8oTev6zo3ttt4qg9Zo6xNEWNET1tpSwNSHS9SQf2xe1p9witfHgmLnLx1HKCvGsynU6Sv-YMB4u_Pbh0ZAQRoEAJ7KVGH09LsqrBowNV1uh6iU71ealeplU4Yps3td_dBh0I; .AspNetCore.Identity.Application=CfDJ8LzDUhYKe7pEsWY4r-H8oTfyoqahKhxlTHouYjwJDlVmJ6BdZ8pxXvOLoHDu_Ci9kzyy9GKtpRYYF06bLr3flLY6oiM7ZEJRAH-ARkiwchgjVNWPB2STXkc42E-NtLz94J9RVVhluNbN99JUUCdSXKqQgj0MUq4EpB6D4zF-Diu2wkWjhIty8HxLX4-JG6r3X8XvcJnDyqwt4YgWimcJ_SrIsfS4xdem-9zBK4zPJtorPZZwlOah0IYR7hLd7-2TaJxCk_QvQG5GIaAqRc4A-2I8eR5g6irx9SgI0XIBdxEuqpqUn1er5CIf0olBK3VXtzwNEwDTv8AkDqDvOxw7m9kjkEgDrYs3LmgDpjsg5bgiSrCcfoFx_X_ODp7Q-g5dZLOqYZQxD-bMRy3Uwu97JX-nLqtMLKoY0POhSYX17Y_SH4vFgu9e3I8matifsZAuzKIaT4DFrzyhf_ihi1ffxLnIhYnydMuM27RgrMDNq1EUue1Edym4XUhgxJjKOoiMLg_paJ14l85OXu_M51upCNB4568YKARPVJiT0SCFaA61rYoVOpZaexNLQbxc6kxe0jB5BthCVjU00xpt96QeZPU";    
        LogUtils.info("開始跳轉首頁...");
        url = "http://192.168.1.105/";
        GetMethod httpget = new GetMethod(url);
        httpget.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
        httpget.setRequestHeader("Accept-Encoding", "gzip, deflate");
        httpget.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.9");
        httpget.setRequestHeader("Cache-Control", "max-age=0");
        httpget.setRequestHeader("Connection","Keep-Alive");
        httpget.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        httpget.setRequestHeader("Host", "192.168.1.105");
        httpget.setRequestHeader("Referer", "http://192.168.1.105/");
        httpget.setRequestHeader("Upgrade-Insecure-Requests", "1");
        httpget.setRequestHeader("User-Agent", Constants.USER_AGENT);
        httpget.setRequestHeader("Cookie", cookie);//ltpatoken+sessionid
        statusCode = httpclient.executeMethod(httpget);
        if (statusCode == HttpStatus.SC_OK) {
            responseBody = httpget.getResponseBody();
            LogUtils.info("跳轉V成功"+statusCode);
        }
        else {
            responseMsg = String.valueOf("statusCode:"+statusCode);
            LogUtils.error("跳轉V失敗"+statusCode);
            return;
        }

  最後訪問目標頁,header中帶上指定內容:cookie

url = "http://192.168.1.105/Problems/HttpRequest";
        httpget = new GetMethod(url);
        httpget.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
        httpget.setRequestHeader("Accept-Encoding", "gzip, deflate");
        httpget.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.9");
        httpget.setRequestHeader("Cache-Control", "max-age=0");
        httpget.setRequestHeader("Connection","Keep-Alive");
        httpget.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        httpget.setRequestHeader("Host", "192.168.1.105");
        httpget.setRequestHeader("Referer", "http://192.168.1.105/");
        httpget.setRequestHeader("Upgrade-Insecure-Requests", "1");
        httpget.setRequestHeader("Content", "2018");//祕鑰
        httpget.setRequestHeader("User-Agent", Constants.USER_AGENT);
        httpget.setRequestHeader("Cookie", cookie);//ltpatoken+sessionid
        statusCode = httpclient.executeMethod(httpget);
        if (statusCode == HttpStatus.SC_OK) {
        	Header[] hlist= httpget.getResponseHeaders();
        	for(Header h:hlist){
        		LogUtils.info(h.getName()+":"+h.getValue());
        	}
            LogUtils.info("跳轉V成功"+statusCode+responseBody);
        }
        else {
            responseMsg = String.valueOf("statusCode:"+statusCode);
            LogUtils.error("跳轉V失敗"+statusCode+responseBody);
            return;
        }

  在控制檯中查看答案便可。session

相關文章
相關標籤/搜索