ディレクトリ
序文
最近、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;
}
}
}
それが役に立った場合は、それを好きになることを忘れないでください、あなたは一緒に議論して進歩することができます!
転載元を明記してください!