js
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const url = new URL(request.url);
// Check if the request path matches the pattern: /mmbiz_jpg/(.)
if (/^/mmbiz_jpg/(.)/.test(url.pathname)) {
// Replace the path prefix to proxy the request to https://mmbiz.qpic.cn
url.host = "mmbiz.qpic.cn";
url.pathname = url.pathname.replace(/^/mmbiz_jpg//, "/mmbiz_jpg/");
// Create a new request object with the updated URL and headers
const newRequest = new Request(url.toString(), {
method: request.method,
headers: request.headers,
});
// Set the Host header and remove the Referer header
newRequest.headers.set("Host", "mmbiz.qpic.cn");
newRequest.headers.delete("Referer");
// Send the request and return the response
return fetch(newRequest);
}
// Return the original request if the path doesn't match the pattern
return fetch(request);
}
这段 Cloudflare Worker 代码可以实现反代微信公众号的图片。具体步骤如下:
- 创建 Cloudflare Worker
首先,在 Cloudflare 控制台创建一个新的 Worker,将上述代码复制到代码编辑器中,并保存。
- 配置 Worker 的路由
进入「Routes」页面,在「Add route」输入框中输入要反代的微信公众号图床的 URL,例如:https://mmbiz.qpic.cn/*,然后将路由指向上一步创建的 Worker。
- 测试
配置完成后,可以尝试访问微信公众号中的某张图片,例如:https://mmbiz.qpic.cn/mmbiz_jpg/xxx/xxx/xxxx,如果一切正常,则会发现图片能够正常显示,且 URL 会变成类似于:https://你的-worker-url/mmbiz_jpg/xxx/xxx/xxxx 的形式。如果出现问题,可以查看 Cloudflare Worker 控制台的日志进行排查。