JAVAはHttpClientを使用して、正方形の教育管理システムへのログイン、学生のステータス情報やカリキュラムのスコアなどのクロールをシミュレートし、非常に詳細なログイン分析とコードの注釈

 

ディレクトリ

序文

分析

コードの実装

最初のGET

POSTログイン

2番目のGet

3回目のGET

4回目のGET

5回目のGET

テスト中

完全なコード


 

序文

最近、APPに取り組んでいますが、コースを手配するには、当校の教育行政システムである武漢繊維水大学、王立水力停電専門学校の情報を入手する必要があります。 Firefoxを使用してパケットをキャプチャしたところ、学校のユーザー定義のログインページのユーザー名とパスワードがすべてプレーンテキストで送信されたことがわかりました。HttpClientを使用してログインをシミュレートできて本当に良かったですが、常に400エラーが表示されました。CSDNとブログパークの多くの情報への参照は依然として解決できません。最初から、本当のCookieの素晴らしい設定を取得するために5つのGETを見つけました(名前は回転している大学の教育システムを批判しています。ユーザー名とパスワードのプレーンテキストストレージは実際にはログインが非常に複雑です)

さらに面倒なことなく、クロール教育システムの段階的な超詳細分析から始めます


分析

学校の管理システムのログインページを開き、最初にPOSTで使用するCookieの生成をリクエストします

手動ログインの場合、POSTがログインデータを送信するための5つの302ステータス要求があることがわかります。ユーザー名とパスワードはユーザー名、パスワード、実行、およびrmshownは、訪問回数のマークです。 、しかしltがあります。検索後、ltはログインページの埋め込みフィールドであることがわかります。これは、ログインページから直接取得して、各リクエストを個別に分析できます。

最初のPOSTは、ログインページのCookieを使用してiPlanetDirectoryProを取得し、リダイレクトされた

ロケーション

http://jwglxt.wtu.edu.cn/sso/j…dPM5vmJu1586512656377-w6Ia-cas

2番目の302はGETです。iPlanetDirectoryProがJSESSIONIDに到達し、次のGETのURIに到達できることがわかります。

ロケーション

http://jwglxt.wtu.edu.cn/sso/j…1882D5B308262624B9BF5D5181B1D0

このURIとCookieは最終的なものではなく、JSESSIONIDは他のGETを確認するために使用される中間のCookieにすぎないことに注意してください

取得したCookieを使用してGETで確認でき、リダイレクトページを取得します

ロケーション

http://jwglxt.wtu.edu.cn/ticke…2928F9906338285585624192011C17

明らかに、これは次のGETのアドレスです

前のステップで取得したURIを取得し、最終的に最終的なCookieを取得しますが、同時にロケーションが存在する場合は、ホームページに直接ジャンプすることもできますが、取得する必要があるため、動的ポストログインページを取得できます。スケジュールなどの情報はすべてホームページのソースアドレスを必要とするため、直接ジャンプすることはできません。そうしないと、400エラーが報告されます。

ロケーション

/xtgl/login_slogin.html

これは相対パスであり、先頭にhttp://jwglxt.wtu.edu.cnを付ける必要があることに注意してください。

最後のiPlanetDirectoryProおよびJSESSIONIDを使用して、最後に取得したパスを引き続き取得し、最後に最終ページアドレスを取得します。

(これも相対アドレスです)

最終的なURIとCookieリクエストを使用して、ログイン後に最終的にページを取得しました

テストするタイムテーブルを開き、タイムテーブルを取得して、成功を示します

リクエストを確認し、POSTであることを確認します。最終的なURIとCookieが使用されます

上記のログイン原則がすべて分析され、コードの実際の操作が開始されます

 

コードの実装

最初のGET

GETを使用してログインページを解析し、初期CookieとLTを取得します

GetMethod getMethod = new GetMethod(url);
        //发送get
        httpClient.executeMethod(getMethod);
        //获取get的内容
        InputStream inputStream = getMethod.getResponseBodyAsStream();
        StringBuilder output = new StringBuilder();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
        BufferedReader reader = new BufferedReader(inputStreamReader);
        String line = reader.readLine();
        while (line != null) {
            output.append(line);
            line = reader.readLine();
        }
        //解析为文档树
        Document document = Jsoup.parseBodyFragment(output.toString());
        Element body = document.body();
        //找到lt
        lt = body.select("[name=lt]").attr("value");
        System.out.println("lt: " + lt);
        //释放链接
        getMethod.releaseConnection();
        //状态码
        int statusCodeGet1 = getMethod.getStatusCode();
        System.out.println("Status code get1 :" + statusCodeGet1);
        //得到Cookies
        JSESSION = getMethod.getResponseHeader("Set-Cookie").getValue().trim().split(";")[0].split(",")[1].trim().split("=")[1];
        System.out.println("Cookies GET1 Jsession:" + JSESSION);
        ROUTE = getMethod.getResponseHeader("Set-Cookie").getValue().trim().split(";")[0].split(",")[0].trim().split("=")[1];
        System.out.println("Cookies GET1 Route:" + ROUTE);

