A paywall bypassing reverse proxy and DNS server written in go 🔨💵🧱

FreeNews 🔨 💵 🧱

A paywall bypassing reverse proxy and DNS server written in go.

This project is still hard work in progress. Expect stuff to just not work. Setup requires some linux and network knowledge.

Why ?

The goal of this project is to provide a unpaywalling solution that works on platforms where modifying your browsers content is not possible. Basilcy this is something like Hover, but as a reverse proxy (+DNS for better usability). This makes usage on mobile devices really enjoyable. It can be used on all devices where the user is able to change the DNS and install a self signed CA.

How does it work ?

The approch this application follows can be split into two different parts:

Reverse Proxy: We utilize a simple reverse proxy that listens on any domain and just forwards request to the host at which the original domain points. While doing so the proxy injects a bunch of different bypass techniques into your requests. This basicly allows us to duplicate websites to a server that we own and modify them.

DNS Server: By providing a selfhosted nameserver and a self singed CA we are able to actually "steal" the original domains (at least while you are using that DNS server). The nameserver just mirrors 1.1.1.1 (cloudflare dns server), but overrides all requests that go to a list of customizable sites to be redirect to our reverse proxy host (basilcy saying replaces the original website with the unpaywalled one).

How to install ?

Requirements:

  • Go 1.18+
  • Currently only Linux is tested (Windows, MacOS, etc... should work)
  • Host should have port 53/udp, 80,443,853/tcp open (dns ports can be changed)
  • If port 53 is blocked try to disable your local dns server ex: systemctl stop systemd-resolved
  1. git clone https://github.com/fipso/freenews.git
  2. cd freenews
  3. go build . && chmod +x freenews
  4. sudo ./freenews
  5. on you phone set your dns server to your public host ip
  6. go to free.news
  7. download and install ca file (apps not wifi)

How do i change the DNS on mobile ?

Android: Use one of the follwing:

  • Recommended: Use private dns option (requires DoT)
  • Wifi Settigns > Use static IP > DNS 1
  • Use a 3rd party app to use DNS or DoT

IOS:

  • Recommended: Generate a DNS profile (requires DoT)

How to use DNS over TLS ?

DNS over TLS (DoT) is a new privacy focused way to use normal dns using a tls socket. To make this work with this project, you have to get yourself a domain and tls cert. Place the cert (Copy fullchain.pem instead of cert.pem to dot_cert.pem if you are using Let's Encrypt) file and its private key at cert/dot_cert.pem and cert/dot_key.pem. Start freenews with the -dotDomain <your domain> flag to enable DoT. Make sure to open port 853/tcp.

How to add hosts to the unpaywall list ?

You can add new hosts to the list by appending a [[host]] block to the config.toml file.

TODO

  • Fix DNS over TLS
  • Allow tcp connections
  • Improve code quality and comments
  • Provide better usage instructions
  • More config options
  • Make flags overridable by toml config
Owner
fipso
Semi-professional software engineer and hacker. Fullstack Webdev, Blockchain, Golang, NodeJS :hearth:
fipso
Similar Resources

The Dual-Stack Dynamic DNS client, the world's first dynamic DNS client built for IPv6.

dsddns DsDDNS is the Dual-Stack Dynamic DNS client. A dynamic DNS client keeps your DNS records in sync with the IP addresses associated with your hom

Sep 27, 2022

netcup DNS module for caddy: dns.providers.netcup

netcup DNS module for Caddy This package contains a DNS provider module for Caddy. It can be used to manage DNS records with the netcup DNS API using

Nov 9, 2022

A fork on miekg/dns (since I've already forked zmap/dns)

Alternative (more granular) approach to a DNS library Less is more. Complete and usable DNS library. All Resource Records are supported, including the

Jan 19, 2022

A simple DNS forwarder that forwards DNS queries to various upstreams

A simple DNS forwarder that forwards DNS queries to various upstreams. If an upstream returns NXDomain, the next upstream is tried.

Jul 8, 2022

Open Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator

Open Source HTTP Reverse Proxy Cache and Time Series Dashboard Accelerator

Trickster is an HTTP reverse proxy/cache for http applications and a dashboard query accelerator for time series databases. Learn more below, and chec

Jan 2, 2023

gobetween - modern & minimalistic load balancer and reverse-proxy for the ☁️ Cloud era.

gobetween - modern & minimalistic load balancer and reverse-proxy for the ☁️ Cloud era.

gobetween - modern & minimalistic load balancer and reverse-proxy for the ☁️ Cloud era. Current status: Maintenance mode, accepting PRs. Currently in

Dec 25, 2022

TProx is a fast reverse proxy path traversal detector and directory bruteforcer.

TProx is a fast reverse proxy path traversal detector and directory bruteforcer.

TProx is a fast reverse proxy path traversal detector and directory bruteforcer Install • Usage • Examples • Join Discord Install Options From Source

Nov 9, 2022

Goproxy - HTTP/HTTPS Forward and Reverse Proxy

Go HTTP(s) Forward/Reverse Proxy This is intended to provide the proxy for the goproxy frontend. It is currently a work in progress, and is not very s

Jan 4, 2022

Websockify-go - A reverse proxy that support tcp, http, https, and the most important, noVNC, which makes it a websockify

websockify-go | mproxy a reverse proxy that support tcp, http, https, and the mo

Aug 14, 2022
Hetzner-dns-updater - A simple tool to update a DNS record via Hetzner DNS API. Used for simple HA together with Nomad

hetzner-dns-updater A small utility tool to update a single record via Hetzner D

Feb 12, 2022
Tcp-proxy - A dead simple reverse proxy server.

tcp-proxy A proxy that forwords from a host to another. Building go build -ldflags="-X 'main.Version=$(git describe --tags $(git rev-list --tags --max

Jan 2, 2022
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

Nov 17, 2022
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

frp README | 中文文档 What is frp? frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. As of now, it s

Jan 5, 2023
Simple edge server / reverse proxy

reproxy Reproxy is simple edge HTTP(s) sever / reverse proxy supporting various providers (docker, static, file). One or more providers supply informa

Dec 29, 2022
4chain is a simple、fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet.

4Chain What is 4chain? 4chain is a simple、fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. Using the ssh

Nov 1, 2022
Reverse proxy server to filter traffic based on JA3 fingerprint/hash

JA3RP (JA3 Reverse Proxy) Ja3RP is a basic reverse proxy server that filters traffic based on JA3 fingerprints. It can also operate as a regular HTTP

Sep 17, 2022
A standalone Web Server developed with the standard http library, suport reverse proxy & flexible configuration
A standalone Web Server developed with the standard http library, suport reverse proxy & flexible configuration

paddy 简介 paddy是一款单进程的独立运行的web server,基于golang的标准库net/http实现。 paddy提供以下功能: 直接配置http响应 目录文件服务器 proxy_pass代理 http反向代理 支持请求和响应插件 部署 编译 $ go build ./main/p

Oct 18, 2022
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

Nov 27, 2021
DNS Ping: to check packet loss and latency issues with DNS servers

DNSping DNS Ping checks packet loss and latency issues with DNS servers Installation If you have golang, easiest install is go get -u fortio.org/dnspi

Nov 18, 2022