Giter Club home page Giter Club logo

xswitch's Introduction

English

XSwitch

Chrome version Chrome version Build Status Coverage Status license

一个用来做请求链接转发的 Chrome 浏览器插件,因为采用的是浏览器原生 API,安全性和性能能得到保障。

XSwitch-intro

优酷视频介绍

功能

  • 请求地址转发
  • 全局插件启用开关
  • 可禁用浏览器缓存
  • 采用 jsonc 以支持在转发规则中写注释
  • 可以使用 Monaco Editor(VSCode)中的部分快捷键,比如通过 ⌘K ⌘F 组合键可以实现格式化 JSON 的功能
  • 自动补全
  • 支持 CORS,支持 withCredentials
  • 跨域和缓存禁用键(右键点击浏览器工具栏的 XSwitch 插件图标 - 设置)
  • 分组规则

用法

所有的规则,会按照定义的顺序从前往后执行,即使匹配到了规则,也会继续往下匹配,直到最后一条启用的规则。

小提示:把 HTTPS 的链接转发到 http://127.0.0.1 下,浏览器不会出安全提示。习惯用 localhost 的同学,可以尝试下这个。

{
  // 转发规则
  "proxy": [
    [
      "//alinw.alicdn.com/platform/daily-test/isDaily.js", // 匹配 URL
      "//alinw.alicdn.com/platform/daily-test/isDaily.json" // 替换成这个 URL
    ],
    // 字符串替换,会全局匹配
    [
      "alinw",
      "g"
    ]
    // 把链接里所有的 .min 替换掉
    // [
    //   ".min",
    //   ""
    // ],
    // 正则
    // [
    //   "(.*)/platform/daily-test/(.*).js$",
    //   "http://127.0.0.1:3000/daily-test/$1.js"
    // ],
    // 直接转换成 inline 模式的 JavaScript
    // [
    //   "https://alinw.alicdn.com/platform/daily-test/isDaily.js",
    //   "data:text/javascript,window.__isDaily = true;"
    // ]
  ],
  // 希望开启 CORS 跨域的链接
  "cors": [
    "cors.a.com",
    "(.*).b.com"
  ]
}

更多说明:https://yuque.com/jiushen/blog/xswitch-readme

License

MIT © yize.shc

xswitch's People

Contributors

creamidea avatar gbk avatar leoyuan avatar suikaxin avatar yize avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xswitch's Issues

不走缓存了

安装插件之后 css js之类的静态文件不走缓存了

可以配置转发请求头信息么

我的目的是将浏览器中的请求,包括请求的信息转发给某个后台服务端,主要是用来收集浏览器的请求信息。而不是只是替换请求url,不知道这个功能有没有在插件中实现,如果可以的话该如何配置(我研究了一下,没找到配置的方法)。谢谢

跨域问题:对于需要先发送option的请求

对于需要先发送option的请求,会跨域失败。option请求 403 Invalid CORS request。
对于这种跨域需要先发送option的请求 能够支持下哇?option的请求直接返回200 就可以了。

请问有支持file协议的打算吗?

本地的文件在浏览器中可以使用file协议打开,而且我查询了下chrome.webRequest是支持file协议的,这样代理本地文件就很方便了

请求成功返回没数据

请求头报警告Provisional headers are shown;
之前用着都正常的,突然就挂了,请求返回200OK,但是没数据,控制台报警告jquery-3.3.1.min.js:2 Cross-Origin Read Blocking (CORB) blocked cross-origin response https://xcx.hexiaoxiang.com/api/classroom/experience with MIME type application/json. See https://www.chromestatus.com/feature/5629709824032768 for more details.
send @ jquery-3.3.1.min.js:2
ajax @ jquery-3.3.1.min.js:2
(anonymous) @ (index):15
接口测试正常,前端代码也正常。

CPU占用高

image
如图所示CPU占用过高,导致风扇呜呜呜呜呜呜呜呜呜的转~
xswitch中配置了5条规则,chrome使用的是 83.0.4094.0(正式版本)canary (64 位)

