{"id":13813542,"url":"https://github.com/fipso/freenews","last_synced_at":"2025-10-09T08:57:22.985Z","repository":{"id":123835669,"uuid":"482006055","full_name":"fipso/freenews","owner":"fipso","description":"Reverse Proxy \u0026 DNS based solution to bypass paywalls 🔨💵🧱","archived":false,"fork":false,"pushed_at":"2024-03-30T17:33:40.000Z","size":5724,"stargazers_count":85,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-15T00:39:21.534Z","etag":null,"topics":["dns","golang","news","paywall","paywall-bypasser","reverse-proxy"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fipso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-15T15:43:02.000Z","updated_at":"2025-04-29T21:52:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"b5f86b74-52b9-4a19-a5ad-fcc4b4f86d6f","html_url":"https://github.com/fipso/freenews","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fipso/freenews","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fipso%2Ffreenews","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fipso%2Ffreenews/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fipso%2Ffreenews/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fipso%2Ffreenews/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fipso","download_url":"https://codeload.github.com/fipso/freenews/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fipso%2Ffreenews/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001049,"owners_count":26082993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dns","golang","news","paywall","paywall-bypasser","reverse-proxy"],"created_at":"2024-08-04T04:01:20.926Z","updated_at":"2025-10-09T08:57:22.979Z","avatar_url":"https://github.com/fipso.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# FreeNews 🔨💵🧱\n\n![build status](https://github.com/fipso/freenews/actions/workflows/go.yml/badge.svg?branch=main)\n\nReverse Proxy \u0026 DNS based solution to bypass paywalls written in go\n\n### Features\n\n- Pull from Google Cache Bypass (shoutout to 12ft.io)\n- HTTP Header based bypasses\n    - AdsBot-Google User Agent\n    - X-Forwarded-For Google Datacenter IP\n    - Twitter t.co Referer\n    - Drop Cookie \u0026 Set-Cookie\n- HTTP Body patches\n    - Disable JS. Removes \u003cscript\u003e tags\n    - Inject custom html/js\n- DNS/Hosts based AdBlock\n- DNS server supports UDP \u0026 TLS (DoT)\n\n### Usage\n\n1. Tell your devices to use your own DNS server\n2. Go to `free.news`\n3. Download and install CA file (apps not Wi-Fi)\n4. Profit\n\n### How?\n- ./freenews spawns a DNS and a HTTP server (and TLS versions of it ofc)\n- You install a custom CA on your device\n- Your device sends DNS querys to your own DNS. If the site is on your bypass whitelist the server will respond with its own public IP, otherwise it will forward to an upstream DNS like 1.1.1.1\n- Your phone then connects to the HTTP reverse proxy mirror that you own\n- Freenews HTTP server returns the unpaywalled version\n\n### How to install ?\n\n- Host should have port 53/UDP, 80,443,853/UDP open (DNS ports can be changed)\n- If port 53 is blocked try to disable your local DNS server ex: `systemctl stop systemd-resolved`\n\n### Docker\n\nRequirements:\n\n- Docker \u0026 docker-compose\n\n1. `mkdir freenews \u0026\u0026 cd freenews`\n2. Get our docker-compose  \n   `curl -O https://raw.githubusercontent.com/fipso/freenews/main/docker-compose.yml`\n3. Run it `sudo docker-compose up -d`\n  \n-  Check logs `sudo docker-compose logs --follow`\n-  Update `sudo docker-compose pull \u0026\u0026 sudo docker-compose up -d`\n-  Add hosts: edit config.toml and `sudo docker-compose restart`\n\n### Build it yourself\n\nRequirements:\n\n- Go 1.18+\n- Currently only Linux is tested (Windows, macOS, etc... should work)\n\n1. `git clone https://github.com/fipso/freenews.git`\n2. `cd freenews`\n3. `go build . \u0026\u0026 chmod +x freenews`\n4. `sudo setcap CAP_NET_BIND_SERVICE=+eip freenews` (Optional. Allows binding low ports as normal user.)\n5. `./freenews`\n\n**Auto Start (systemd)**:  \nIf you choose docker you obviously dont need this.  \nCreate `freenews.service` at `/lib/systemd/system/`.  \nExample Service:  \n```systemd\n[Unit]\nDescription=FreeNews DNS \u0026 Reverse Proxy\n\n[Service]\nUser=\u003csome non root user\u003e\nWorkingDirectory=/home/\u003cuser\u003e/...\nExecStart=/home/\u003cuser\u003e/.../freenews\n# DoT \u0026 AdBlock example:\n#ExecStart=/home/\u003cuser\u003e/.../freenews -dotDomain \u003cyour domain\u003e -blockList \u003cblocklist file\u003e\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n```\n\n### How to use DNS over TLS ?\n\nDNS over TLS (DoT) is a new privacy focused way to use normal DNS using a TLS socket.\nTo make this work with this project, you have to get yourself a domain and SSL cert.\nPlace 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`.\nStart freenews with the `-dotDomain \u003cyour domain\u003e` flag to enable DoT. Make sure to open port 853/UDP.\n\n### How do I change the DNS on mobile ?\n\nAndroid:\nUse **one** of the following:\n\n- Recommended: Use private DNS option (requires DoT)\n- Wi-Fi Settings \u003e Use static IP \u003e DNS 1\n- Use a 3rd party app to use DNS or DoT\n\nIOS:\n\n- Recommended: Generate a DNS [profile](https://dns.notjakob.com/index.html) (requires DoT)\n\n### How to add hosts to the unpaywall list ?\n\nYou can add new hosts to the list by appending a `[[host]]` block to the `config.toml` file.\n\n### How do I enable AdBlock ?\n\n1. Download a DNS blocklist  \n   ex: `curl -O https://raw.githubusercontent.com/hagezi/dns-blocklists/main/domains/light.txt`\n2. Start with `-blockList` param  \n   ex: `./freenews -blockList light.txt`\n\nWe currently redirect all blocked domains to 127.0.0.1\n\n### TODO\n\n- [x] Fix DNS over TLS\n- [x] Add docker image \u0026 instructions\n- [x] Add DNS based AdBlock\n- [x] Add non root running instructions\n- [ ] Allow TCP connections\n- [ ] Improve code quality and comments\n- [ ] Provide better usage instructions\n- [ ] More config options\n- [ ] Make flags overridable by TOML config\n\n### Credits\n\n- https://github.com/drk1wi/Modlishka Request body compression\n\n### Star History\n[![Star History Chart](https://api.star-history.com/svg?repos=fipso/freenews\u0026type=Date)](https://star-history.com/#fipso/freenews\u0026Date)\n\n### Advertisment\nIn case your are looking for a ETH Node provider where you can deploy your Containers directly onto a Node [checkout BLAZED.sh](https://blazed.sh)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffipso%2Ffreenews","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffipso%2Ffreenews","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffipso%2Ffreenews/lists"}