const axios = require('axios');
const express = require("express");
const router = express.Router();
const user_agent = process.env.USER_AGENT || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36";
router.get('/gethtml/:Url', async (req, res) => {
const { Url } = req.params;
const replacedUrl = decodeURIComponent(Url);
const url = replacedUrl.replace(/\.wakame02\./g, '.');
if (!url) {
return res.status(400).send('URLが入力されていません');
}
try {
const response = await axios.get(url, {
headers: {
'User-Agent': user_agent,
'Accept-Language': 'ja;q=1.0,en;q=0.5',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
}
});
const html = response.data;
res.send(`
View Source: ${url}
${escapeHTML(response.data)}
`);
} catch (error) {
res.status(500).send(`エラー: ${error.message}
`);
}
});
function escapeHTML(html) {
return html.replace(/&/g, "&")
.replace(//g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
router.get('/get/:Url', async (req, res) => {
const { Url } = req.params;
const replacedUrl = decodeURIComponent(Url);
const url = replacedUrl.replace(/\.wakame02\./g, '.');
const baseUrl = new URL(url);
if (!url) {
return res.status(400).send('URLが入力されていません');
}
try {
const response = await axios.get(url, {
headers: {
'User-Agent': user_agent,
'Accept-Language': 'ja;q=1.0,en;q=0.5',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
}
});
let html = response.data;
html = html.replace(/([\s\S]*?)<\/a>/g, (match, beforeHref, url, afterHref, innerText) => {
let absoluteUrl;
try {
if (url.startsWith('http') || url.startsWith('https')) {
absoluteUrl = url;
} else {
absoluteUrl = new URL(url, baseUrl).href;
}
} catch (e) {
console.error('Error parsing URL:', url, e);
return match;
}
const replacedAbsoluteUrl = absoluteUrl.replace(/\./g, '.wakame02.');
const encoded = encodeURIComponent(replacedAbsoluteUrl);
return `${innerText}`;
});
res.send(html);
} catch (error) {
res.status(500).send(`エラー: ${error.message}
`);
}
});
module.exports = router;