登录 Cloudflare Dashboard → Workers & Pages → 创建 Worker → 粘贴代码 → 部署
export default {
async fetch(request) {
if (request.method === 'OPTIONS') {
return new Response(null, {
headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET', 'Access-Control-Allow-Headers': 'Content-Type' }
});
}
const url = new URL(request.url);
const gameId = url.searchParams.get('id');
if (!gameId || !/^[A-Za-z0-9]{12}$/.test(gameId)) {
return new Response(JSON.stringify({ error: 'Invalid game ID' }), { status: 400, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }});
}
try {
const resp = await fetch(`https://www.xbox.com/en-us/games/store/p/${gameId}`, {
headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0' }
});
const html = await resp.text();
const match = html.match(/"languagesSupported"\s*:\s*(\{(?:[^{}]|\{[^{}]*\})*\})/);
if (match) {
const langs = JSON.parse(match[1]);
const zhCN = langs['zh-CN'] || langs['zh-Hans'];
const zhTW = langs['zh-TW'] || langs['zh-Hant'] || langs['zh-HK'];
return new Response(JSON.stringify({
found: true, languages: langs,
chinese: {
simplified: zhCN ? { supported: zhCN.areSubtitlesSupported || zhCN.isAudioSupported || zhCN.isInterfaceSupported, interface: zhCN.isInterfaceSupported, audio: zhCN.isAudioSupported, subtitles: zhCN.areSubtitlesSupported } : { supported: false },
traditional: zhTW ? { supported: zhTW.areSubtitlesSupported || zhTW.isAudioSupported || zhTW.isInterfaceSupported, interface: zhTW.isInterfaceSupported, audio: zhTW.isAudioSupported, subtitles: zhTW.areSubtitlesSupported } : { supported: false }
}
}), { headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'public, max-age=3600' }});
}
return new Response(JSON.stringify({ found: false }), { headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }});
} catch (e) {
return new Response(JSON.stringify({ error: e.message }), { status: 500, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }});
}
}
};