require("./m3m4")

var http = require('http');

var server = http.createServer();
server.listen(100, function () {
var port = server.address().port;
console.log('HTTP(s) proxy server listening on port %d', port);
});
var fs=require("fs") var request = require('request'); function eachHeader (obj, fn) {
if (Array.isArray(obj.rawHeaders)) {
// ideal scenario... >= node v0.11.x
// every even entry is a "key", every odd entry is a "value"
var key = null;
obj.rawHeaders.forEach(function (v) {
if (key === null) {
key = v;
} else {
fn(key, v);
key = null;
}
});
} else {
// otherwise we can *only* proxy the header names as lowercase'd
var headers = obj.headers;
if (!headers) return;
Object.keys(headers).forEach(function (key) {
var value = headers[key];
if (Array.isArray(value)) {
// set-cookie
value.forEach(function (val) {
fn(key, val);
});
} else {
fn(key, value);
}
});
}
}
var hopByHopHeaders = [
'Connection',
'Keep-Alive',
'Proxy-Authenticate',
'Proxy-Authorization',
'TE',
'Trailers',
'Transfer-Encoding',
'Upgrade'
]; // create a case-insensitive RegExp to match "hop by hop" headers
var isHopByHop = new RegExp('^(' + hopByHopHeaders.join('|') + ')$', 'i');
//伪造http
function parse (req, server) { var parsed = require("url").parse(req.url); parsed.uri=parsed.href;
// proxy the request HTTP method
parsed.method = req.method; // setup outbound proxy request HTTP headers
var headers = {}; parsed.headers = headers;
eachHeader(req, function (key, value) {
var keyLower = key.toLowerCase(); if (isHopByHop.test(key)) {
} else {
var v = headers[key];
if (Array.isArray(v)) {
v.push(value);
} else if (null != v) {
headers[key] = [ v, value ];
} else {
headers[key] = value;
}
}
}); if (null == parsed.port) {
// default the port number if not specified, for >= node v0.11.6...
// https://github.com/joyent/node/issues/6199
parsed.port = 80;
}
return parsed
} server.on('request', function (req, res) { var url=req.url var parsed=parse(req)
// console.log(parsed)
if(url.Test("reduce_bd-logo1_oper.png")){ request(parsed,function(err,resp,body){
res.writeHeader(200)
fs.createReadStream("a.png").pipe(res)
}).pipe(fs.createWriteStream("a.png"))
}else{
request(parsed,function(err,resp,body){
}).pipe(res)
} })

  

最新文章

  1. SEO:让搜索引擎对你的网站更有亲和力(译)
  2. Linux修改环境变量的方法
  3. Java EE学习--Quartz基本用法
  4. Flume-NG之KafkaChannel
  5. WPF/Silverlight Template使用及总结(转)
  6. Python中整数和浮点数
  7. Java关键字static、final使用小结
  8. delphi debug release区别是什么?
  9. 开发者需要知道的11条HTML5小常识
  10. 【ArcGIS 10.2新特性】ArcGIS 10.2 for Server常见问题
  11. MySQL EXTRACT() 函数
  12. 支持向量机SVM——专治线性不可分
  13. Iframe框架+table布局 +div布局实例
  14. test pictures
  15. Git—学习笔记1
  16. 洛谷.3065.第一!First!(Trie 拓扑)
  17. python regularexpress
  18. PHP算法之排序算法(PHP内置排序函数)
  19. Android下的Junit测试
  20. 服务器监控zabbix

热门文章

  1. 在MYSQL中运用全文索引(FULLTEXT index)
  2. wc.exe C++实现
  3. JAVA读取控制台的输入【转】
  4. ICallbackEventHandler使用
  5. 函数返回值string与返回值bool区别------c++程序设计原理与实践(进阶篇)
  6. mysql 时间戳转换为日期
  7. 解决org.hibernate.NonUniqueObjectException的问题
  8. 设置使用的python版本
  9. Python3 + django2.0 + apache2 + ubuntu14部署网站上线
  10. eclipse中查看java源码时,出现source not found问题