666 的 AnyProxy

2016/11/06 | 2分钟阅读 | 更新于 2016/11/06

昨晚写完服务端的一堆接口,然后之后要跟前端部分联调一下,虽然都跑在我的电脑上,但是 webpack-dev-server 跟后端部分端口不一致啊。我打开了 Fiddler,既然开代理了,那我搞个不存在的域名,把接口相关的请求转发到 3000,把文件相关的请求转到 8080 。

然后我就发现 Fiddler 没办法按照我的期望(换 Host 和 port 不换 path)进行转发,查了下,据说 “Fiddler 只支持文件粒度的转发,不支持文件夹粒度的”。但是我需要的偏偏只是根据 path 把请求的 host 跟 port 替换掉,中间环节我都想好了,拿正则去 match url,把匹配到的部分作为变量在替换后的部分引用使用。

然后我就找了下能不能自己实现这部分,然后我就找到了一篇文章 ,讲了一个简单的 http 代理实现,并给出了很简短的 node 代码实现。主要就是监听请求,收到请求后把请求里面的 header,host,port 等等拿出来去发送另外一个请求。那我只要在收到请求之后判断下 path,host 等等,如果需要的话就替换掉,就可以用了,然后就是怎么优雅地实现基本的配置,然后就睡觉了。

不过早晨睡醒我就发现了另一篇文章 ,介绍了 anyproxy,功能很强大,扩展很便捷。比如配置文件是一个 js 文件,可以在里面定义需要的方法,像是这样:

module.exports = {
  replaceRequestOption: function (req, option) {
    var newOption = option;
    console.log(option.path);
    if (newOption.headers.host == "web.develop") {
      newOption.hostname = "127.0.0.1";
      if (/\.(jpg|jpeg|png|gif|jpeg)[#\?]?/.test(newOption.path)) {
        newOption.port = "8080";
      } else if (/\.(html|js)[#\?]?/.test(newOption.path)) {
        newOption.port = "8080";
      } else {
        newOption.port = "3000";
      }
    }
    return newOption;
  },
};

很简单的实现了我的需求,搭配 chrome 扩展 SwitchySharp 更方便。 然后 anyproxy 本身不只是这点功能,具体描述见相关文档吧 …

© 2026 香蕉引擎故障报告

🌱 Powered by Hugo with theme Dream.

关于

要怎么介绍自己呢,🤔。

很早以前是作为 Web 前端在学习的,但是工作第一年就成为了全干工程师。喜欢尝试各种东西,什么都会一点。

一直很喜欢 Ebiten 游戏引擎 ,特别简洁,用它做过一些小东西,可以查看这个分类 。另外特别推荐这个木鱼 ,是一个相对完整的小玩意儿,包含手搓的一个简单的 UI 框架;支持鼠标和键盘操作;有多语言和主题切换功能;同时支持 Web 端和客户端。它的源代码在 bin16/wooden-fish

主题

网站基于 Hugo,当前使用的是 hugo-theme-dream 主题的修改版 ,根据我的需要,做了一些对 PaperMod 的兼容。

我自己也写过主题 ,但是没有别人写的好看。

正在从我的笔记中往外搬运内容

等待更新:

  • 从《锈湖》中学了些什么东西
  • 我拿 React 写解谜游戏的经过
  • 基于 Pocketbase 的 Pocket Memos
  • 数独!