用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 });
    }
  },
};


评论

The Hot3 in Last 7 Days

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks

极简一键脚本 搭NaiveProxy梯子 自定义端口 与Caddy V2前置的VLESS/Vmess V2Ray共存 可开CDN

酒馆SillyTavern 用中文讲故事 修改角色卡 修改AI生成的历史记录