POSTログイン

ログイン情報を送信し、1/2 CookieとURIを取得する

String geturi2 = null;
        String loURI = "https://auth.wtu.edu.cn/authserver/login;jsessionid=";
        loURI += JSESSION;
        loURI += "?service=http%3A%2F%2Fjwglxt.wtu.edu.cn%2Fsso%2Fjziotlogin";
 PostMethod postMethod = new PostMethod(murl);
            //请求头
            postMethod.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
            postMethod.setRequestHeader("Accept-Encoding", "gzip, deflate, br");
            postMethod.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
            postMethod.setRequestHeader("Connection", "keep-alive");
            postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            postMethod.setRequestHeader("Cookie", "route=" + ROUTE + "; JSESSIONID_auth=" + JSESSION);
            postMethod.setRequestHeader("Host", "auth.wtu.edu.cn");
            postMethod.setRequestHeader("Origin", "https://auth.wtu.edu.cn");
            postMethod.setRequestHeader("Referer", url);
            postMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0");
            //参数
            postMethod.addParameter(new NameValuePair("username", usernam));
            postMethod.addParameter(new NameValuePair("password", password));
            postMethod.addParameter(new NameValuePair("lt", lt));
            postMethod.addParameter(new NameValuePair("dllt", "userNamePasswordLogin"));
            postMethod.addParameter(new NameValuePair("execution", "e1s1"));
            postMethod.addParameter(new NameValuePair("_eventId", "submit"));
            postMethod.addParameter(new NameValuePair("rmShown", "1"));
            mClient.executeMethod(postMethod);
 //状态码
        int statusCodePost = postMethod.getStatusCode();
        System.out.println("Status code post :" + statusCodePost);
        //拿到第二步Get网址
        geturi2 = postMethod.getResponseHeader("Location").toString().split(" ")[1];
        System.out.println("Get Uri 2:" + geturi2);
        //拿到iPlanetDirectoryPro
        Header[] headers = postMethod.getResponseHeaders("Set-Cookie");
        iPlanetDirectoryPro = headers[2].getValue().split(";")[0];
        System.out.println("iPlanetDirectoryPro: " + iPlanetDirectoryPro);

2番目のGet

中間Cookieと小さなステップURIを取得する

String geturi3 = null;
        String JSESSIONID2 = null;
        //第二次GET请求进入登录界面,拿到第二个JSESSIONID_iPlanetDirectoryPro
        GetMethod getMethod2 = new GetMethod(geturi2);
        getMethod2.addRequestHeader(new Header("Cookie", iPlanetDirectoryPro));
        getMethod2.setFollowRedirects(false);//不自动处理重定向
        int statusCodeGet2 = httpClient.executeMethod(getMethod2);//状态码
        System.out.println("Status code get2 :" + statusCodeGet2);
        //得到重定向网址
        geturi3 = getMethod2.getResponseHeader("Location").toString();
        geturi3 = geturi3.replaceAll(" ", "");//去掉空格
        geturi3 = geturi3.split(":", 2)[1];//得到网址
        System.out.println("Get Uri 3 :" + geturi3);
        //得到set-Cookie 拿到JSESSIONID2
        Header[] headers2 = getMethod2.getResponseHeaders("Set-Cookie");
        JSESSIONID2 = headers2[0].getValue().split(";")[0];
        System.out.println("JSESSIONID2: " + JSESSIONID2);

3回目のGET

最終的なCookieのURIアドレスを取得する

 String geturi4 = null;
        GetMethod getMethod3 = new GetMethod(geturi3);
        getMethod3.setFollowRedirects(false);
        getMethod3.addRequestHeader(new Header("Cookie", JSESSIONID2));
        int statusCodeGet3 = httpClient.executeMethod(getMethod3);
        System.out.println("Status code get3:" + statusCodeGet3);
        //获取下一步URI
        geturi4 = getMethod3.getResponseHeader("Location").toString();
        geturi4 = geturi4.replaceAll(" ", "");//去掉空格
        geturi4 = geturi4.split(":", 2)[1];//得到网址
        System.out.println("Get Uri 4:" + geturi4);

