Skip to content

Snawoot/opera-proxy

Repository files navigation

opera-proxy

opera-proxy

Standalone Opera VPN client. Younger brother of hola-proxy.

Just run it and it'll start a plain HTTP proxy server forwarding traffic through "Opera VPN" proxies of your choice. By default the application listens on 127.0.0.1:18080.

Features

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

Installation

Binaries

Pre-built binaries are available here.

Build from source

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

make install

Docker

A docker image is available as well. Here is an example of running opera-proxy as a background service:

docker run -d \
    --security-opt no-new-privileges \
    -p 127.0.0.1:18080:18080 \
    --restart unless-stopped \
    --name opera-proxy \
    yarmak/opera-proxy

Snap Store

Get it from the Snap Store

sudo snap install opera-proxy

Usage

List available countries:

$ ./opera-proxy -list-countries
country code,country name
EU,Europe
AS,Asia
AM,Americas

Run proxy via country of your choice:

$ ./opera-proxy -country EU

Also it is possible to export proxy addresses and credentials:

$ ./opera-proxy -country EU -list-proxies
Proxy login: ABCF206831D0BDC0C8C3AE5283F99EF6726444B3
Proxy password: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb3VudHJ5IjoidWEiLCJpYXQiOjE2MTY4MDkxMTIsImlkIjoic2UwMzE2LTYweGY3aTBxMGhoOWQ1MWF0emd0IiwiaXAiOiI3Ny4xMTEuMjQ3LjE3IiwidnBuX2xvZ2luIjoiSzJYdmJ5R0tUb3JLbkpOaDNtUGlGSTJvSytyVTA5bXMraGt2c2UwRWJBcz1Ac2UwMzE2LmJlc3QudnBuIn0.ZhqqzVyKmc3hZG6VVwWfn4nvVIPuZvaEfOLXfTppyvo
Proxy-Authorization: Basic QUJDRjIwNjgzMUQwQkRDMEM4QzNBRTUyODNGOTlFRjY3MjY0NDRCMzpleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKamIzVnVkSEo1SWpvaWRXRWlMQ0pwWVhRaU9qRTJNVFk0TURreE1USXNJbWxrSWpvaWMyVXdNekUyTFRZd2VHWTNhVEJ4TUdob09XUTFNV0YwZW1kMElpd2lhWEFpT2lJM055NHhNVEV1TWpRM0xqRTNJaXdpZG5CdVgyeHZaMmx1SWpvaVN6SllkbUo1UjB0VWIzSkxia3BPYUROdFVHbEdTVEp2U3l0eVZUQTViWE1yYUd0MmMyVXdSV0pCY3oxQWMyVXdNekUyTG1KbGMzUXVkbkJ1SW4wLlpocXF6VnlLbWMzaFpHNlZWd1dmbjRudlZJUHVadmFFZk9MWGZUcHB5dm8=

host,ip_address,port
eu0.sec-tunnel.com,77.111.244.26,443
eu1.sec-tunnel.com,77.111.244.67,443
eu2.sec-tunnel.com,77.111.247.51,443
eu3.sec-tunnel.com,77.111.244.22,443

List of arguments

Argument Type Description
api-address String override IP address of api2.sec-tunnel.com
api-client-type String client type reported to SurfEasy API (default "se0316")
api-client-version String client version reported to SurfEasy API (default "Stable 114.0.5282.21")
api-login String SurfEasy API login (default "se0316")
api-password String SurfEasy API password (default "SILrMEPBmJuhomxWkfm3JalqHX2Eheg1YhlEZiMh8II")
api-user-agent String user agent reported to SurfEasy API (default "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 OPR/114.0.0.0")
bind-address String HTTP proxy listen address (default "127.0.0.1:18080")
bootstrap-dns String Comma-separated list of DNS/DoH/DoT/DoQ resolvers for initial discovery of SurfEasy API address. See https://github.com/ameshkov/dnslookup/ for upstream DNS URL format. Examples: https://1.1.1.1/dns-query, quic://dns.adguard.com (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://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/)
cafile String use custom CA certificate bundle file
certchain-workaround Boolean add bundled cross-signed intermediate cert to certchain to make it check out on old systems (default true)
country String desired proxy location (default "EU")
fake-SNI String domain name to use as SNI in communications with servers
init-retries Number number of attempts for initialization steps, zero for unlimited retry
init-retry-interval Duration delay between initialization retries (default 5s)
list-countries - 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
refresh Duration login refresh interval (default 4h0m0s)
refresh-retry Duration login refresh retry interval (default 5s)
timeout Duration timeout for network operations (default 10s)
verbosity Number logging verbosity (10 - debug, 20 - info, 30 - warning, 40 - error, 50 - critical) (default 20)
version - show program version and exit

See also