From d01b919965d6134a3c58271fa164ea65ae69dc57 Mon Sep 17 00:00:00 2001 From: jinkin Date: Mon, 28 Dec 2020 19:40:44 +0800 Subject: [PATCH 1/5] add uestc sice notice --- docs/university.md | 4 ++++ lib/router.js | 2 ++ lib/routes/universities/uestc/sice.js | 29 +++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 lib/routes/universities/uestc/sice.js diff --git a/docs/university.md b/docs/university.md index ed3eb8acd..a30c3b731 100644 --- a/docs/university.md +++ b/docs/university.md @@ -396,6 +396,10 @@ xskb1 对应 +### 信息与通信工程学院 + + + ## 东北大学 ### 东北大学新闻网 diff --git a/lib/router.js b/lib/router.js index 2da2ee3d3..e66878522 100644 --- a/lib/router.js +++ b/lib/router.js @@ -772,6 +772,8 @@ router.get('/uestc/auto/:type?', require('./routes/universities/uestc/auto')); router.get('/uestc/cs/:type?', require('./routes/universities/uestc/cs')); router.get('/uestc/cqe/:type?', require('./routes/universities/uestc/cqe')); router.get('/uestc/gr', require('./routes/universities/uestc/gr')); +router.get('/uestc/sice', require('./routes/universities/uestc/sice')); + // 云南大学 router.get('/ynu/grs/zytz', require('./routes/universities/ynu/grs/zytz')); diff --git a/lib/routes/universities/uestc/sice.js b/lib/routes/universities/uestc/sice.js new file mode 100644 index 000000000..c04dc6356 --- /dev/null +++ b/lib/routes/universities/uestc/sice.js @@ -0,0 +1,29 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const baseIndexUrl = 'https://www.sice.uestc.edu.cn/'; + const response = await got.get(baseIndexUrl); + const $ = cheerio.load(response.data); + const out = $('.notice p').map((index, item) => { + item = $(item); + date = new Date(new Date().getFullYear() + '-' + item.find('a.date').text()); + if (new Date() < date) { + date = new Date((new Date().getFullYear() - 1) + '-' + item.find('a.date').text()); + } + return { + title: item.find('a[href]').text(), + link: baseIndexUrl + item.find('a[href]').attr('href'), + pubDate: date + }; + } + ).get(); + console.log(out); + + ctx.state.data = { + title: '信通通知公告', + link: 'https://www.sice.uestc.edu.cn/tzgg/yb.htm', + description: '电子科技大学信息与通信工程学院通知公告', + item: out + }; +}; \ No newline at end of file From 24e77b28aae16c71b7522e118d565b530f1c26f7 Mon Sep 17 00:00:00 2001 From: jinkin Date: Mon, 28 Dec 2020 19:44:51 +0800 Subject: [PATCH 2/5] add uestc sice notice --- lib/routes/universities/uestc/sice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/routes/universities/uestc/sice.js b/lib/routes/universities/uestc/sice.js index c04dc6356..3cfff9e23 100644 --- a/lib/routes/universities/uestc/sice.js +++ b/lib/routes/universities/uestc/sice.js @@ -18,7 +18,7 @@ module.exports = async (ctx) => { }; } ).get(); - console.log(out); + // console.log(out); ctx.state.data = { title: '信通通知公告', From 0575b09923901874fb47061fc8314fdb51c146ea Mon Sep 17 00:00:00 2001 From: Henry Wang Date: Mon, 28 Dec 2020 16:58:30 +0000 Subject: [PATCH 3/5] Update sice.js --- lib/routes/universities/uestc/sice.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/routes/universities/uestc/sice.js b/lib/routes/universities/uestc/sice.js index 3cfff9e23..53a08006f 100644 --- a/lib/routes/universities/uestc/sice.js +++ b/lib/routes/universities/uestc/sice.js @@ -7,7 +7,7 @@ module.exports = async (ctx) => { const $ = cheerio.load(response.data); const out = $('.notice p').map((index, item) => { item = $(item); - date = new Date(new Date().getFullYear() + '-' + item.find('a.date').text()); + let date = new Date(new Date().getFullYear() + '-' + item.find('a.date').text()); if (new Date() < date) { date = new Date((new Date().getFullYear() - 1) + '-' + item.find('a.date').text()); } @@ -26,4 +26,4 @@ module.exports = async (ctx) => { description: '电子科技大学信息与通信工程学院通知公告', item: out }; -}; \ No newline at end of file +}; From 323029c42d0f1abdda6b4c30878305326c44bb7d Mon Sep 17 00:00:00 2001 From: jinkin Date: Tue, 12 Jan 2021 20:24:34 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E7=BD=91=E7=AB=99=E6=94=B9=E7=89=88?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8JS=E5=8A=A0=E5=AF=86=EF=BC=9B?= =?UTF-8?q?=E9=80=9A=E8=BF=87puppeteer=E5=8A=A0=E8=BD=BD=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/routes/universities/uestc/sice.js | 49 ++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/lib/routes/universities/uestc/sice.js b/lib/routes/universities/uestc/sice.js index 53a08006f..acd553a52 100644 --- a/lib/routes/universities/uestc/sice.js +++ b/lib/routes/universities/uestc/sice.js @@ -1,10 +1,48 @@ -const got = require('@/utils/got'); const cheerio = require('cheerio'); module.exports = async (ctx) => { - const baseIndexUrl = 'https://www.sice.uestc.edu.cn/'; - const response = await got.get(baseIndexUrl); - const $ = cheerio.load(response.data); + const baseIndexUrl = 'https://www.sice.uestc.edu.cn/index.htm'; + const browser = await require('@/utils/puppeteer')(); + const page = await browser.newPage(); + + // 浏览器伪装 + await page.evaluateOnNewDocument(() => { //在每个新页面打开前执行以下脚本 + const newProto = navigator.__proto__; + delete newProto.webdriver; //删除navigator.webdriver字段 + navigator.__proto__ = newProto; + window.chrome = {}; //添加window.chrome字段,为增加真实性还需向内部填充一些值 + window.chrome.app = {"InstallState":"hehe", "RunningState":"haha", "getDetails":"xixi", "getIsInstalled":"ohno"}; + window.chrome.csi = function(){}; + window.chrome.loadTimes = function(){}; + window.chrome.runtime = function(){}; + Object.defineProperty(navigator, 'userAgent', { //userAgent在无头模式下有headless字样,所以需覆写 + get: () => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36", + }); + Object.defineProperty(navigator, 'plugins', { //伪装真实的插件信息 + get: () => [{"description": "Portable Document Format", + "filename": "internal-pdf-viewer", + "length": 1, + "name": "Chrome PDF Plugin"}] + }); + Object.defineProperty(navigator, 'languages', { //添加语言 + get: () => ["zh-CN", "zh", "en"], + }); + const originalQuery = window.navigator.permissions.query; //notification伪装 + window.navigator.permissions.query = (parameters) => ( + parameters.name === 'notifications' ? + Promise.resolve({ state: Notification.permission }) : + originalQuery(parameters) + ); + }); + + + await page.goto(baseIndexUrl, { + waitUntil: "networkidle0" + }); + const content = await page.content(); + await browser.close(); + const $ = cheerio.load(content); + const out = $('.notice p').map((index, item) => { item = $(item); let date = new Date(new Date().getFullYear() + '-' + item.find('a.date').text()); @@ -18,8 +56,9 @@ module.exports = async (ctx) => { }; } ).get(); - // console.log(out); + + ctx.state.data = { title: '信通通知公告', link: 'https://www.sice.uestc.edu.cn/tzgg/yb.htm', From 7fc35bd0fb921ca521817bd61808facb4c628ead Mon Sep 17 00:00:00 2001 From: codefactor-io Date: Tue, 12 Jan 2021 12:37:22 +0000 Subject: [PATCH 5/5] [CodeFactor] Apply fixes [ci skip] [skip ci] --- lib/routes/universities/uestc/sice.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/routes/universities/uestc/sice.js b/lib/routes/universities/uestc/sice.js index acd553a52..18e1e5b45 100644 --- a/lib/routes/universities/uestc/sice.js +++ b/lib/routes/universities/uestc/sice.js @@ -6,28 +6,28 @@ module.exports = async (ctx) => { const page = await browser.newPage(); // 浏览器伪装 - await page.evaluateOnNewDocument(() => { //在每个新页面打开前执行以下脚本 + await page.evaluateOnNewDocument(() => { // 在每个新页面打开前执行以下脚本 const newProto = navigator.__proto__; - delete newProto.webdriver; //删除navigator.webdriver字段 + delete newProto.webdriver; // 删除navigator.webdriver字段 navigator.__proto__ = newProto; - window.chrome = {}; //添加window.chrome字段,为增加真实性还需向内部填充一些值 + window.chrome = {}; // 添加window.chrome字段,为增加真实性还需向内部填充一些值 window.chrome.app = {"InstallState":"hehe", "RunningState":"haha", "getDetails":"xixi", "getIsInstalled":"ohno"}; - window.chrome.csi = function(){}; - window.chrome.loadTimes = function(){}; - window.chrome.runtime = function(){}; - Object.defineProperty(navigator, 'userAgent', { //userAgent在无头模式下有headless字样,所以需覆写 + window.chrome.csi = function() {}; + window.chrome.loadTimes = function() {}; + window.chrome.runtime = function() {}; + Object.defineProperty(navigator, 'userAgent', { // userAgent在无头模式下有headless字样,所以需覆写 get: () => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36", }); - Object.defineProperty(navigator, 'plugins', { //伪装真实的插件信息 + Object.defineProperty(navigator, 'plugins', { // 伪装真实的插件信息 get: () => [{"description": "Portable Document Format", "filename": "internal-pdf-viewer", "length": 1, "name": "Chrome PDF Plugin"}] }); - Object.defineProperty(navigator, 'languages', { //添加语言 + Object.defineProperty(navigator, 'languages', { // 添加语言 get: () => ["zh-CN", "zh", "en"], }); - const originalQuery = window.navigator.permissions.query; //notification伪装 + const originalQuery = window.navigator.permissions.query; // notification伪装 window.navigator.permissions.query = (parameters) => ( parameters.name === 'notifications' ? Promise.resolve({ state: Notification.permission }) : @@ -58,7 +58,6 @@ module.exports = async (ctx) => { ).get(); - ctx.state.data = { title: '信通通知公告', link: 'https://www.sice.uestc.edu.cn/tzgg/yb.htm',