登录 Cloudflare Dashboard → Workers & Pages → 创建 Worker → 粘贴代码 → 部署
export default {
async fetch(request) {
const corsHeaders = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type'
};
if (request.method === 'OPTIONS') {
return new Response(null, { headers: corsHeaders });
}
const url = new URL(request.url);
// 搜索代理功能
if (url.pathname === '/proxy') {
const targetUrl = url.searchParams.get('url');
if (!targetUrl) {
return new Response(JSON.stringify({ error: 'Missing url parameter' }), {
status: 400,
headers: { ...corsHeaders, 'Content-Type': 'application/json' }
});
}
try {
const resp = await fetch(targetUrl, {
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0',
'Accept': 'application/json'
}
});
const data = await resp.text();
return new Response(data, {
headers: { ...corsHeaders, 'Content-Type': 'application/json' }
});
} catch (e) {
return new Response(JSON.stringify({ error: e.message }), {
status: 500,
headers: { ...corsHeaders, 'Content-Type': 'application/json' }
});
}
}
// 原有语言检测功能
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: { ...corsHeaders, 'Content-Type': 'application/json' }
});
}
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: { ...corsHeaders, 'Content-Type': 'application/json', 'Cache-Control': 'public, max-age=3600' }});
}
return new Response(JSON.stringify({ found: false }), { headers: { ...corsHeaders, 'Content-Type': 'application/json' }});
} catch (e) {
return new Response(JSON.stringify({ error: e.message }), { status: 500, headers: { ...corsHeaders, 'Content-Type': 'application/json' }});
}
}
};
⚠️ 新版Worker增加了 /proxy 端点用于搜索代理,请更新你的Worker代码!