diff --git a/docs/program-update.md b/docs/program-update.md
index 50fdc203c4..087d8bdc63 100644
--- a/docs/program-update.md
+++ b/docs/program-update.md
@@ -50,6 +50,12 @@ pageClass: routes
+## Checkra1n
+
+### 新版本发布
+
+
+
## Chocolatey
### 软件更新
diff --git a/lib/router.js b/lib/router.js
index c215dd18d8..dc1091d035 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -2409,6 +2409,9 @@ router.get('/hubu/news/:type', require('./routes/universities/hubu/news'));
// 大连海事大学
router.get('/dlmu/news/:type', require('./routes/universities/dlmu/news'));
+// Checkra1n
+router.get('/checkra1n/releases', require('./routes/checkra1n/releases'));
+
// 四川省科学技术厅
router.get('/sckjt/news/:type?', require('./routes/sckjt/news'));
diff --git a/lib/routes/checkra1n/releases.js b/lib/routes/checkra1n/releases.js
new file mode 100644
index 0000000000..c1ee2dd062
--- /dev/null
+++ b/lib/routes/checkra1n/releases.js
@@ -0,0 +1,35 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const homepage = 'https://checkra.in/releases/';
+
+ const response = await got({
+ method: 'get',
+ url: homepage,
+ });
+
+ const $ = cheerio.load(response.data);
+ const releases = $('.release');
+
+ ctx.state.data = {
+ title: `Checkra1n All Releases`,
+ link: homepage,
+ item: releases
+ .map((i, item) => {
+ const $item = $(item);
+ const address = 'https://checkra.in' + $item.find('a').attr('href');
+
+ return {
+ title: $item
+ .find('h3')
+ .first()
+ .text(),
+ description: $item.find('.changelog').html(),
+ link: address,
+ guid: address,
+ };
+ })
+ .get(),
+ };
+};