一個基於nodejs,支持http/https的中間人(MITM)代理,便於滲透測試和開發調試。


源碼地址:https://github.com/wuchangming/node-mitmproxy

node-mitmproxy

npm
node-mitmproxy是一個基於nodejs,支持http/https的中間人(MITM)代理,便於滲透測試和開發調試。

1、特性

1、支持https
2、支持配置的方式啟動,也支持以模塊的方式引入到代碼中

2、安裝

windows
    npm install node-mitmproxy -g
Mac
    sudo npm install node-mitmproxy -g

3、使用

關於配置文件

簡單配置:

simpleConfig.js

module.exports = {
    sslConnectInterceptor: (req, cltSocket, head) => true,
    requestInterceptor: (rOptions, req, res, ssl, next) => {
        console.log(`正在訪問:${rOptions.protocol}//${rOptions.hostname}:${rOptions.port}`);
        console.log('cookie:', rOptions.headers.cookie);
        res.end('hello node-mitmproxy!');
        next();
    }
};

效果圖:

詳細配置說明
更多例子

啟動方式

node-mitmproxy -c simpleConfig.js

安裝node-mitmproxy CA根證書

生成CA根證書的默認路徑:%用戶名%/node-mitmproxy

PC下安裝根證書方式

Mac
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/node-mitmproxy/node-mitmproxy.ca.crt
windows

注: 證書需要安裝到 ** 受信任的根證書目錄 ** 下
參考 issues#3

start %HOMEPATH%/node-mitmproxy/node-mitmproxy.ca.crt

以nodejs模塊的方式引用到代碼中

var mitmproxy = require('node-mitmproxy');

mitmproxy.createProxy({
    sslConnectInterceptor: (req, cltSocket, head) => true,
    requestInterceptor: (rOptions, req, res, ssl, next) => {
        console.log(`正在訪問:${rOptions.protocol}//${rOptions.hostname}:${rOptions.port}`);
        console.log('cookie:', rOptions.headers.cookie);
        res.end('Hello node-mitmproxy!');
        next();
    },
    responseInterceptor: (req, res, proxyReq, proxyRes, ssl, next) => {
        next();
    }
});

4、配置詳細說明

port

啟動端口(默認:6789)

    port: 6789

sslConnectInterceptor

判斷該connnect請求是否需要代理,傳入參數參考http connnect 。

    sslConnectInterceptor: (clientReq, clientSocket, head) => true,

requestInterceptor

攔截客戶端請求/響應

參數說明: 1、requestOptions:客戶端請求參數 2、clientReq: 參考http.IncomingMessage 3、clientRes: 參考http.ServerResponse 4、ssl: 該請求是否為https 5、next: 回調函數,執行完攔截邏輯后調用該方法

    requestInterceptor: (requestOptions, clientReq, clientRes, ssl, next) => {
        next();
    }

caCertPath

CA根證書路徑(ps: 無特殊情況無需配置) 默認:%HOMEPATH%/node-mitmproxy/node-mitmproxy.ca.crt

caCertPath: 'xxxx/xxxx.crt'

caKeyPath

CA根證書密鑰路徑(ps: 無特殊情況無需配置) 默認:%HOMEPATH%/node-mitmproxy/node-mitmproxy.ca.key.pem

caKeyPath: 'xxxx/xxxx.pem'

5、更多

關於偽造https證書的邏輯圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM