import { Catbox } from "node-catbox";
import { Readable } from "stream";
import { setGlobalDispatcher, ProxyAgent } from "undici";
// ===在这里手动配置你的代理===
const PROXY_URL = "http://127.0.0.1:10808";
async function runDebug() {
console.log(`=== 开始 Catbox 连接测试 (使用代理: ${PROXY_URL}) ===\n`);
// 1. 强制设置全局代理
// 这会拦截所有 fetch 请求并强制它们走代理
if (PROXY_URL) {
const dispatcher = new ProxyAgent(PROXY_URL);
setGlobalDispatcher(dispatcher);
console.log("✅ 已配置 Undici 全局代理");
}
// 2. 基础连接测试
console.log("\n2. 正在测试基础 HTTP 连接 (fetch)...");
try {
// 增加超时设置,防止无限等待
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 10000);
const check = await fetch("https://catbox.moe/user/api.php", {
method: "HEAD",
signal: controller.signal
});
clearTimeout(timeoutId);
console.log(`✅ 连接成功,状态码: ${check.status} (${check.statusText})`);
} catch (err: any) {
console.error("❌ 连接失败:", err.message);
if (err.cause) console.log(err.cause);
return;
}
// 3. 模拟上传测试
console.log("\n3. 正在测试 node-catbox 上传功能...");
try {
const catbox = new Catbox();
const testContent = "Proxy test " + Date.now();
const stream = Readable.from(Buffer.from(testContent));
const url = await catbox.uploadFileStream({
stream: stream,
filename: "proxy_debug.txt"
});
console.log("✅ 上传成功!");
console.log(" 返回链接:", url);
} catch (err: any) {
console.error("❌ 上传失败:", err.message);
}
}
runDebug();