用Cloudflare Snippet实现反代blogspot
前言
最近看到有人应用 cloudflare 的 snippet 实现 像 worker 一样的节点功能.思路
看来,
一方面, 免费用户也有机会使用 snippet 了.
另一方面, snippet 的功能也增强了, 和worker 的区别更小了.
那么我就想用snippet实现之前用worker实现的反代blogspot的效果.
实践
uniproxy里面的语法比较老, 是这样的
addEventListener('fetch', event => {event.respondWith(handleRequest(event.request))})
用在snippet的话, 要改成这样的
export default {async fetch(request, env, ctx) {try {return await handleRequest(request, env, ctx);} catch (e) {return new Response(e.message || "Internal Error", { status: 500 });}},};
我让GPT做了转换.
从结果来看, 就除了这一点变化, 其它代码全部保持原样.
已上传Github
反代blogspot的worker代码
把需求发给GPT
当我把同样一份代码用于 worker 和 snippet有没有办法识别当前环境是 worker 还是 snippet, 从而 打开 或关闭 KV相关的代码逻辑?
结果是判断是否存在绑定KV的环境变量.
这个逻辑本身也挺好的, 即使是用于worker, 也可以避免在worker的环境下, 用户没有绑定KV而产生异常.
已上传Github
========
后记
本次 (2025-11-24) 使用GPT用到的是
Gemini中关于snippet的知识不及时.
我问到下面这样的用法, Gemini说snippet不支持, 只有worker支持. 但, 其中现在snippet是支持的.
export default {async fetch(request, env, ctx) {try {return await handleRequest(request, env, ctx);} catch (e) {return new Response(e.message || "Internal Error", { status: 500 });}},};

评论
发表评论