Code Monkey home page Code Monkey logo

lack-proxy's Introduction

lack-proxy

NPM version node version npm download NPM count License

lack-proxy 用于给 Node 程序设置全局 HTTP 代理,可以将 Node 进程里面的指定 TCP 请求代理到 Whistle 等抓包调试代理。

安装

npm i --save-dev lack-proxy

使用

建议在程序入口设置

const lack = require('lack-proxy');
  1. 设置全局HTTP代理:
    lack.proxy({
        host: '127.0.0.1',
        port: '8899',
        // allowlist: ['ke.qq.com', '*.ke.qq.com'],
        // blocklist: ['fudao.qq.com', '*.fudao.qq.com'],
        // filterRequest: (options, isSocket) => {
        //    return true || false;
        // }, // 可选,精确过滤请求
        // servername, // 可选,参见Node的HTTPS文档,设置SNI
        // headers, // 可选,设置代理请求头
    });

    程序里面的所有web请求(HTTP、HTTPS、WebSocket)都会代理到本地的 8899 端口的代理服务

  2. 根据请求参数动态设置
    lack.proxy((options) => {
        // 根据请求options动态设置代理
        return {
            host: '127.0.0.1',
            port: '8899',
            headers: options.headers,
            // allowlist: ['ke.qq.com', '*.ke.qq.com'],
            // blocklist: ['fudao.qq.com', '*.fudao.qq.com'],
            // filterRequest: (options, isSocket) => {
            //    return true || false;
            // }, // 可选,精确过滤请求
            // servername, // 可选,参见Node的HTTPS文档,设置SNI
        };
    });
  3. 有关例子可以参见测试用例

lack-proxy's People

Contributors

avwo avatar dependabot[bot] avatar

Stargazers

 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

Forkers

thinkerhope jx168

lack-proxy's Issues

bug: 如果uri是URL对象时,请求会出错

function ClientRequestProxy(uri, options, cb, isHttps) {
  if (typeof uri === 'string') {
    uri = urlParse(uri);
  }
  if (typeof options === 'function') {
    cb = options;
    options = Object.assign({}, uri);
  } else {
    options = Object.assign({}, uri, options);
  }
  options[HTTP_REQ_FLAG] = true;
  options.isSocket = 0;
  if (isHttps) {
    options._defaultAgent = https.globalAgent;
  }
  const proxy = !checkMethod(uri) && !checkMethod(options) && getProxy(options, isHttps);
  if (proxy && (!proxy.filterRequest || proxy.filterRequest(options))) {
    proxy.isHttps = isHttps;
    options.agent = getAgent(proxy, options);
  }
  ClientRequest.call(this, options, cb);
}

如果uri为URL对象,options = Object.assign({}, uri, options)解构赋值的时候,options对象会变成
image

[bug]无法配合nuxt3的nitro使用

nuxt3的helloworld程序,在nuxt.confg.ts的顶部设置:
lackProxy.setProxy

配置vite的proxy
image

使用useFetch发送请求

dev启动后,报错
image

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.