diff --git a/lib/requestHandler.js b/lib/requestHandler.js index 775c108..8b05baf 100644 --- a/lib/requestHandler.js +++ b/lib/requestHandler.js @@ -10,7 +10,9 @@ var http = require("http"), Buffer = require('buffer').Buffer, util = require("./util"), Stream = require("stream"), - httpsServerMgr = require("./httpsServerMgr"); + httpsServerMgr = require("./httpsServerMgr"), + HttpProxyAgent = require("http-proxy-agent"), + HttpsProxyAgent= require("https-proxy-agent"); var httpsServerMgrInstance = new httpsServerMgr(), defaultRule = require("./rule_default.js"), @@ -109,9 +111,15 @@ function userRequestHandler(req,userRes){ method : req.method, headers : req.headers }; + userRule.externalHttpProxies = userRule.externalHttpProxies || []; + if(userRule.externalHttpProxies.length){ + var agent = null, externalProxy = userRule.externalHttpProxies[Math.floor(Math.random()*userRule.externalHttpProxies.length)]; + agent = new HttpProxyAgent(externalProxy); + if(agent)options.agent = agent; + console.log(color.blue('this request is using ' + externalProxy + ' as external proxy')); + } options = userRule.replaceRequestOption(req,options) || options; - //update quest data reqData = userRule.replaceRequestData(req,reqData) || reqData; options.headers = util.lower_keys(options.headers); diff --git a/package.json b/package.json index f856e55..4d969b2 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,9 @@ "stream-throttle": "^0.1.3", "ws": "^0.4.32", "cookie":"^0.1.2", - "mysql":"^2.5.2" + "mysql":"^2.5.2", + "http-proxy-agent":"^0.2.6", + "https-proxy-agent":"^0.3.5" }, "devDependencies": {}, "scripts": {