Skip to content

Instantly share code, notes, and snippets.

@wfjsw
Created October 7, 2016 03:22
Show Gist options
  • Save wfjsw/5b66d83d403d5b5e6e63366eeb135ef2 to your computer and use it in GitHub Desktop.
Save wfjsw/5b66d83d403d5b5e6e63366eeb135ef2 to your computer and use it in GitHub Desktop.
Simple Forward Proxy for BitTorrent Tracker.
'use strict';
const http = require('http');
const qs = require('querystring')
const url = require('url');
const util = require('util')
const request = require('request')
var ip;
// Server
var server = http.createServer((req, resp) => {
if (req.method == 'GET') {
var rurl = url.parse(req.url);
var target = `http://${rurl.pathname.substring(1)}`;
var qs = `${rurl.query}&ip=${ip}`;
console.log(`${target}?${qs}`);
request({
url: `${target}?${qs}`,
headers: {
'X-Forwarded-For': ip
},
proxy: 'http://192.168.2.3:8118',
tunnel: true
}, (err, rresp, body) => {
if (!err) {
resp.writeHead(resp.statusCode, resp.headers);
resp.end(body);
} else {
resp.writeHead(504);
resp.end();
}
})
} else {
resp.writeHead(405);
resp.end();
}
})
// Get My IP
request({
url: "http://ip.cn",
headers: {
'User-Agent': 'curl/7.38.0'
}
}, (err, resp, body) => {
if (!err && resp.statusCode == 200){
ip = /(\d+\.\d+\.\d+\.\d+)/.exec(body)[1];
console.log(ip);
server.listen(8200)
}
else throw err;
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment