An experimental Tor-Proxy serivce written in Go using Go-proxy and Go-libtor.

Related tags

Network tor-proxy
Overview

tor-proxy

An experimental standalone tor-proxy service built with Go, using go-proxy, go-libtor and bine. This is a simple replacement to Tor's original tor-proxy. (Since this is experimental, I would still recommend to use the original Tor-proxy)

What this is for?

As you all know Tor is an anonymous network used to provide anonymous (tracking free) end-to-end network connectivity for users. In other words Tor network encrypts your IP with multiple layers such that the identity of the source cannot be determined anymore. Because of this capability of Tor, it is the de-facto network for hosting Dark-Web sites with almost 100% anonymity, clients use Tor browser to access these sites, usually those sites ending with .onion. Apart from this, Tor network can also provide anynomity while accessing normal HTTP/s sites. Using this proxy, you can:

  1. Provide a single point of contact for multiple devices in your home/office to connect to External Tor Network (like an eggress).
  2. Access Dark-Web sites without having to install Tor browser on devices (use existing browsers, with proxy config)
  3. Stay anonymous over the internet - use Tor's power across multiple devices.
  4. Deploy this service as an ingress/eggress on K8s to anynomize your microservices.
  5. Access sites that are banned in your country (I don't recommend this and might not work always)

Features:

  1. Standalone binary - does not depend on tor application to be installed locally.
  2. Dockerfiles provided to build and deploy the service in a container environment.
  3. k8s deployment file provided to deploy tor-proxy on a cloud native environment. (For larger workloads).

How to set-up and use:

1. Install Locally (Not recommended)

Local installation requires a properly configured Go environment to be working and must be supporting Go modules. Just clone this repository:

git clone [email protected]:Narasimha1997/tor-proxy.git

Then run:

cd tor-proxy
export GOBIN=$PWD   # skip this if you don't want the binary to be installed in current location
go install

If everything goes well, you should see tor-proxy binary, you can run this simply by:

./tor-proxy

Changing port: When starting up, the code looks for PROXY_PORT env variable, by default it is set to 8000, you can change the default port by running (for example):

export PROXY_PORT=8001

2a. Running the binary in container environment:

First, follow step-1. You can just place the pre-built go binary inside a container and execute it normally. Dockerfile_binary has the steps for this, just use this dockerfile to build the container image:

docker build . -f Dockerfile -t tor-proxy:latest

2b. Build and run completely in a container environment:

This is the recommended approach, the default Dockerfile has steps for this process. It basically uses a pre-packaged Golang environment and builds the code and all it's dependencies inside the container. Just run:

docker build . -t tor-proxy:latest

3. Run the container:

You can run this container just like any other normal container. (using docker for example)

docker run --rm -p 8000:8000 tor-proxy

If everything works as expected, you should be able to use 127.0.0.1:8000 as the tor proxy on local machine and your.lan.ip.xx:8000 can be used across devices connected to a common network backbone. Or some.public.ip.xx:8000 can be used worldwide, cosider deploying it on Heroku (example).

4. Configure your browser to use the proxy:

This step is easy and varies across browsers. For firefox - check-here

TODOs:

  1. Support Socks555 connections.
  2. Create a simple JavaScript sandbox that would use this proxy to avoid manual proxy configuration. (Should check how)

Acknowledgements

  1. The Tor Project
  2. go-libtor
  3. bine
  4. goproxy

How to contribute?

There are no rules, just expecting contributions in the form of code, issues, PRs. (Not money, this is just a 2 hours weekend project and is completely focused on learning.)

You might also like...
Ananas is an experimental project for kubernetes CSI (Container Storage Interface) by using azure disk. Likewise, Ananas is the name of my cute british shorthair.

ananas Ananas is an experimental project for kubernetes CSI (Container Storage Interface) by using azure disk. Likewise, Ananas is the name of my cute

Experimental system call tracer for Linux x86-64, written in Go

gtrace A system call tracer for Linux x86-64. DISCLAIMER: This software is experimental and not considered stable. Do not use it in mission-critical e

An experimental go FTP server framework

graval Go FTP server framework. By providing a simple driver class that responds to a handful of methods you can have a complete FTP server. Some samp

Hummingbard is an experimental client for building decentralized communities on top of Matrix.

Hummingbard is an experimental client for building decentralized communities on top of Matrix.

Highly experimental generator for Dragonfly

gen Highly experimental generator for Dragonfly Please note that this project is not currently actively being worked on. It may not be stable and it m

A rule-based tunnel in Go with experimental features
A rule-based tunnel in Go with experimental features

Experimental-Clash A rule-based tunnel in Go with experimental features. Features Local HTTP/HTTPS/SOCKS server with authentication support VMess, Sha

Experimental NFS(v4) server library

NFS server library Experimental NFS server library in pure go. NFSv4 implementation posix tests: access: 58/58 pass open: 19/22 pass chdir: 3/3 pass r

An experimental package that rely on go generics to implement collection functions utilities

go-underscore go-underscore is a utility-belt library for Golang that provides s

An event driven remote access trojan for experimental purposes.

erat An event driven remote access trojan for experimental purposes. This example is very simple and leverages ssh failed login events to trigger erat

Owner
Narasimha Prasanna HN
🧔Human | Indian | Programmer | Full Stack Developer | AI Engineer
Narasimha Prasanna HN
Golang Client for querying Tor network data using the Onionoo service.

gonion Lightweight Golang wrapper for querying Tor network data using the Onionoo service. package main import ( "github.com/R4yGM/gonion"

R4yan 9 May 11, 2022
Proxtor - A simple tool to connect to the network using Tor

Proxtor A simple tool to connect to the network using Tor. Installing Go to rele

null 1 Jan 1, 2022
Remake of the original sqlifinder but in GOlang, and allows for listed targets, domain crawling, and tor connections

_______ _____ _____ _______ _____ __ _ ______ _______ ______ |______ | __| | | |______ | | \ | | \ |______ |_____/

RE43P3R 2 Jan 4, 2023
A lightweight and simplistic Tor library for golang

gotor A lightweight and simplistic Tor library for golang go get github.com/ripmeep/gotor import "github.com/ripmeep/gotor" Usage t := tor.TorConnecti

ripmeep 2 Jul 2, 2022
A Tor package updater and runner as an I2P Plugin

i2p.plugins.tor-updater A Tor package updater and runner as an I2P Plugin. This plugin is still being changed rapidly but it should be usable on most

idk 4 Jul 31, 2022
oniongrok forwards ports on the local host to remote Onion addresses as Tor hidden services and vice-versa

oniongrok Onion addresses for anything. oniongrok forwards ports on the local host to remote Onion addresses as Tor hidden services and vice-versa. Wh

Casey Marshall 270 Jan 1, 2023
Tor ready router

DPI installing don't forget to replace the username with your username: mkdir build cd build wget https://openresty.org/download/openresty-1.19.9.1.ta

null 12 Feb 13, 2022
meek is a blocking-resistant pluggable transport for Tor.

meek is a blocking-resistant pluggable transport for Tor. It encodes a data stream as a sequence of HTTPS requests and responses. Requests are reflect

Clair de Lune 1 Nov 9, 2021
Vanitytorgen - Vanity Tor keys/onion addresses generator

Vanity Tor keys/onion addresses generator Assumptions You know what you are doing. You know where to copy the output files. You know how to set up a H

kexkey 2 May 12, 2022
glossy-ly experimental proxy 💄☣️🖧

eyeZ HTTP proxy experiment powered by bubbletea and httransform Features Terminal UI Database recording (similar to hyperfox) Installation TUI and pro

Sergio Rubio 2 Feb 17, 2022