此脚本的主要目的:让浏览器客户端首先通过此代理,然后再访问目标网站。可基于特定的url做正则表达式匹配,然后替换为本地修改的版本。
主要用于浏览器内核研发过程中某些怀疑是特定网站JS脚本执行出错导致的渲染异常bug。可在JS脚本中插入console.log以定位出错点。
var ProxyPort = 8888;
var http = require('http'),
net = require('net'),
url = require('url'),
httpProxy = require('http-proxy'); //需要执行npm install http-proxy --save
var proxy = httpProxy.createProxyServer({
autoRewrite: true, //??
});
proxy.on('error', function (err, req, res) {
res.writeHead(500, {
'Content-Type': 'text/plain'
});
res.end('httpProxy代理请求发生IO错误:URL='+req.url);
});
//支持http CONNECT协议的https代理:(当然,修改不了https连接的内容)
function connect(cReq, cSock) {
console.log("CONNECT: cReq.url="+cReq.url);
var u = url.parse('http://' + cReq.url);
var pSock = net.connect(u.port||80, u.hostname, function() {
cSock.write('HTTP/1.1 200 Connection Established\r\n\r\n');
pSock.pipe(cSock);
}).on('error', function(e) {