UNPKG

http-mitm-proxy

Version:
45 lines (35 loc) 1.36 kB
'use strict'; var port = 8081; var Proxy = require('../'); var proxy = Proxy(); proxy.onError(function(ctx, err, errorKind) { // ctx may be null var url = (ctx && ctx.clientToProxyRequest) ? ctx.clientToProxyRequest.url : ''; console.error(errorKind + ' on ' + url + ':', err); }); proxy.onRequest(function(ctx, callback) { //console.log('REQUEST: http://' + ctx.clientToProxyRequest.headers.host + ctx.clientToProxyRequest.url); if (ctx.clientToProxyRequest.headers.host == 'www.google.com' && ctx.clientToProxyRequest.url.indexOf('/search') == 0) { ctx.use(Proxy.gunzip); ctx.onResponseData(function(ctx, chunk, callback) { chunk = new Buffer(chunk.toString().replace(/<h3.*?<\/h3>/g, '<h3>Pwned!</h3>')); return callback(null, chunk); }); } return callback(); }); proxy.onRequestData(function(ctx, chunk, callback) { //console.log('request data length: ' + chunk.length); return callback(null, chunk); }); proxy.onResponse(function(ctx, callback) { //console.log('RESPONSE: http://' + ctx.clientToProxyRequest.headers.host + ctx.clientToProxyRequest.url); return callback(null); }); proxy.onResponseData(function(ctx, chunk, callback) { //console.log('response data length: ' + chunk.length); return callback(null, chunk); }); proxy.listen({ port: port }); console.log('listening on ' + port);