4回目のGET

最終的なCookieと次のURIを取得する

String geturi5 = "http://jwglxt.wtu.edu.cn";
        GetMethod getMethod4 = new GetMethod(geturi4);
        getMethod4.setFollowRedirects(false);
        getMethod4.addRequestHeader(new Header("Cookie", iPlanetDirectoryPro));
        //状态和执行
        int statusCodeGet4 = httpClient.executeMethod(getMethod4);
        System.out.println("Status code get4:" + statusCodeGet4);
        //获取下一步URI
        String get4xd;//设置临时变量,相对URI
        get4xd = getMethod4.getResponseHeader("Location").toString();
        get4xd = get4xd.replaceAll(" ", "");//去掉空格
        get4xd = get4xd.split(":", 2)[1];//得到网址
        //拼接真实URI
        geturi5 += get4xd;
        System.out.println("Get Uri 5:" + geturi5);
        //得到set-Cookie 拿到真实
        Header[] headers3 = getMethod2.getResponseHeaders("Set-Cookie");
        JSESSION = headers3[0].getValue().split(";")[0];
        System.out.println("JSESSIONID: " + JSESSION);

5回目のGET

ログイン後にページを取得

  GetMethod getMethod5 = new GetMethod(geturi5);
        getMethod5.setFollowRedirects(false);
        //设置Cookie
        getMethod5.addRequestHeader(new Header("Cookie", iPlanetDirectoryPro + ";" + JSESSION));
        //状态和执行
        int statusCodeGet5 = httpClient.executeMethod(getMethod5);
        System.out.println("Status code get5:" + statusCodeGet5);
        //获取下一步URI
        String get5xd;//设置临时变量,相对URI
        get5xd = getMethod5.getResponseHeader("Location").toString();
        get5xd = get5xd.replaceAll(" ", "");//去掉空格
        get5xd = get5xd.split(":", 2)[1];//得到网址
        //拼接真实URI
        loginuri += get5xd;
        System.out.println("Loginuri :" + loginuri);

 

テスト中

以前にすべてのCookieと最終的なURIを取得したので、教育管理システムを取得でき、邪魔にならない状態になっています。ログイン後、最初にホームページをテストしてください

GetMethod getMethodLog = new GetMethod(loginuri);
        getMethodLog.addRequestHeader(new Header("Cookie", iPlanetDirectoryPro + ";" + JSESSION));
        //状态和执行
        int statusCodelog = httpClient.executeMethod(getMethodLog);
        System.out.println("Status code log:" + statusCodelog);
        String result = getMethodLog.getResponseBodyAsString();
        System.out.println("最终结果:\n"+result);

クロールスケジュール情報をテストします。以前の分析から確認できます。これはPOSTです。

 String kcb = "http://jwglxt.wtu.edu.cn/kbcx/xskbcx_cxXsKb.html?gnmkdm=N253508";
PostMethod postMethod = new PostMethod(tourl);
            //请求头
            postMethod.setRequestHeader("Accept", "*/*");
            postMethod.setRequestHeader("Accept-Encoding", "gzip, deflate, br");
            postMethod.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
            postMethod.setRequestHeader("Connection", "keep-alive");
            postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            postMethod.setRequestHeader("Cookie", Cookies);
            postMethod.setRequestHeader("Host", "auth.wtu.edu.cn");
            postMethod.setRequestHeader("Origin", "https://auth.wtu.edu.cn");
            postMethod.setRequestHeader("Referer", "http://jwglxt.wtu.edu.cn/kbcx/xskbcx_cxXskbcxIndex.html?gnmkdm=N253508&layout=default&su=" + usernam);
            postMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0");
            postMethod.setRequestHeader("X-Requested-With", "XMLHttpRequest");
            //表单数据
            postMethod.addParameter("xnm", "2019");
            postMethod.addParameter("xqm", "12");
            postMethod.setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");

            mClient.executeMethod(postMethod);
 int kcbcode = postMethodkcb.getStatusCode();
        System.out.println("Status code kcb :" + kcbcode);
        String ss=new String(postMethodkcb.getResponseBody(), Charset.forName("ASCII"));
        System.out.println(ss);

        //读取json
        InputStream in = postMethodkcb.getResponseBodyAsStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(in,"ISO-8859-1"));
        String tempbf;
        StringBuffer html = new StringBuffer(8*1024);
        while ((tempbf = br.readLine()) != null) {
            html.append(tempbf +"\n");
        }
        System.out.println(html);

 

