Important
This is an unofficial fork of a project originally developed by Vladislav Yarmak (@Snawoot). The repository was reconstructed from publicly available sources.
It is not affiliated with, endorsed by, or maintained by the original author.
Standalone Hola proxy client. Just run it and it'll start a plain HTTP proxy server forwarding traffic through Hola proxies of your choice. By default the application listens on 127.0.0.1:8080.
Application is capable to forward traffic via proxies in datacenters (flag -proxy-type direct, default) or via peer proxies on residental IPs (consumer ISP) in that country (flag -proxy-type lum).
This alternative implementation ensures your internet connection is not shared with anyone else and everything is clean and safe.
- Cross-platform (Windows/Mac OS/Linux/Android (via shell)/*BSD)
- Uses TLS for secure communication with upstream proxies
- Zero configuration
- Simple and straight forward
Pre-built binaries are available here.
Don't forget to make file executable on Unix-like systems (Linux, MacOS, *BSD, Android). For your convenience rename downloaded file to hola-proxy and run within directory where you placed it:
chmod +x hola-proxyAlternatively, you may install hola-proxy from source. Run the following within the source directory:
make install
Build the image locally:
docker build -t hola-proxy .Run with a specific country (proxy listens on port 8080 inside the container):
docker run -d --name hola-proxy -p 8080:8080 hola-proxy -country deResidential IP instead of datacenter:
docker run -d --name hola-proxy -p 8080:8080 hola-proxy -proxy-type lum -country usConnect from the host machine — set HTTP_PROXY / HTTPS_PROXY or pass -x to curl:
export HTTP_PROXY=http://127.0.0.1:8080
export HTTPS_PROXY=http://127.0.0.1:8080
curl -x http://127.0.0.1:8080 https://ifconfig.meConnect from another Docker container — put both containers on the same network and use the service name as proxy host:
docker network create proxy-net
docker run -d --name hola-proxy --network proxy-net hola-proxy -country de
docker run --rm --network proxy-net curlimages/curl \
curl -x http://hola-proxy:8080 https://ifconfig.medocker-compose example:
services:
hola-proxy:
image: hola-proxy:latest
build: .
command: ["-country", "de"]
ports:
- "8080:8080"
app:
image: curlimages/curl
network_mode: service:hola-proxy
command: curl -x http://127.0.0.1:8080 https://ifconfig.meConnect from another machine — publish port -p 8080:8080 and point clients to http://<host-ip>:8080. On a remote server, restrict access with a firewall or bind to localhost and use SSH tunneling:
ssh -L 8080:127.0.0.1:8080 user@remote-serverPre-built images are published to Docker Hub on git tag push (v*.*.*) as <dockerhub-username>/hola-proxy.
List available countries:
$ ./hola-proxy -list-countries
ar - Argentina
at - Austria
au - Australia
be - Belgium
bg - Bulgaria
br - Brazil
ca - Canada
ch - Switzerland
cl - Chile
co - Colombia
cz - Czech Republic
de - Germany
dk - Denmark
es - Spain
fi - Finland
fr - France
gb - United Kingdom (Great Britain)
gr - Greece
hk - Hong Kong
hr - Croatia
hu - Hungary
id - Indonesia
ie - Ireland
il - Israel
in - India
is - Iceland
it - Italy
jp - Japan
kr - Korea, Republic of
mx - Mexico
nl - Netherlands
no - Norway
nz - New Zealand
pl - Poland
ro - Romania
ru - Russian Federation
se - Sweden
sg - Singapore
sk - Slovakia
tr - Turkey
uk - United Kingdom
us - United States of America
Run proxy via country of your choice:
$ ./hola-proxy -country de
Or run proxy on residential IP:
$ ./hola-proxy -proxy-type lum
Also it is possible to export proxy addresses and credentials:
$ ./hola-proxy -country de -list-proxies -limit 3
Login: user-uuid-0a67c797b3214cbdb432b089c4b801cd
Password: cd123c465901
Proxy-Authorization: basic dXNlci11dWlkLTBhNjdjNzk3YjMyMTRjYmRiNDMyYjA4OWM0YjgwMWNkOmNkMTIzYzQ2NTkwMQ==
host,ip_address,direct,peer,hola,trial,trial_peer,vendor
zagent783.hola.org,165.22.22.6,22222,22223,22224,22225,22226,digitalocean
zagent830.hola.org,104.248.24.64,22222,22223,22224,22225,22226,digitalocean
zagent248.hola.org,165.22.65.3,22222,22223,22224,22225,22226,digitalocean
| Argument | Type | Description |
|---|---|---|
| backoff-deadline | Duration | total duration of zgettunnels method attempts (default 5m0s) |
| backoff-initial | Duration | initial average backoff delay for zgettunnels (randomized by +/-50%) (default 3s) |
| bind-address | String | HTTP proxy address to listen to (default "127.0.0.1:8080") |
| cafile | String | use custom CA certificate bundle file |
| country | String | desired proxy location (default "us") |
| dont-use-trial | - | use regular ports instead of trial ports |
| ext-ver | String | extension version to mimic in requests. Can be obtained from https://chrome.google.com/webstore/detail/hola-vpn-the-website-unbl/gkojfkhlekighikafcpjkiklfbnlmeio (default "999.999.999") |
| force-port-field | Number | force specific port field/num (example 24232 or lum) |
| hide-SNI | Boolean | hide SNI in TLS sessions with proxy server (default true) |
| init-retries | Number | number of attempts for initialization steps, zero for unlimited retry |
| init-retry-interval | Duration | delay between initialization retries (default 5s) |
| limit | Unsigned Integer (Number) | amount of proxies in retrieved list (default 3) |
| list-countries | String | list available countries and exit |
| list-proxies | - | output proxy list and exit |
| proxy | String | sets base proxy to use for all dial-outs. Format: <http|https|socks5|socks5h>://[login:password@]host[:port] Examples: http://user:password@192.168.1.1:3128, socks5://10.0.0.1:1080 |
| proxy-type | String | proxy type (Datacenter: direct) (Residential: lum) (default "direct") |
| resolver | String | comma-separated list of DNS/DoH/DoT resolvers used to lookup domain names blocked by Hola. Supported schemes are: dns://, https://, tls://, tcp://. (default https://1.1.1.3/dns-query,https://8.8.8.8/dns-query,https://dns.google/dns-query,https://security.cloudflare-dns.com/dns-query,https://fidelity.vm-0.com/q,https://wikimedia-dns.org/dns-query,https://dns.adguard-dns.com/dns-query,https://dns.quad9.net/dns-query,https://doh.cleanbrowsing.org/doh/adult-filter/) |
| rotate | Duration | rotate user ID once per given period (default 48h0m0s) |
| timeout | Duration | timeout for network operations (default 35s) |
| user-agent | String | value of User-Agent header in requests. Default: User-Agent of latest stable Chrome for Windows |
| verbosity | Number | logging verbosity (10 - debug, 20 - info, 30 - warning, 40 - error, 50 - critical) (default 20) |