const express = require('express'); const { createProxyMiddleware } = require('http-proxy-middleware'); const app = express(); const port = 3001; app.use((req, res, next) => { const userAgent = req.headers['user-agent']; if (userAgent && (userAgent.includes('PCL') || userAgent.includes('FCL') || userAgent.includes('HMCL') || userAgent.includes('BakaXL'))) { next(); // User-Agent 已经包含所需字符串,无需修改 } else { // 重定向前设置 User-Agent req.customUserAgent = 'MTB Hello'; next(); } }); app.get('/releases/:path(*)', (req, res) => { const path = req.params.path; const userAgent = req.customUserAgent || 'MTB Hello'; const redirectUrl = `https://bmclapi2.bangbang93.com/maven/${path}`; res.set({ 'Location': redirectUrl, 'User-Agent': userAgent }).status(302).end(); }); //下载处理 app.get('/repository/release/:path(*)', (req, res) => { const path = req.params.path; const userAgent = req.customUserAgent || 'MTB Hello'; const redirectUrl = `https://bmclapi2.bangbang93.com/maven/${path}`; res.set({ 'Location': redirectUrl, 'User-Agent': userAgent }).status(302).end(); }); //下载处理 Qulit // 反代 maven Neoforge列表 app.use('/api/maven/versions/releases/net/neoforged/forge', createProxyMiddleware({ target: 'https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/forge', changeOrigin: true, followRedirects: false })); app.use('/api/maven/versions/releases/net/neoforged/neoforge', createProxyMiddleware({ target: 'https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/neoforge', changeOrigin: true, followRedirects: false })); //反代 maven Neoforge列表 app.get('/:path(*)', (req, res) => { const path = req.params.path; const userAgent = req.customUserAgent || 'MTB Hello'; const redirectUrl = `https://bmclapi2.bangbang93.com/maven/${path}`; res.set({ 'Location': redirectUrl, 'User-Agent': userAgent }).status(302).end(); }); app.listen(port, () => { console.log(`Server is running on port ${port}`); });