제목만 거창해지고 있네 ㅋㅋ
fs.mkdirSync(path, {recursive:true}); 로 해보려는데
1개 까진 생성해도 2개 깊이는 생성이 안되서 mkdirp 라는 모듈을 사용해서 해결
(아니 그럼.. parent 생성기능이 안되는 거잖아?)
[링크 : https://www.npmjs.com/package/mkdirp]
그리고 request가 아니라 response를 해주어야 하는거라 저장용도로는 일단 되는 듯
이걸 어떻게 request에 묶어서 다시 보내주지?
+
context에서 clientresponse를 통해 보내면 되는 듯.
ctx.proxyToClientResponse.end('Hacked, you cannot proceed to the website'); |
[링크 : https://github.com/joeferner/node-http-mitm-proxy/blob/master/examples/preventRequest.js]
var Proxy = require('http-mitm-proxy');
var proxy = Proxy();
var path = require('path');
var url = require('url');
var { URLSearchParams } = require('url');
var decode = require('urldecode')
var mkdirp = require('mkdirp');
var fs = require('fs');
var idx = 0;
var chunks = [];
proxy.use(Proxy.wildcard);
proxy.onError(function(ctx, err) {
console.error('proxy error:', err);
});
proxy.onRequest(function(ctx, callback) {
{
ctx.use(Proxy.gunzip);
var pback = ctx.clientToProxyRequest.url;
var params = new URLSearchParams(url.parse(pback).query);
params.sort();
//console.log(url.parse(pback).pathname + '?' + decode(params.toString()));
ctx.onResponseData(function(ctx, chunk, callback) {
chunks.push(chunk);
return callback(null, chunk);
});
}
ctx.onResponseEnd(function(ctx, callback) {
// console.log('REQUEST END', (Buffer.concat(chunks)).toString());
console.log('REQUEST END');
// console.log(path.basename(oriname.pathname))
// console.log(path.dirname(oriname.pathname))
var oriname = url.parse(ctx.clientToProxyRequest.headers.host + ctx.clientToProxyRequest.url)
var dirname = 'save/' + path.dirname(oriname.pathname) + '/';
var filename = path.basename(oriname.pathname) + idx;
// idx++;
console.log(dirname);
console.log(filename);
mkdirp.sync(dirname);
fs.writeFileSync(dirname + filename, Buffer.concat(chunks));
chunks = [];
return callback();
});
return callback();
});
proxy.onCertificateRequired = function(hostname, callback) {
return callback(null, {
keyFile: path.resolve('/ca/certs/', hostname + '.key'),
certFile: path.resolve('/ca/certs/', hostname + '.crt')
});
};
proxy.listen({port: 3128});
[링크 : https://www.npmjs.com/package/http-mitm-proxy]