// api.js 原生node,零第三方依赖 const http = require('http'); const url = require('url'); // 目标要抓取的地址 const TARGET_URL = "http://120.76.248.139/udp/txiptv_chlist_zdy.php?deviceId=5b59b24e74886da42d969c7c6e09729b&ip=39.164.164.132:9901"; function fetchTarget() { return new Promise((resolve, reject) => { http.get(TARGET_URL, (res) => { let data = ''; res.on('data', chunk => data += chunk); res.on('end', () => resolve(data)); }).on('error', err => reject(err)); }); } const server = http.createServer(async (req, res) => { // 允许跨域,前端网页随便调用 res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Content-Type', 'application/json;charset=utf-8'); const parseUrl = url.parse(req.url); if (parseUrl.pathname === '/getiptv') { try { const text = await fetchTarget(); const lines = text.split('\n'); const list = []; for (let line of lines) { line = line.trim(); if (!line || !line.includes(',')) continue; const [name, stream] = line.split(','); list.push({ name, stream }); } res.end(JSON.stringify({ code: 0, msg: "success", total: list.length, data: list }, null, 2)); } catch (e) { res.end(JSON.stringify({ code: -1, msg: "抓取失败", error: e.message })); } } else { res.end(JSON.stringify({ code: -2, msg: "接口不存在" })); } }); const PORT = 3000; server.listen(PORT, () => { console.log(`API已启动:http://localhost:${PORT}/getiptv`); });