Skip to content

Instantly share code, notes, and snippets.

@UlisesGascon
Last active August 13, 2019 17:55
Show Gist options
  • Save UlisesGascon/daad3eeaedaee91ba3878eb8e0dc4b77 to your computer and use it in GitHub Desktop.
Save UlisesGascon/daad3eeaedaee91ba3878eb8e0dc4b77 to your computer and use it in GitHub Desktop.
Montar un proxy de internet a Tor con Nodejs

Montar un proxy de internet a Tor con Nodejs

Importante

Necesitamos tener previamente corriendo Tor en la maquina:

Pasos

  1. Instalamos Nodejs en el server remoto
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
apt-get install -y nodejs
  1. Creamos un proyecto de Nodejs npm init
  2. Añadimos la librerías npm install -S request tor-request express
  3. Creamos server.js
  4. Lanzamos el Servidor y probamos:
  • /proxy?url=https://ipinfo.io/ip
  • /proxy?url=https://check.torproject.org
  • /tor-proxy?url=https://ipinfo.io/ip
  • /tor-proxy?url=https://check.torproject.org
const express = require('express');
const request = require('request');
const tr = require('tor-request');
const app = express();
const path = require('path');
app.use(express.static('public'));
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname + '/public/index.html'));
});
app.get('/tor-proxy', (req, res) => {
const url = req.query.url
if (!url) return res.status(404).send()
tr.request(url, (err, response, body) => {
if (!err && response.statusCode == 200) {
res.send(body);
}
res.status(404).send()
});
})
app.get('/proxy', function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
request({
url: req.query.url,
method: "GET"
}).pipe(res)
});
app.listen(process.env.PORT || 3000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment