{"id":13825871,"url":"https://github.com/sadeghhayeri/greentunnel","last_synced_at":"2026-03-03T07:08:19.937Z","repository":{"id":34404106,"uuid":"175773665","full_name":"SadeghHayeri/GreenTunnel","owner":"SadeghHayeri","description":"GreenTunnel is an anti-censorship utility designed to bypass the DPI system that is put in place by various ISPs to block access to certain websites.","archived":false,"fork":false,"pushed_at":"2024-10-29T03:54:00.000Z","size":3269,"stargazers_count":4528,"open_issues_count":111,"forks_count":287,"subscribers_count":73,"default_branch":"master","last_synced_at":"2025-04-23T17:50:37.048Z","etag":null,"topics":["deep-packet-inspection","dpi","filtering","firewall-bypass","isp","proxy","sni","socks","vpn"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SadeghHayeri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"custom":"https://github.com/SadeghHayeri/GreenTunnel#donation"}},"created_at":"2019-03-15T07:51:30.000Z","updated_at":"2025-04-21T17:12:38.000Z","dependencies_parsed_at":"2024-11-19T06:05:45.826Z","dependency_job_id":null,"html_url":"https://github.com/SadeghHayeri/GreenTunnel","commit_stats":{"total_commits":216,"total_committers":15,"mean_commits":14.4,"dds":0.375,"last_synced_commit":"4aec85bab172c40de1227c8aa7fbff24fbcdce6c"},"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SadeghHayeri%2FGreenTunnel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SadeghHayeri%2FGreenTunnel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SadeghHayeri%2FGreenTunnel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SadeghHayeri%2FGreenTunnel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SadeghHayeri","download_url":"https://codeload.github.com/SadeghHayeri/GreenTunnel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253766843,"owners_count":21961004,"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","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":["deep-packet-inspection","dpi","filtering","firewall-bypass","isp","proxy","sni","socks","vpn"],"created_at":"2024-08-04T09:01:28.349Z","updated_at":"2026-03-03T07:08:19.906Z","avatar_url":"https://github.com/SadeghHayeri.png","language":"JavaScript","funding_links":["https://github.com/SadeghHayeri/GreenTunnel#donation","https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=HJ5TBXVYTHS7N\u0026currency_code=USD\u0026source=url"],"categories":["\u003ca id=\"01e6651181d405ecdcd92a452989e7e0\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"9d6789f22a280f5bb6491d1353b02384\"\u003e\u003c/a\u003e隧道\u0026\u0026穿透"],"readme":"# Green Tunnel\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"assets/logo.png\" alt=\"green tunnel logo\" width=\"200\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/SadeghHayeri/GreenTunnel.svg?color=Green\u0026style=for-the-badge\"\u003e \u003cimg src=\"https://img.shields.io/github/repo-size/SadeghHayeri/GreenTunnel.svg?color=Green\u0026style=for-the-badge\"\u003e \u003cimg src=\"https://img.shields.io/discord/707464295021019197?color=Green\u0026style=for-the-badge\"\u003e\n\u003c/p\u003e\n\nGreenTunnel bypasses DPI (Deep Packet Inspection) systems found in many ISPs (Internet Service Providers) which block access to certain websites.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"assets/demo.gif\" alt=\"green tunnel demo\" style=\"margin-top: 20px;\"\u003e\n\u003c/p\u003e\n\n## How to use\n### Graphical user interface (GUI)\nYou can simply choose the suitable installation for your OS in the [releases](https://github.com/SadeghHayeri/GreenTunnel/releases \"releases\") section.\n\n### Command-line interface (CLI)\nYou can install GreenTunnel using [npm](https://www.npmjs.org/ \"npm\"):\n```\n$ npm i -g green-tunnel\n```\n\nor using [snap](https://snapcraft.io) (edge version):\n```\nsudo snap install --edge green-tunnel --devmode\n```\n\n\nafter installation you can run it using `gt` or `green-tunnel` commands.\n\n```\n$ gt --help\nUsage: green-tunnel [options]\nUsage: gt [options]\n\nOptions:\n  --help, -h      Show help                                            [boolean]\n  --version, -V   Show version number                                  [boolean]\n  --ip            ip address to bind proxy server[string] [default: \"127.0.0.1\"]\n  --https-only    Block insecure HTTP requests        [boolean] [default: false]\n  --port          port address to bind proxy server     [number] [default: 8000]\n  --dns-type               [string] [choices: \"https\", \"tls\"] [default: \"https\"]\n  --dns-server        [string] [default: \"https://cloudflare-dns.com/dns-query\"]\n  --dns-ip        IP address for unencrypted DNS  [string][default: \"127.0.0.1\"]\n  --dns-port      Port for unencrypted DNS                [number] [default: 53]\n  --silent, -s    run in silent mode                  [boolean] [default: false]\n  --verbose, -v   debug mode                              [string] [default: \"\"]\n  --system-proxy  automatic set system-proxy           [boolean] [default: true]\n\nExamples:\n  gt\n  gt --ip 127.0.0.1 --port 8000 --https-only\n  gt --dns-server https://doh.securedns.eu/dns-query\n  gt --verbose 'green-tunnel:proxy*'\n\nISSUES:  https://github.com/SadeghHayeri/GreenTunnel/issues\n```\n\nfor debug use verbose option:\n```\n$ green-tunnel --verbose 'green-tunnel:*'\n```\n\n### Docker\n```\n$ docker run -p 8000:8000 sadeghhayeri/green-tunnel\n```\n\u003e **envs**\n* PORT\n* HTTPS-ONLY\n* VERBOSE\n* SILENT\n* DNS_TYPE\n* DNS_SERVER\n\nusage:\n```\n$ docker run -e 'PORT=1000' -p 8000:1000 sadeghhayeri/green-tunnel\n```\n\n#### On Raspberry Pi\n```\n$ docker run -p 8000:8000 sadeghhayeri/green-tunnel:arm\n```\n\nIf you want to make container keep running when reboot:\n```\n$ docker run -d --restart unless-stopped -p 8000:8000 sadeghhayeri/green-tunnel:arm\n```\n\nPlease make sure port `8000` is not blocked on Raspberry Pi firewall. (`sudo ufw allow 8000 comment Green-Tunnel`)\n\nTo use it on your other device, set http proxy to ```\u003cRaspberry Pi IP Address\u003e:\u003cPORT\u003e```. (PORT = `8000`)\n\n### Tested on\n- MacOS Catalina with node 12\n- Ubuntu 18.04 with node 8\n- Windows 10 with node 8\n\n\n## FAQ\n\u003e **How does it work?**\n###### HTTP\nThere are gaps in providers in DPI.  They happen from what the DPI rules write for ordinary user programs, omitting all possible cases that are permissible by standards.  This is done for simplicity and speed.\nSome DPIs cannot recognize the HTTP request if it is divided into TCP segments.  For example, a request of the form\n\n```\nGET / HTTP/1.0`\nHost: www.youtube.com\n...\n```\nwe send it in 2 parts: first comes `GET / HTTP/1.0 \\n Host: www.you` and second sends as `tube.com \\n ...`. In this example, ISP cannot find blocked word **youtube** in packets and you can bypass it!\n\n###### HTTPS\nServer Name Indication (SNI) is an extension to TLS (Transport Layer Security) that indicates the actual destination hostname a client is attempting to access over HTTPS. For this Web Filter feature, SNI hostname information is used for blocking access to specific sites over HTTPS. For example, if the administrator chooses to block the hostname **youtube** using this feature, all Website access attempts over HTTPS that contain **youtube** like **www.youtube.com** in the SNI would be blocked. However, access to the same hostname over HTTP would not be blocked by this feature. GreenTunnel tries to split first **CLIENT-HELLO** packet into small chunks and ISPs can't parse packet and found SNI field so bypass traffic!\n\n###### DNS\nWhen you enter a URL in a Web browser, the first thing the Web browser does is to ask a DNS (Domain Name System) server, at a known numeric address, to look up the domain name referenced in the URL and supply the corresponding IP address.\nIf the DNS server is configured to block access, it consults a blacklist of banned domain names. When a browser requests the IP address for one of these domain names, the DNS server gives a wrong answer or no answer at all.\nGreenTunnel use [DNS over HTTPS](https://en.wikipedia.org/wiki/DNS_over_HTTPS \"doh (DNS over HTTPS)\") and [DNS over TLS](https://en.wikipedia.org/wiki/DNS_over_TLS \"DNS over TLS\") to get real IP address and bypass DNS Spoofing.\n\n## Development notes\nGreenTunnel is an open-source app and I really appreciate other developers adding new features and/or helping fix bugs. If you want to contribute to GreenTunnel, you can fork this repository, make the changes and create a pull request.\n\nHowever, please make sure you follow a few rules listed below to ensure that your changes get merged into the main repo. The rules listed below are enforced to make sure the changes made are well-documented and can be easily kept track of.\n\n- ⇄ Pull requests and ★ Stars are always welcome.\n- For bugs and feature requests, please create an issue.\n- Make sure your pull request has an informative title. You should use prefixes like `ADD:`, `FIX:`, etc at the start of the title which describes the changes followed by a one-line description of the changes. Example: ADD: Added a new feature to GreenTunnel\n- Commits in your fork should be informative, as well. Make sure you don't combine too many changes into a single commit.\n\n## TODO List\n- [X] enable/disable proxy on windows\n- [ ] HTTPHandler\n- [X] add CLI arguments\n- [X] catch all exceptions\n- [ ] add preferences menu\n- [ ] fix close button\n\n## Donation\n\u003e Love GreenTunnel? Please consider donating to sustain our activities.\n\n**DOGECOIN!:** DTGjx8KKDCUkSEbtVHgQx1GYEnNaVVuXLa\u003cbr /\u003e\n**BITCOIN:** bc1qknjsmsa98lljwxjwl4pmjh48s8su8r8ajkqd8w\u003cbr /\u003e\n**ETHEREUM:** 0x018fbf3fAC7165b2c85f856cC90E2d9410415150\u003cbr /\u003e\n**LITECOIN:** ltc1q5tfprazpkzjvzf5shgprkpkhnnku3p72feutxt\u003cbr /\u003e\n**RIPPLE/XRP:** rt6ZTkKdBVYzBee9CpQsDTsewnTbAoV13\u003cbr /\u003e\n\n[![](https://img.shields.io/badge/Buy%20me%20a%20coffee-IRR%20|%20PayPing-Red.svg?style=for-the-badge\u0026logo=ko-fi)](https://payping.ir/d/TXTS)\n\u003cbr /\u003e\n[![](https://img.shields.io/badge/Buy%20me%20a%20coffee-USD%20|%20PayPal-Red.svg?style=for-the-badge\u0026logo=ko-fi)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=HJ5TBXVYTHS7N\u0026currency_code=USD\u0026source=url)\n\u003cbr /\u003e\n[![Donate with Bitcoin](https://en.cryptobadges.io/badge/big/3C5sj5BJ3n5gYJR27uxowdsgGCq2vjdhn5?showBalance=true)](https://en.cryptobadges.io/donate/bc1qknjsmsa98lljwxjwl4pmjh48s8su8r8ajkqd8w)\n[![Donate with Ethereum](https://en.cryptobadges.io/badge/big/0x018fbf3fAC7165b2c85f856cC90E2d9410415150?showBalance=true)](https://en.cryptobadges.io/donate/0x018fbf3fAC7165b2c85f856cC90E2d9410415150)\n[![Donate with Ripple](https://en.cryptobadges.io/badge/big/rt6ZTkKdBVYzBee9CpQsDTsewnTbAoV13?showBalance=true)](https://en.cryptobadges.io/donate/rt6ZTkKdBVYzBee9CpQsDTsewnTbAoV13)\n\n## License\nLicensed under the MIT license. See [LICENSE](https://github.com/SadeghHayeri/GreenTunnel/blob/master/LICENSE \"LICENSE\").\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsadeghhayeri%2Fgreentunnel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsadeghhayeri%2Fgreentunnel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsadeghhayeri%2Fgreentunnel/lists"}