const express = require('express'); const router = express.Router(); const axios = require('axios'); /** * 图片代理 * GET /api/proxy/image */ router.get('/image', async (req, res) => { try { const { url } = req.query; if (!url) { return res.status(400).json({ success: false, error: 'Image URL is required' }); } const response = await axios({ method: 'GET', url: decodeURIComponent(url), responseType: 'stream', headers: { 'Referer': 'https://www.pixiv.net/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' }, timeout: 30000 }); // 设置响应头 res.set({ 'Content-Type': response.headers['content-type'], 'Cache-Control': 'public, max-age=3600', // 缓存1小时 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET', 'Access-Control-Allow-Headers': 'Content-Type' }); // 流式传输图片数据 response.data.pipe(res); } catch (error) { console.error('Image proxy error:', error.message); res.status(500).json({ success: false, error: 'Failed to load image' }); } }); module.exports = router;