MEEK-CLIENT(1)

NAME
meek-client - The meek client transport plugin

SYNOPSIS

meek-client [OPTIONS]

DESCRIPTION

meek-client is a transport plugin for Tor that encodes a stream as a sequence of HTTP requests and responses. It has a url option to control what destination server requests are directed to, and a front option for domain name camouflage: The domain name in the URL is replaced by the front domain before the request is made, but the Host header inside the HTTP request still points to the original domain. The idea is to front through a domain that is not blocked to a domain that is blocked.

CONFIGURATION

Configuration for meek-client usually happens in a torrc file.

Per-bridge options are configured with SOCKS args (key=value pairs in a Bridge line). The possible SOCKS args are:

url=URL (required)
    The URL of a meek-server instance. The domain name component will typically be hidden by the value in the front arg.

front=DOMAIN
    Front domain name. If provided, this domain name will replace the domain name of url in the DNS request and TLS SNI field. The URL’s true domain name will still appear in the Host header of HTTP requests.

utls=CLIENTHELLOID
    Use the uTLS library with the named TLS fingerprint for TLS camouflage. This arg is incompatible with the --helper command line option. The possible values of CLIENTHELLOID are:

        • HelloRandomizedALPN

        • HelloRandomizedNoALPN

        • HelloFirefox_55

        • HelloFirefox_56

        • HelloFirefox_63

        • HelloFirefox_Auto

        • HelloChrome_58

        • HelloChrome_62

        • HelloChrome_70

        • HelloChrome_Auto

        • HelloIOS_11_1

        • HelloIOS_Auto

    As a special case, the values "none" and "HelloGolang" are recognized as aliases for omitting the utls SOCKS arg; i.e., use native Go TLS.

For backward compatibility, each SOCKS arg also has an equivalent command line option. For example, this configuration using SOCKS args:

    Bridge meek 0.0.2.0:1 url=https://forbidden.example/ front=allowed.example
    ClientTransportPlugin meek exec ./meek-client

is the same as this one using command line options:

    Bridge meek 0.0.2.0:1
    ClientTransportPlugin meek exec ./meek-client --url=https://forbidden.example/ --front=allowed.example

SOCKS args are preferred over command line options because they allow you to have multiple Bridge lines with different settings. If a SOCKS arg and a command line option are both given for the same setting, the SOCKS arg takes precedence.

The global --helper option prevents meek-client from doing any network operations itself. Rather, it will send all requests through a browser extension, which must be set up separately.

A global proxy (applies to all Bridge lines) can be configured using special torrc options:

    Socks4Proxy localhost:1080
    Socks5Proxy localhost:1080
    Socks5ProxyUsername username
    Socks5ProxyPassword password
    HTTPSProxy localhost:8080
    HTTPSProxyAuthenticator username:password

or, equivalently, using the --proxy command line option. The command line option takes precedence.

When the --helper option is used, you can use proxies of type http, socks4a, or socks5, but you cannot use a username or password with the proxy. Without --helper, you can use proxies of type http, https, or socks5, and you can optionally use a username and password.

OPTIONS

--front=DOMAIN
    Front domain name. Prefer using the front SOCKS arg on a bridge line over using this command line option.

--helper=ADDRESS
    Address of HTTP helper browser extension. For example, --helper=127.0.0.1:7000.

--proxy=URL
    URL of upstream proxy. For example, --proxy=http://localhost:8080/, --proxy=socks4a://localhost:1080, or --proxy=socks5://localhost:1080. Can also be configured using the HTTPSProxy, Socks4Proxy, or Socks5Proxy options in a torrc file.

--log=FILENAME
    Name of a file to write log messages to (default stderr).

--url=URL
    URL to correspond with. Prefer using the url SOCKS arg on a bridge line over using this command line option.

--utls=CLIENTHELLOID
    Use uTLS with the given TLS fingerprint for TLS camouflage. This option is incompatible with --helper. Prefer using the utls SOCKS arg over using this command line option.

-h, --help
    Display a help message and exit.

SEE ALSO

https://trac.torproject.org/projects/tor/wiki/doc/meek

BUGS

Please report at https://trac.torproject.org/projects/tor.