技术 待归档
node 服务
const express = require('express');
const axios = require('axios');
const cors = require('cors');
const app = express();
const TARGET_BASE = 'https://star.kanjian.com';
const PROXY_PREFIX = '/zxd-proxy';
app.use(cors());
// 修复路由 - 使用命名通配符
app.all(new RegExp(`^${PROXY_PREFIX}(/.*)?$`), async (req, res) => {
try {
const originalPath = req.url.replace(PROXY_PREFIX, '') || '/';
const targetUrl = new URL(originalPath, TARGET_BASE);
console.log(`Proxying to: ${targetUrl.href}`);
const response = await axios({
method: req.method,
url: targetUrl.href,
headers: {
Cookie: '_fbp=fb.1.1742898892251.208149530979935203; _ga_GM7DFFD38Y=GS1.1.1742898891.2.1.1742898896.55.0.0; _ga_D9GQ4GB1ZH=GS1.1.1742898892.1.0.1742898896.0.0.0; gateway_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VBcHBlbmRpeCI6MjI0LCJ0ZW5hbnRLZXkiOiJrYW5qaWFuIiwidG9rZW5UeXBlIjoiYWNjZXNzLTE3NTE2MDQzMDE5MjkiLCJ1c2VySWQiOiIxODIwMDEiLCJ1c2VybmFtZSI6Imx1eXV4dWFuIn0.noURUzxr4Yob9PvHFYwWHlmKSeCX1YssX2Waqt_D09Q; copyright_sid="2|1:0|10:1752033132|13:copyright_sid|44:YTA3ZDYzOTU1MjAzNDU0ZjllNDU3MTRiYmQ0NTMyZmE=|1ffd4a199d1e6a9392e7ca5e81cc72f0a9e695f146522ef45dcc7d381c16b218"; _ga_F5ZCTSQ8CS=GS2.1.s1752043078$o5$g1$t1752043082$j56$l0$h0; _ga_8H27L1D89B=GS2.1.s1752043079$o5$g0$t1752043082$j57$l0$h0; _ga_91BTNLBLYT=GS2.2.s1752735385$o3$g0$t1752735385$j60$l0$h0; _ga_YX46V0XLV7=GS2.2.s1752735386$o1$g0$t1752735386$j60$l0$h0; cw_conversation=eyJhbGciOiJIUzI1NiJ9.eyJzb3VyY2VfaWQiOiIxNmY2ZDJmYS1iM2E3LTRkYjUtOWI1NC1iMjAwZTE1NjkyYmMiLCJpbmJveF9pZCI6MX0._o7aXUjZwkKT-YUie2iIgK5uX8niIo_AQ8NoBf9_jA4; cw_user_DybAfir7rzQupj8rBYUyJCBF=ffc3886bc8a8314419d5af1ee5b58faf; _ga=GA1.1.22603388.1735272210; _ga_B9JVM7WB3S=GS2.1.s1753413027$o18$g1$t1753413030$j57$l0$h0; _ga_MX4WGCLE5D=GS2.1.s1753413028$o17$g0$t1753413030$j58$l0$h0; _clck=p0l7ug%7C2%7Cfxz%7C0%7C1911; _ga_X9P1Q46HKL=GS2.1.s1753677612$o50$g1$t1753677614$j58$l0$h0; _ga_Y2TFJ10J4T=GS2.1.s1753677612$o46$g1$t1753677614$j58$l0$h0',
Host: targetUrl.hostname
},
data: req.body
});
res.status(response.status)
.set(response.headers)
.send(response.data);
} catch (error) {
console.error('Proxy error:', error.message);
res.status(500).json({ error: 'Proxy failed' });
}
});
app.listen(3001, () => {
console.log('Proxy server running on port 3001');
});vite 请求
// const creatorApiHost = '';
const creatorApiHost = 'http://localhost:3001/zxd-proxy';
axios.get(`${creatorApiHost}/creator-api/front-v1/items`)cookie从生产或者测试环境拿出来 然后本地 axios 的请求前缀改为本地的服务 就可以实现开发环境代理到生产/测试环境 我本地启动服务 而不是使用 vite.config.ts 里面的 proxy 是因为我的启动指令是 pnpm test 然后 使用了 w2 和 浏览器的 SwitchyOmega 进行了代理 所以 proxy 无效 只能手动启动一个服务 不过这个就是 代理的本质了吧
https://3.jetbra.in/
这个网站可以免费下载 JB 全家桶
https://web.dev/articles/howbrowserswork?hl=zh-cn#browsers_well_talk_about
浏览器的工作方式