結果を見てみましょう:-

OK、データがすべて表示されていることがわかります。次に、有用なデータを取得して、前のLTグラブと同じようにページ上で直接検索します。

 

完全なコード

最後に、POSTは長すぎて見苦しいため、2つのPOSTが内部クラスにカプセル化されます。完全なコードは次のとおりです。学校の教育システムをクロールしてみてください。

注:httpclientとJsoupの2つのツールキットが必要です。Maven依存関係または自己ダウンロードを追加できます

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;

public class WTU2 {


    private static String usernam = "username";
    private static String password = "password";
    private static String lt = "";
    private static String JSESSION = "";
    private static String ROUTE = "";
    private static String iPlanetDirectoryPro = null;
    private static String loginuri = "http://jwglxt.wtu.edu.cn";
    private static String url = "https://auth.wtu.edu.cn/authserver/login?service=http%3A%2F%2Fjwglxt.wtu.edu.cn%2Fsso%2Fjziotlogin";

    public static void main(String[] ars) throws Exception {
        //定义一个Httpclient对象(相当于浏览器)
        HttpClient httpClient = new HttpClient();


        /*
         * 第一步:第一次Get,获取Cookie和lt
         * */
        //实例化一个get方法
        System.out.println("\n——————————————————————第一次GET——————————————————");
        GetMethod getMethod = new GetMethod(url);
        //发送get
        httpClient.executeMethod(getMethod);
        //获取get的内容
        InputStream inputStream = getMethod.getResponseBodyAsStream();
        StringBuilder output = new StringBuilder();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
        BufferedReader reader = new BufferedReader(inputStreamReader);
        String line = reader.readLine();
        while (line != null) {
            output.append(line);
            line = reader.readLine();
        }
        //解析为文档树
        Document document = Jsoup.parseBodyFragment(output.toString());
        Element body = document.body();
        //找到lt
        lt = body.select("[name=lt]").attr("value");
        System.out.println("lt: " + lt);
        //释放链接
        getMethod.releaseConnection();
        //状态码
        int statusCodeGet1 = getMethod.getStatusCode();
        System.out.println("Status code get1 :" + statusCodeGet1);
        //得到Cookies
        JSESSION = getMethod.getResponseHeader("Set-Cookie").getValue().trim().split(";")[0].split(",")[1].trim().split("=")[1];
        System.out.println("Cookies GET1 Jsession:" + JSESSION);
        ROUTE = getMethod.getResponseHeader("Set-Cookie").getValue().trim().split(";")[0].split(",")[0].trim().split("=")[1];
        System.out.println("Cookies GET1 Route:" + ROUTE);


        /*
         * 第二步:POST 获取Location和iPlanetDirectoryPro并且发送登录数据
         * */
        System.out.println("\n——————————————————————POST——————————————————");
        //拼接LoginURI
        String geturi2 = null;
        String loURI = "https://auth.wtu.edu.cn/authserver/login;jsessionid=";
        loURI += JSESSION;
        loURI += "?service=http%3A%2F%2Fjwglxt.wtu.edu.cn%2Fsso%2Fjziotlogin";
        //POST请求发送登录数据
        PostMethod postMethod = new Urlt().postAction(httpClient, loURI);
        //状态码
        int statusCodePost = postMethod.getStatusCode();
        System.out.println("Status code post :" + statusCodePost);
        //拿到第二步Get网址
        geturi2 = postMethod.getResponseHeader("Location").toString().split(" ")[1];
        System.out.println("Get Uri 2:" + geturi2);
        //拿到iPlanetDirectoryPro
        Header[] headers = postMethod.getResponseHeaders("Set-Cookie");
        iPlanetDirectoryPro = headers[2].getValue().split(";")[0];
        System.out.println("iPlanetDirectoryPro: " + iPlanetDirectoryPro);


        /*
         * 第三步:第二次GET,获取下一步的uri和中间cooki
         * */
        System.out.println("\n——————————————————————第二次GET——————————————————");
        String geturi3 = null;
        String JSESSIONID2 = null;
        //第二次GET请求进入登录界面,拿到第二个JSESSIONID_iPlanetDirectoryPro
        GetMethod getMethod2 = new GetMethod(geturi2);
        getMethod2.addRequestHeader(new Header("Cookie", iPlanetDirectoryPro));
        getMethod2.setFollowRedirects(false);//不自动处理重定向
        int statusCodeGet2 = httpClient.executeMethod(getMethod2);//状态码
        System.out.println("Status code get2 :" + statusCodeGet2);
        //得到重定向网址
        geturi3 = getMethod2.getResponseHeader("Location").toString();
        geturi3 = geturi3.replaceAll(" ", "");//去掉空格
        geturi3 = geturi3.split(":", 2)[1];//得到网址
        System.out.println("Get Uri 3 :" + geturi3);
        //得到set-Cookie 拿到JSESSIONID2
        Header[] headers2 = getMethod2.getResponseHeaders("Set-Cookie");
        JSESSIONID2 = headers2[0].getValue().split(";")[0];
        System.out.println("JSESSIONID2: " + JSESSIONID2);


        /*
         * 第四步 第三次GET 获取下一步uri
         * */
        System.out.println("\n——————————————————————第三次GET——————————————————");
        String geturi4 = null;
        GetMethod getMethod3 = new GetMethod(geturi3);
        getMethod3.setFollowRedirects(false);
        getMethod3.addRequestHeader(new Header("Cookie", JSESSIONID2));
        int statusCodeGet3 = httpClient.executeMethod(getMethod3);
        System.out.println("Status code get3:" + statusCodeGet3);
        //获取下一步URI
        geturi4 = getMethod3.getResponseHeader("Location").toString();
        geturi4 = geturi4.replaceAll(" ", "");//去掉空格
        geturi4 = geturi4.split(":", 2)[1];//得到网址
        System.out.println("Get Uri 4:" + geturi4);


        /*
         * 第五步 第四次GET 获取下一步uri和真实的Cookie
         * */
        System.out.println("\n——————————————————————第四次GET——————————————————");
        String geturi5 = "http://jwglxt.wtu.edu.cn";
        GetMethod getMethod4 = new GetMethod(geturi4);
        getMethod4.setFollowRedirects(false);
        getMethod4.addRequestHeader(new Header("Cookie", iPlanetDirectoryPro));
        //状态和执行
        int statusCodeGet4 = httpClient.executeMethod(getMethod4);
        System.out.println("Status code get4:" + statusCodeGet4);
        //获取下一步URI
        String get4xd;//设置临时变量,相对URI
        get4xd = getMethod4.getResponseHeader("Location").toString();
        get4xd = get4xd.replaceAll(" ", "");//去掉空格
        get4xd = get4xd.split(":", 2)[1];//得到网址
        //拼接真实URI
        geturi5 += get4xd;
        System.out.println("Get Uri 5:" + geturi5);
        //得到set-Cookie 拿到真实
        Header[] headers3 = getMethod2.getResponseHeaders("Set-Cookie");
        JSESSION = headers3[0].getValue().split(";")[0];
        System.out.println("JSESSIONID: " + JSESSION);


        /*
         * 第六部 第五次GET 获取最终的登录页面
         * */
        System.out.println("\n——————————————————————第五次GET——————————————————");
        GetMethod getMethod5 = new GetMethod(geturi5);
        getMethod5.setFollowRedirects(false);
        //设置Cookie
        getMethod5.addRequestHeader(new Header("Cookie", iPlanetDirectoryPro + ";" + JSESSION));
        //状态和执行
        int statusCodeGet5 = httpClient.executeMethod(getMethod5);
        System.out.println("Status code get5:" + statusCodeGet5);
        //获取下一步URI
        String get5xd;//设置临时变量,相对URI
        get5xd = getMethod5.getResponseHeader("Location").toString();
        get5xd = get5xd.replaceAll(" ", "");//去掉空格
        get5xd = get5xd.split(":", 2)[1];//得到网址
        //拼接真实URI
        loginuri += get5xd;
        System.out.println("Loginuri :" + loginuri);


        /*
         * 第七部 第六次GET 登录教务系统
         * */
        System.out.println("\n——————————————————————登录页面——————————————————");
        GetMethod getMethodLog = new GetMethod(loginuri);
        getMethodLog.addRequestHeader(new Header("Cookie", iPlanetDirectoryPro + ";" + JSESSION));
        //状态和执行
        int statusCodelog = httpClient.executeMethod(getMethodLog);
        System.out.println("Status code log:" + statusCodelog);
//        String result = getMethodLog.getResponseBodyAsString();
//        System.out.println("最终结果:\n"+result);



        /*
         * 学籍信息测试
         * */
        System.out.println("\n——————————————————————学籍页面——————————————————");
        String lf="http://jwglxt.wtu.edu.cn/xsxxxggl/xsgrxxwh_cxXsgrxx.html?gnmkdm=N100801&layout=default&su="+usernam;
        GetMethod getMethodtest = new GetMethod(lf);
        getMethodtest.addRequestHeader(new Header("Cookie", iPlanetDirectoryPro + ";" + JSESSION));
        //状态和执行
        int statusCodetest = httpClient.executeMethod(getMethodtest);
        System.out.println("Status code test1" + statusCodetest);
        String resulttest = getMethodtest.getResponseBodyAsString();
        System.out.println(resulttest);


        /*
         * Test 获取课表
         * */
        System.out.println("\n——————————————————————课表——————————————————");
        String kcb = "http://jwglxt.wtu.edu.cn/kbcx/xskbcx_cxXsKb.html?gnmkdm=N253508";
        PostMethod postMethodkcb = new Urlt().postKCB(httpClient, kcb, loginuri, iPlanetDirectoryPro + ";" + JSESSION);
        int kcbcode = postMethodkcb.getStatusCode();
        System.out.println("Status code kcb :" + kcbcode);
        String ss=new String(postMethodkcb.getResponseBody(), Charset.forName("ASCII"));
        System.out.println(ss);

        //读取json
        InputStream in = postMethodkcb.getResponseBodyAsStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(in,"ISO-8859-1"));
        String tempbf;
        StringBuffer html = new StringBuffer(8*1024);
        while ((tempbf = br.readLine()) != null) {
            html.append(tempbf +"\n");
        }
        System.out.println(html);
    }

    static class Urlt {

        //登录
        public PostMethod postAction(HttpClient client, String murl) throws IOException {
            HttpClient mClient = client;
            PostMethod postMethod = new PostMethod(murl);
            //请求头
            postMethod.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
            postMethod.setRequestHeader("Accept-Encoding", "gzip, deflate, br");
            postMethod.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
            postMethod.setRequestHeader("Connection", "keep-alive");
            postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            postMethod.setRequestHeader("Cookie", "route=" + ROUTE + "; JSESSIONID_auth=" + JSESSION);
            postMethod.setRequestHeader("Host", "auth.wtu.edu.cn");
            postMethod.setRequestHeader("Origin", "https://auth.wtu.edu.cn");
            postMethod.setRequestHeader("Referer", url);
            postMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0");
            //参数
            postMethod.addParameter(new NameValuePair("username", usernam));
            postMethod.addParameter(new NameValuePair("password", password));
            postMethod.addParameter(new NameValuePair("lt", lt));
            postMethod.addParameter(new NameValuePair("dllt", "userNamePasswordLogin"));
            postMethod.addParameter(new NameValuePair("execution", "e1s1"));
            postMethod.addParameter(new NameValuePair("_eventId", "submit"));
            postMethod.addParameter(new NameValuePair("rmShown", "1"));
            mClient.executeMethod(postMethod);
            return postMethod;
        }

        //请求课表
        public PostMethod postKCB(HttpClient client, String tourl, String refurl, String Cookies) throws IOException {
            HttpClient mClient = client;
            PostMethod postMethod = new PostMethod(tourl);
            //请求头
            postMethod.setRequestHeader("Accept", "*/*");
            postMethod.setRequestHeader("Accept-Encoding", "gzip, deflate, br");
            postMethod.setRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
            postMethod.setRequestHeader("Connection", "keep-alive");
            postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            postMethod.setRequestHeader("Cookie", Cookies);
            postMethod.setRequestHeader("Host", "auth.wtu.edu.cn");
            postMethod.setRequestHeader("Origin", "https://auth.wtu.edu.cn");
            postMethod.setRequestHeader("Referer", "http://jwglxt.wtu.edu.cn/kbcx/xskbcx_cxXskbcxIndex.html?gnmkdm=N253508&layout=default&su=" + usernam);
            postMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0");
            postMethod.setRequestHeader("X-Requested-With", "XMLHttpRequest");
            //表单数据
            postMethod.addParameter("xnm", "2019");
            postMethod.addParameter("xqm", "12");
            postMethod.setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");

            mClient.executeMethod(postMethod);
            return postMethod;
        }
    }
}

それが役に立った場合は、それを好きになることを忘れないでください、あなたは一緒に議論して進歩することができます!

転載元を明記してください!

元の記事を6件公開 賞賛7件 訪問数254件

おすすめ

転載: blog.csdn.net/XiaoYunKuaiFei/article/details/105438789