wss、ws 请求无法转发

[
      "https://localhost:7000/sockjs-node/(.+)",
      "http://127.0.0.1:7000/sockjs-node/$1"
],
[
      "wss://localhost:7000/sockjs-node/(.+)", // 无效
      "ws://localhost:7000/sockjs-node/$1"
],

依赖ali 内部npm问题

尝试新增一下功能,能够注入js到页面里面去,但是发现依赖的包,只有在阿里内部npm源上才能下载?

"@ali/nowa-recore-solution": "^1.0.0",
   "@ali/recore-loader": "^1.0.0",

能否考虑换成开源的包? 方便 非内部人士也可以开发

缓存失效问题

对于不代理的网站, 启用该插件会使得js/css等资源一直从网络中请求, 并不走本地缓存.

建议增加类似 redux-devtools 的停靠窗口的功能

现在的 xswitch 作为一个 popup 出现在浏览器界面上,失去焦点的时候会自动隐藏,编辑的时候很不方便。比如编辑过程中我想从 network 面板去拷贝一段 url,这时候 xswitch 面板就会隐藏掉,拷贝完回来还得再点开界面。
如果能像 redux-devtools 一样,新建一个停靠在屏幕上的窗口,编辑起来会更加方便。

Chrome memory cache 和 disk cache 失效

Chrome version:102.0.5005.63 (Official Build) (64-bit)
Xswitch version:1.17.1

开启 Xswitch 插件时,访问任何一个网站都无法缓存,无 memory cache 和 disk cache。
不能被缓存的文件包含不限于:js, css, png, jpg 等等

跨域失败

跨域时候请求似乎还是会打到服务器
但是服务器报了500错误,导致跨域请求还是失败了
有没有办法拦截Option请求,让响应码总是200

如何动态修改requestFilters

你好,想请教一个问题。如果通过配置修改requestFilter的参数,发现requestFilter不会改变。想问一下,如何来动态修改requestFilters呢。是要先removeListeneraddListener么?谢谢

希望可视化输入模式

目前都是代码模式,有些场景下方便,但是在单独加规则的时候,不是很方便。
希望能通过表单等方式加入。

release issue

直接从 github 上下载速度太慢了, 可以把 release 放在云盘上贴出来么/渴望

能发一份到微软 Edge 应用商店么?

虽然本身可以在 Edge 中打开 Chrome 应用商店进行安装,但由于公司网络环境,难以fq,所以希望能够部署一份到 Edge 应用商店
如果作者觉得麻烦,也可以代发,注明版权信息。。

希望可以按照域名启用规则

增加 enable 功能,在指定域名下开启规则。

{
  // Use IntelliSense to learn about possible links.
  // Type `rule` to quick insert rule.
  // 输入 rule 来快速插入规则
  // For more information, visit: https://github.com/yize/xswitch
  "proxy": [
    [
      "https://unpkg.com/[email protected]/umd/react.production.min.js",
      "https://unpkg.com/[email protected]/umd/react.development.js"
    ],
    // `Command/Ctrl + click` to visit:
    // https://unpkg.com/[email protected]/umd/react.production.min.js
    // [
      // "(.*)/path1/path2/(.*)", // https://www.sample.com/path1/path2/index.js
      // "http://127.0.0.1:3000/$2", // http://127.0.0.1:3000/index.js
    // ],
  ],
  // urls that want CORS
  // "cors": [
    // "mocks.a.com",
    // "mocks.b.com"
  // ]
  "enable": [
    "a.b.com"
  ],
}

can not match url with `??`

?? is a rule for Tengine url concat module.

new RegExp('https://alinw.alicdn.com/??lega/xux_mid/(.*)/app.js,lega-comp/xux_mid/(.*)/web.js')
  .test('https://alinw.alicdn.com/??lega/xux_mid/0.0.32/app.js,lega-comp/xux_mid/0.0.32/web.js')
// false

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.