NodeMITMProxyCA 라는녀석이 생성되서 찾아보니 아래의 경로에 생성을 한다.
흐음.. 서비스 용으로 만들려면 이 이름을 어떻게 바꿔치워야 겠네? ㅠㅠ
./.http-mitm-proxy/certs/ca.pem ./.http-mitm-proxy/keys/ca.private.key ./.http-mitm-proxy/keys/ca.public.key |
[링크 : https://github.com/greim/hoxy]
[링크 : https://stackoverflow.com/questions/10085082/node-http-proxy-ssl-transparent]
[링크 : https://github.com/TotallyInformation/node-proxy-https-example/blob/master/proxy.js]
[링크 : https://www.npmjs.com/package/http-mitm-proxy]
아래는 span 에 들어있는 내용을 죄다 Pwned로 바꿔치기 하는 기본 예제를 변형한 녀석
var Proxy = require('http-mitm-proxy');
var proxy = Proxy();
var path = require('path');
proxy.use(Proxy.wildcard);
proxy.onError(function(ctx, err) {
console.error('proxy error:', err);
});
proxy.onRequest(function(ctx, callback) {
// 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>'));
console.log(chunk.toString());
chunk = new Buffer(chunk.toString().replace(/<span.*?<\/span>/g, '<span>Pwned!</span>'));
return callback(null, chunk);
});
}
return callback();
});
proxy.onRequestData(function(ctx, chunk, callback) {
console.log('REQUEST DATA:', chunk.toString());
return callback(null, chunk);
});
/*
proxy.onCertificateRequired = function(hostname, callback) {
return callback(null, {
keyFile: path.resolve('key.pem'),
certFile: path.resolve('cert.pem'),
hosts: ["*"]
});
};
*/
proxy.listen({port: 8080});
사용자가 생성한 인증서를 이용하여 서비스하기
[링크 : http://blog.saltfactory.net/implements-nodejs-based-https-server/]
var Proxy = require('http-mitm-proxy');
var proxy = Proxy();
var path = require('path');
proxy.use(Proxy.wildcard);
proxy.onError(function(ctx, err) {
console.error('proxy error:', err);
});
proxy.onRequest(function(ctx, callback) {
{
ctx.use(Proxy.gunzip);
ctx.onResponseData(function(ctx, chunk, callback) {
chunk = new Buffer(chunk.toString().replace(/<span.*?<\/span>/g, '<span>Pwned!</span>'));
return callback(null, chunk);
});
}
return callback();
});
proxy.onCertificateRequired = function(hostname, callback) {
return callback(null, {
keyFile: path.resolve('key.pem'),
certFile: path.resolve('cert.pem'),
hosts: ["*.mydomain.com"]
});
};
proxy.listen({port: 8080});
'Programming > node.js' 카테고리의 다른 글
http-mitm-proxy 예제 (0) | 2019.04.08 |
---|---|
node.js 구버전 모듈에러 TypeError: path.existsSync is not a function (0) | 2019.04.05 |
proxy http node.js (0) | 2019.04.01 |
TypeError: Converting circular structure to JSON (0) | 2019.03.27 |
https proxy using node.js (0) | 2019.03.27 |