Skip to content
 
 

Repository files navigation

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.

hola-proxy

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.

Features

  • Cross-platform (Windows/Mac OS/Linux/Android (via shell)/*BSD)
  • Uses TLS for secure communication with upstream proxies
  • Zero configuration
  • Simple and straight forward

Installation

Binaries

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-proxy

Build from source

Alternatively, you may install hola-proxy from source. Run the following within the source directory:

make install

Docker

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 de

Residential IP instead of datacenter:

docker run -d --name hola-proxy -p 8080:8080 hola-proxy -proxy-type lum -country us

Connect 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.me

Connect 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.me

docker-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.me

Connect 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-server

Pre-built images are published to Docker Hub on git tag push (v*.*.*) as <dockerhub-username>/hola-proxy.

Usage

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

List of arguments

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)

About

Standalone Hola proxy client. Unofficial fork.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages