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.)

Owner
Narasimha Prasanna HN
🧔Human | Indian | Programmer | Full Stack Developer | AI Engineer
Narasimha Prasanna HN
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 1 Nov 15, 2021
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 11 Nov 21, 2021
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
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 0 Dec 5, 2021
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

null 7 Aug 4, 2021
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

Agis Anastasopoulos 72 Jul 26, 2021
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

Koofr 27 Jul 18, 2021
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.

null 77 Nov 10, 2021
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

Dragonfly 1 Nov 7, 2021
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

Clash .NET 10 Dec 6, 2021
mt-multiserver-proxy is a reverse proxy designed for linking multiple Minetest servers together

mt-multiserver-proxy mt-multiserver-proxy is a reverse proxy designed for linking multiple Minetest servers together. It is the successor to multiserv

null 7 Nov 27, 2021
A simple tool to convert socket5 proxy protocol to http proxy protocol

Socket5 to HTTP 这是一个超简单的 Socket5 代理转换成 HTTP 代理的小工具。 如何安装? Golang 用户 # Required Go 1.17+ go install github.com/mritd/[email protected] Docker 用户 docker pull m

mritd 3 Nov 2, 2021
HTTP proxy written in Go. COW can automatically identify blocked sites and use parent proxies to access.

COW (Climb Over the Wall) proxy COW 是一个简化穿墙的 HTTP 代理服务器。它能自动检测被墙网站,仅对这些网站使用二级代理。 English README. 当前版本:0.9.8 CHANGELOG 欢迎在 develop branch 进行开发并发送 pull

Chen Yufei 8.2k Nov 23, 2021
A deployable proxy server and tunnel written in go

Tunnelify Tunnelify is a deployable proxy server and tunnel written in go Installing | Quickstart | Configuration Installing Direct download You can i

Kofo Okesola 27 Sep 23, 2021
Multi-threaded socks proxy checker written in Go!

Soxy - a very fast tool for checking open SOCKS proxies in Golang I was looking for some open socks proxies, and so I needed to test them - but really

pry0cc 35 Oct 4, 2021
A small TCP proxy written in Go

tcp-proxy A small TCP proxy written in Go This project was intended for debugging text-based protocols. The next version will address binary protocols

Jaime Pillora 569 Dec 3, 2021
A Reverse proxy written in Go

Myopia Short-sightedness where items in near eyesight are sharp but things in the background are not Configuration It's a yaml file. Here is an exampl

Xantios Krugor 0 Nov 27, 2021
sonarbyte is a simple and fast subdomain scanner written in go to extract subdomain from Rapid7's DNS Database using omnisint's api.

sonarbyte Description Sonarbyte is a simple and fast subdomain scanner written in go to extract subdomains from Rapid7's DNS Database using omnisint's

Chan Nyein Wai 19 Nov 30, 2021