From 66183f4c22e66bcb82d058dde1fca04fc274d58f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?tsukasa=28=E5=BC=B7=E6=AC=B2=29?= <94173826+tsukasa0220@users.noreply.github.com> Date: Mon, 6 Mar 2023 17:58:19 +0900 Subject: [PATCH] 0.9.8 --- extrack.gs | 5 ++++- login_after.html | 8 +++++--- login_before.html | 2 +- main.gs | 7 ++----- moodle.gs | 37 ++++++++++++++++++++++++++++++++----- property.gs | 5 +++-- 6 files changed, 47 insertions(+), 17 deletions(-) diff --git a/extrack.gs b/extrack.gs index f173c0e..d8254c1 100644 --- a/extrack.gs +++ b/extrack.gs @@ -13,11 +13,14 @@ function cheerio($, className, option, val) { function parse(html, start, end) { return Parser.data(html).from(start).to(end).iterate(); // 配列 } +function parse_one(html, start, end) { + return Parser.data(html).from(start).to(end).build(); //単体 +} // 1つに統合 function conbine(title, component, eventtype, courseid, eventlink, description, eventtime, subject) { return `

Kadai-Calendar Ver${VERSION}


` + - `

${event_link(component, eventlink)}


` + +      `

${event_link(component, eventlink)}


` + `============================
` + `${event_type(eventtype)}:${time_change(eventtime)}
` + `時間割名:${subject}
` + diff --git a/login_after.html b/login_after.html index cd4c9a7..3b0ac34 100644 --- a/login_after.html +++ b/login_after.html @@ -76,10 +76,12 @@

Kadai-Calendar
`; - } else if (n[0] == false) { + } else if (n[0] === false) { inResponse.innerHTML = `
`; + } else if (n[0] === 0) { + inResponse.innerHTML = `
追加するイベントはありません。
`; } else { inResponse.innerHTML = `
${n[0]}個のイベントを追加しました。
`; // document.getElementById('inCalendar').innerHTML = ``; @@ -91,7 +93,7 @@

Kadai-Calendar
`; } else { inResponse.innerHTML = `
登録を解除しました ページを更新してください
`; diff --git a/login_before.html b/login_before.html index a8c634e..7ba3987 100644 --- a/login_before.html +++ b/login_before.html @@ -56,7 +56,7 @@

Kadai-Calendar
headers = { 'user-agent': USER_AGENT, } options = { + 'method': 'get', 'headers': headers, 'muteHttpExceptions': true, - "validateHttpsCertificates" : false, - "followRedirects" : false, + 'validateHttpsCertificates' : false, + 'followRedirects' : false, } try { response = UrlFetchApp.fetch(LOGIN_URL, options); @@ -64,6 +65,7 @@ function moodle_login(username, password) { 'method': 'post', 'headers': headers, 'payload': payload, + 'validateHttpsCertificates' : false, 'followRedirects': false, } response = UrlFetchApp.fetch(LOGIN_URL, options); @@ -92,13 +94,38 @@ function moodle_login(username, password) { options = { 'method': 'get', 'headers': headers, + 'validateHttpsCertificates' : false, + 'followRedirects': false, } response = UrlFetchApp.fetch(CALENDAR_URL, options); - // 得られたレスポンスが、カレンダーのソースか[class=".eventlist"]で判断、ある場合はその入れ子であるHTMLソースを返す + // 得られたレスポンスが、カレンダーのソースか[class=".eventlist"]で判断、ある場合はその入れ子であるHTMLソースを返す data = response.getContentText("UTF-8"); $ = Cheerio.load(data); + + // ログアウトkeyを取得 + sesskey = parse_one(data, '"sesskey":"', '",'); + + Utilities.sleep(300); + + // ログアウトする <303> + headers = { + 'cookie': moodleSession, + 'user-agent': USER_AGENT, + } + payload = { + 'sesskey': sesskey, + } + options = { + 'method': 'get', + 'headers': headers, + 'payload': payload, + 'validateHttpsCertificates' : false, + 'followRedirects' : false, + } + response = UrlFetchApp.fetch(LOGOUT_URL, options); + if ($('.eventlist').html()) {return $('.eventlist').html();} - Logger.log("失敗[003]"); + Logger.log("取得失敗"); return false; } \ No newline at end of file diff --git a/property.gs b/property.gs index 75627c9..af7a38f 100644 --- a/property.gs +++ b/property.gs @@ -2,11 +2,12 @@ // Parser : 1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw // バージョン -const VERSION = '0.9.6'; +const VERSION = '0.9.8'; // MoodleのURL const LOGIN_URL = 'https://kadai-moodle.kagawa-u.ac.jp/login/index.php'; const CALENDAR_URL = 'https://kadai-moodle.kagawa-u.ac.jp/calendar/view.php?view=upcoming&course=1'; +const LOGOUT_URL = 'https://kadai-moodle.kagawa-u.ac.jp/login/logout.php'; -// ブラウザにからアクセスしているかのように偽装(一応マクロ対策) +// ブラウザにからアクセスしているかのように偽装(一応マクロ対策)→追記:できないっぽい const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.56'; \ No newline at end of file