.\" Automatically generated by Pandoc 2.17.1.1
.\"
.\" Define V font for inline verbatim, using C font in formats
.\" that render this, and otherwise B font.
.ie "\f[CB]x\f[]"x" \{\
. ftr V B
. ftr VI BI
. ftr VB B
. ftr VBI BI
.\}
.el \{\
. ftr V CR
. ftr VI CI
. ftr VB CB
. ftr VBI CBI
.\}
.TH "ONIONPROBE" "1" "May 26, 2025" "Onionprobe User Manual" ""
.hy
.SH NAME
.PP
Onionprobe - a test and monitoring tool for Onion Services sites
.SH SYNOPSIS
.PP
onionprobe [-h] [-c CONFIG] [-v] [\[en]circuit_stream_timeout
CIRCUIT_STREAM_TIMEOUT] [\[en]control_password CONTROL_PASSWORD]
[\[en]control_port CONTROL_PORT] [\[en]descriptor_max_retries
DESCRIPTOR_MAX_RETRIES] [\[en]descriptor_timeout DESCRIPTOR_TIMEOUT] [-e
[ONION-ADDRESS1 \&...]] [\[en]get_certificate_info |
\[en]no-get_certificate_info] [\[en]http_connect_max_retries
HTTP_CONNECT_MAX_RETRIES] [\[en]http_connect_timeout
HTTP_CONNECT_TIMEOUT] [\[en]http_read_timeout HTTP_READ_TIMEOUT]
[\[en]interval INTERVAL] [\[en]launch_tor | \[en]no-launch_tor]
[\[en]log_level LOG_LEVEL] [\[en]loop | \[en]no-loop] [\[en]metrics_port
METRICS_PORT] [\[en]metrics_port_policy METRICS_PORT_POLICY]
[\[en]new_circuit | \[en]no-new_circuit] [\[en]prometheus_exporter |
\[en]no-prometheus_exporter] [\[en]prometheus_exporter_port
PROMETHEUS_EXPORTER_PORT] [\[en]randomize | \[en]no-randomize]
[\[en]rounds ROUNDS] [\[en]shuffle | \[en]no-shuffle] [\[en]sleep SLEEP]
[\[en]socks_port SOCKS_PORT] [\[en]test_tls_connection |
\[en]no-test_tls_connection] [\[en]tls_connect_max_retries
TLS_CONNECT_MAX_RETRIES] [\[en]tls_connect_timeout TLS_CONNECT_TIMEOUT]
[\[en]tls_verify | \[en]no-tls_verify] [\[en]tor_address TOR_ADDRESS]
.SH DESCRIPTION
.PP
Onionprobe is a tool for testing and monitoring the status of Tor Onion
Services sites.
.PP
It can run a single time or continuously to probe a set of onion
services endpoints and paths, optionally exporting to Prometheus.
.SH FULL INVOCATION, OPTIONS, EXAMPLES AND METRICS
.IP
.nf
\f[C]
onionprobe [-h] [-c CONFIG] [-v]
                  [--circuit_stream_timeout CIRCUIT_STREAM_TIMEOUT]
                  [--control_password CONTROL_PASSWORD]
                  [--control_port CONTROL_PORT]
                  [--descriptor_max_retries DESCRIPTOR_MAX_RETRIES]
                  [--descriptor_timeout DESCRIPTOR_TIMEOUT]
                  [-e [ONION-ADDRESS1 ...]]
                  [--get_certificate_info | --no-get_certificate_info]
                  [--http_connect_max_retries HTTP_CONNECT_MAX_RETRIES]
                  [--http_connect_timeout HTTP_CONNECT_TIMEOUT]
                  [--http_read_timeout HTTP_READ_TIMEOUT]
                  [--interval INTERVAL] [--launch_tor | --no-launch_tor]
                  [--log_level LOG_LEVEL] [--loop | --no-loop]
                  [--metrics_port METRICS_PORT]
                  [--metrics_port_policy METRICS_PORT_POLICY]
                  [--new_circuit | --no-new_circuit]
                  [--prometheus_exporter | --no-prometheus_exporter]
                  [--prometheus_exporter_port PROMETHEUS_EXPORTER_PORT]
                  [--randomize | --no-randomize] [--rounds ROUNDS]
                  [--shuffle | --no-shuffle] [--sleep SLEEP]
                  [--socks_port SOCKS_PORT]
                  [--test_tls_connection | --no-test_tls_connection]
                  [--tls_connect_max_retries TLS_CONNECT_MAX_RETRIES]
                  [--tls_connect_timeout TLS_CONNECT_TIMEOUT]
                  [--tls_verify | --no-tls_verify] [--tor_address TOR_ADDRESS]

Test and monitor onion services

options:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        Read options from configuration file. All command line
                        parameters can be specified inside a YAML file.
                        Additional command line parameters override those set
                        in the configuration file.
  -v, --version         show program\[aq]s version number and exit
  --circuit_stream_timeout CIRCUIT_STREAM_TIMEOUT
                        Sets how many seconds until a stream is detached from
                        a circuit and try a new circuit (default: 60)
  --control_password CONTROL_PASSWORD
                        Set Tor control password or use a password prompt
                        (system-wide Tor service) or auto-generate a temporary
                        password (built-in Tor service) (default: None)
  --control_port CONTROL_PORT
                        Tor control port (default: 19051)
  --descriptor_max_retries DESCRIPTOR_MAX_RETRIES
                        Max retries when fetching a descriptor (default: 5)
  --descriptor_timeout DESCRIPTOR_TIMEOUT
                        Timeout in seconds when retrieving an Onion Service
                        descriptor (default: 30)
  -e [ONION-ADDRESS1 ...], --endpoints [ONION-ADDRESS1 ...]
                        Add endpoints to the test list
  --get_certificate_info, --no-get_certificate_info
                        Whether to get certificate information when testing
                        TLS/HTTPS endpoints. Requires --test_tls_connection to
                        take effect.
  --http_connect_max_retries HTTP_CONNECT_MAX_RETRIES
                        Max retries when doing a HTTP/HTTPS connection to an
                        Onion Service (default: 3)
  --http_connect_timeout HTTP_CONNECT_TIMEOUT
                        Connection timeout for HTTP/HTTPS requests (default:
                        30)
  --http_read_timeout HTTP_READ_TIMEOUT
                        Read timeout for HTTP/HTTPS requests (default: 30)
  --interval INTERVAL   Max random interval in seconds between probing each
                        endpoint (default: 60)
  --launch_tor, --no-launch_tor
                        Whether to launch it\[aq]s own Tor daemon (set to false to
                        use the system-wide Tor process)
  --log_level LOG_LEVEL
                        Log level : debug, info, warning, error or critical
                        (default: info)
  --loop, --no-loop     Run Onionprobe continuously
  --metrics_port METRICS_PORT
                        Tor Metrics port (MetricsPort). An empty value means
                        it is disabled
  --metrics_port_policy METRICS_PORT_POLICY
                        Tor Metrics port policy (MetricsPortPolicy). An empty
                        value means it is disabled\[aq] (default: reject *)
  --new_circuit, --no-new_circuit
                        Get a new circuit for every stream
  --prometheus_exporter, --no-prometheus_exporter
                        Enable Prometheus exporting functionality
  --prometheus_exporter_port PROMETHEUS_EXPORTER_PORT
                        Set the Prometheus exporter port (default: 9935)
  --randomize, --no-randomize
                        Randomize the interval between each probing
  --rounds ROUNDS       Run only a limited number of rounds (i.e., the number
                        of times that Onionprobe tests all the configured
                        endpoints). Requires the \[dq]loop\[dq] option to be enabled.
                        Set to 0 to disable this limit. (default: 0)
  --shuffle, --no-shuffle
                        Shuffle the list of endpoints at each probing round
  --sleep SLEEP         Max random interval in seconds to wait between each
                        round of tests (default: 60)
  --socks_port SOCKS_PORT
                        Tor SOCKS port (default: 19050)
  --test_tls_connection, --no-test_tls_connection
                        Whether to run a specific test for TLS endpoints
  --tls_connect_max_retries TLS_CONNECT_MAX_RETRIES
                        Max retries when doing a TLS connection to an Onion
                        Service (default: 3)
  --tls_connect_timeout TLS_CONNECT_TIMEOUT
                        Connection timeout for TLS connections (default: 30)
  --tls_verify, --no-tls_verify
                        Whether to verify TLS/HTTPS certificates
  --tor_address TOR_ADDRESS
                        Tor listening address if the system-wide service is
                        used (default: 127.0.0.1)

Examples:

      onionprobe -c configs/tor.yaml
      onionprobe -e http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion

Available metrics:

  onionprobe_version:
        Onionprobe version information
  onionprobe_state:
        Onionprobe latest state
  onionprobe_wait_seconds:
        Records how long Onionprobe waited between two probes in seconds
  onion_service_latency_seconds:
        Register Onion Service connection latency in seconds
  onion_service_reachable:
        Register if the Onion Service is reachable: value is 1 for reachability and 0 otherwise
  onion_service_connection_attempts:
        Register the number of attempts when trying to connect to an Onion Service in a probing round
  onion_service_tls_security_level:
        An integer representing the SSL security level for the context.See SSL_CTX_get_security_level(3) manpage for details.
  onion_service_status_code:
        Register Onion Service connection HTTP status code
  onion_service_unexpected_status_code:
        Register if an Onion Service connection returned an unexpected HTTP status code: 1 for unexpected and 0 otherwise
  onion_service_descriptor_latency_seconds:
        Register Onion Service latency in seconds to get the descriptor
  onion_service_descriptor_reachable:
        Register if the Onion Service descriptor is available: value is 1 for reachability and 0 otherwise
  onion_service_descriptor_fetch_attempts:
        Register the number of attempts required when trying to get an Onion Service descriptor in a probing round
  onion_service_descriptor_revision_counter:
        Register Onion Service descriptor revision counter
  onion_service_descriptor_lifetime_seconds:
        Register Onion Service descriptor lifetime in seconds
  onion_service_descriptor_outer_wrapper_size_bytes:
        Register Onion Service outer wrapper descriptor size in bytes (decrypted)
  onion_service_descriptor_second_layer_size_bytes:
        Register Onion Service second layer descriptor size in bytes (decrypted)
  onion_service_is_single:
        Indicates whether the server is using the single hop Onion Service circuit mode: value is 1 if this is a single onion service, 0 otherwise
  onion_service_introduction_points_number:
        Register the number of introduction points in the Onion Service descriptor
  onion_service_pow_enabled:
        Whether Proof of Work (PoW) defense is enabled in the Onion Service: value is 1 when PoW is enabled, 0 otherwise
  onion_service_pow_v1_seed:
        The Proof of Work (PoW) decoded seed for the v1 scheme
  onion_service_pow_v1_effort:
        The Proof of Work (PoW) suggested effort for the v1 scheme
  onion_service_pow_v1_expiration_seconds:
        The Proof of Work (PoW) seed expiration time for the v1 scheme
  onion_service_pattern_matched:
        Register whether a regular expression pattern is matched when connection to the Onion Service: value is 1 for matched pattern and 0 otherwise
  onion_service_valid_certificate:
        Register whether the Onion Service HTTPS certificate is valid: value is 1, 0 for invalid, 2 for untested. Only for sites reachable using HTTPS
  onion_service_certificate_not_valid_before_timestamp_seconds:
        Register the beginning of the validity period of the certificate in UTC.This does not mean necessarily that the certificate is CA-validated.Value is represented as a POSIX timestamp
  onion_service_certificate_not_valid_after_timestamp_seconds:
        Register the end of the validity period of the certificate in UTC.This does not mean necessarily that the certificate is CA-validated.Value is represented as a POSIX timestamp
  onion_service_certificate_expiry_seconds:
        Register how many seconds are left before the certificate expire.Negative values indicate how many seconds passed after the certificate already expired.
  onion_service_certificate_match_hostname:
        Register whether a provided server certificate matches the server hostname in a TLS connection: value is 1 for matched hostname and 0 otherwise. Check is done both on the commonName and subjectAltName fields. A value of 1 does not mean necessarily that the certificate is CA-validated.
  hsdir_latency_seconds:
        Register HSDir latency in seconds to fetch a descriptor
  onion_service_fetch_requests:
        Counts the total number of requests to access an Onion Service
  onion_service_fetch_error:
        Counts the total number of errors when fetching an Onion Service
  onion_service_descriptor_fetch_requests:
        Counts the total number of requests to fetch an Onion Service descriptor
  onion_service_descriptor_fetch_error:
        Counts the total number of errors when fetching an Onion Service descriptor
  onion_service_generic_error:
        Counts the total number of errors not tracked by other metrics
  onion_service_request_exception:
        Counts the total number of Onion Service general exception errors
  onion_service_connection_error:
        Counts the total number of Onion Service connection errors
  onion_service_http_error:
        Counts the total number of Onion Service HTTP errors
  onion_service_too_many_redirects:
        Counts the total number of Onion Service too many HTTP redirect errors
  onion_service_connection_timeout:
        Counts the total number of Onion Service connection timeouts
  onion_service_read_timeout:
        Counts the total number of Onion Service read timeouts
  onion_service_timeout:
        Counts the total number of Onion Service timeouts
  onion_service_certificate_error:
        Counts the total number of HTTPS certificate validation errors
  onion_service_descriptor:
        Onion Service descriptor information, including state and Hidden Service Directory (HSDir) used
  onion_service_tls:
        Register miscellaneous TLS information for a given Onion Service, such as version and ciphers
  onion_service_certificate:
        Register miscellaneous TLS certificate information for a given Onion Service, such as version and fingerprints
  onion_service_probe_status:
        Register information about the last test made to a given Onion Service, including POSIX timestamp
\f[R]
.fi
.SH CONFIGURATION FILE FORMAT
.PP
This is a sample configuration file that can be adapted:
.IP
.nf
\f[C]
---
# Sample config file for Onionprobe
#
# Copyright (C) 2022 The Tor Project, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published
# by the Free Software Foundation, either version 3 of the License,
# or any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Log level: debug, info, warning, error or critical
log_level: \[aq]info\[aq]

# Whether to launch it\[aq]s own Tor daemon (set to false to use the system-wide Tor service)
launch_tor: true

# Tor listening address if the system-wide service is used
#tor_address: \[aq]tor\[aq]
tor_address: \[aq]127.0.0.1\[aq]

# Tor SOCKS port
#
# Use a non-default Tor SOCKS port to avoid conflict with any existing
# system-wide Tor process listening at TCP port 9050.
#socks_port: 9050
socks_port: 19050

# Tor control port
#
# Use a non-default Tor control port to avoid conflict with any existing
# system-wide Tor process listening at TCP port 9051.
#control_port: 9051
control_port: 19051

# Tor control password
#
# Set to false to
#
# * Use a temporary auto-generated password when using the built-in Tor
#   service.
# * Show a password prompt when using the system-wide Tor service.
#
# Do not use the example value in production, as this password is available
# publicly
#control_password: false
#control_password: \[aq]hackedpasswdbSkUMOr2vIlL5u2YEMA1YpwKj08\[aq]

# Whether to run continuously
loop: true

# Tor Metrics port (MetricsPort)
# An empty value means it is disabled
#
# WARNING: Before enabling this, it is important to understand that exposing
# tor metrics publicly is dangerous to the Tor network users. Please take extra
# precaution and care when opening this port. Set a very strict access policy
# with \[ga]metrics_port_policy\[ga] and consider using your operating systems firewall
# features for defense in depth.
#
# We recommend, for the prometheus format, that the only address that can
# access this port should be the Prometheus server itself. Remember that the
# connection is unencrypted (HTTP) hence consider using a tool like stunnel to
# secure the link from this port to the server.
#
# Example settings for the metrics_port parameter:
#
#   metrics_port: \[aq]9936\[aq]         # localhost only on port 9936
#   metrics_port: \[aq]0.0.0.0:9936\[aq] # binds to all IPv4 addresses in the host
#
metrics_port: \[aq]\[aq]

# Tor Metrics port policy (MetricsPortPolicy)
# An empty value means it is disabled
#
# Example settings for the metrics_port_policy parameter:
#
#   metrics_port_policy: \[aq]accept 172.19.0.100\[aq]
#   metrics_port_policy: \[aq]accept 127.0.0.1,accept 172.19.0.100\[aq]
#   metrics_port_policy: \[aq]accept *\[aq]
#
# This should work by default for Docker containers in the 172.16.0.0/12 subnet
# (not recommended):
#
#   metrics_port_policy: \[aq]accept 172.16.0.0/12\[aq]
#
# This should work by default for a local network, including local Docker
# containers (not recommended):
#
#   metrics_port_policy: \[aq]accept 192.168.0.0/16,accept 10.0.0.0/8,accept 172.16.0.0/12\[aq]
#
metrics_port_policy: \[aq]reject *\[aq]

# Whether to enable Prometheus exporter functionality
# Setting it to true automatically enables countinuos run (loop)
prometheus_exporter: true

# Prometheus exporter port
prometheus_exporter_port: 9935

# Max random time in seconds between probing each endpoint
interval: 5

# Max random time in seconds to wait between each round of tests (a round = a
# pass among all defined endpoints)
sleep: 5

# Whether to shuffle list to scramble the ordering of the probe to avoid
# the endpoint list to be guessed by a third party.
#
# This shuffles the list every time Onionprobe starts a new round of
# tests.
shuffle: true

# Whether to randomize both the interval and the sleep time for privacy
# concerns and to avoid systematic errors
randomize: true

# Run only a limited number of rounds (i.e., the number of times that
# Onionprobe tests all the configured endpoints).
# Requires the \[dq]loop\[dq] option to be enabled.
# Set to 0 to disable this limit.
rounds: 0

# Max retries when fetching a descriptor
# By default it is set to the number of HSDirs the client usually fetch minus one
# See discussion at https://gitlab.torproject.org/tpo/network-health/analysis/-/issues/28
descriptor_max_retries: 5

# Timeout in seconds when retrieving an Onion Service descriptor
descriptor_timeout: 30

# Connection timeout for HTTP/HTTPS requests
http_connect_timeout: 30

# Max retries when doing a HTTP/HTTPS connection to an Onion Service
http_connect_max_retries: 3

# Read timeout for HTTP/HTTPS requests
http_read_timeout: 30

# Whether to get a new circuit for every stream
new_circuit: false

# Sets how many seconds until a stream is detached from a circuit and try a new
# circuit (CircuitStreamTimeout Tor daemon config)
circuit_stream_timeout: 60

# Whether to verify TLS/HTTPS certificates
tls_verify: true

# Whether to run a specific test for TLS endpoints
test_tls_connection: true

# Whether to get certificate information when testing TLS/HTTPS endpoints.
# Requires \[dq]test_tls_connection\[dq] set to true to take effect.
get_certificate_info: true

# Connection timeout for TLS connections
tls_connect_timeout: 30

# Max retries when doing a TLS connection to an Onion Service
tls_connect_max_retries: 3

# The list of endpoints to be tested
endpoints:
  # Using addresses from https://onion.torproject.org
  www.torproject.org:
    address: \[aq]2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion\[aq]
    protocol: \[aq]http\[aq]
    port: 80
    paths:
      - path   : \[aq]/\[aq]
        # Specifying a per-path pattern makes Onionprobe look for it in the
        # request and hence operating like a basic check if the endpoint
        # is operational.
        #
        # Accepts patterns using Python\[aq]s regex format
        pattern: \[aq]Tor Project\[aq]

        # The allowed HTTP status codes for this endpoint
        # Any code not in this list will set an unexpected status code metric
        allowed_statuses:
          - 200
  2019.www.torproject.org:
    address: jqyzxhjk6psc6ul5jnfwloamhtyh7si74b4743k2qgpskwwxrzhsxmad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  alertmanager1.torproject.org:
    address: sbgubiq7c3r7zp22gnl4pjfwisk2plbxwhbwcluwjegbxzwhq7a2ucyd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  alertmanager2.torproject.org:
    address: uqduzmqiesrjqw2n7rc66h267mmbsxzacohrfhpoxm746wa46yh25jqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  archive.torproject.org:
    address: uy3qxvwzwoeztnellvvhxh7ju7kfvlsauka7avilcjg7domzxptbq7qd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  aus1.torproject.org:
    address: ot3ivcdxmalbsbponeeq5222hftpf3pqil24q3s5ejwo5t52l65qusid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  aus2.torproject.org:
    address: b5t7emfr2rn3ixr4lvizpi3stnni4j4p6goxho7lldf4qg4hz5hvpqid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  blog.torproject.org:
    address: pzhdfe7jraknpj2qgu5cz2u3i4deuyfwmonvzu5i3nyw4t4bmg7o5pad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  bridges.torproject.org:
    address: yq5jjvr7drkjrelzhut7kgclfuro65jjlivyzfmxiq2kyv5lickrl4qd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  cloud.torproject.org:
    address: ui3cpcohcoko6aydhuhlkwqqtvadhaflcc5zb7mwandqmcal7sbwzwqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  collector.torproject.org:
    address: pgmrispjerzzf2tdzbfp624cg5vpbvdw2q5a3hvtsbsx25vnni767yad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  collector2.torproject.org:
    address: urscdffm73o4y6hpp3r43bgmudq42hq2ibdpkld6a7hy3qa44qbvc2yd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  community.torproject.org:
    address: xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  consensus-health.torproject.org:
    address: tkskz5dkjel4xqyw5d5l3k52kgglotwn6vgb5wrl2oa5yi2szvywiyid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  crm.torproject.org:
    address: 6ojylpznauimd2fga3m7g24vd7ebkzlemxdprxckevqpzs347ugmynqd.onion
    paths:
    - allowed_statuses:
      - 401
      path: /
    port: 80
    protocol: http
  db.torproject.org:
    address: epnxy4oscv3yh2fjwfrvctnjsmj5ta5uxdkq6k2ce7borqvcsk4qxhid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  deb.torproject.org:
    address: apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  dev.crm.torproject.org:
    address: eewp4iydzyu2a5d6bvqadadkozxdbhsdtmsoczu2joexfrjjsheaecad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  dist.torproject.org:
    address: scpalcwstkydpa3y7dbpkjs2dtr7zvtvdbyj3dqwkucfrwyixcl5ptqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  exonerator.torproject.org:
    address: pm46i5h2lfewyx6l7pnicbxhts2sxzacvsbmqiemqaspredf2gm3dpad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  extra.torproject.org:
    address: kkr72iohlfix5ipjg776eyhplnl2oiv5tz4h2y2bkhjix3quafvjd5ad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  forum.torproject.org:
    address: v236xhqtyullodhf26szyjepvkbv6iitrhjgrqj4avaoukebkk6n6syd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 443
    protocol: https
  gitlab.torproject.org:
    address: eweiibe6tdjsdprb4px6rqrzzcsi22m4koia44kc5pcjr7nec2rlxyad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  grafana1.torproject.org:
    address: 7zjnw5lx2x27rwiocxkqdquo7fawj46mf2wiu2l7e6z6ng6nivmdxnad.onion
    paths:
    - allowed_statuses:
      - 401
      path: /
    port: 80
    protocol: http
  grafana2.torproject.org:
    address: f3vd6fyiccuppybkxiblgigej3pfvvqzjnhd3wyv7h4ee5asawf2fhqd.onion
    paths:
    - allowed_statuses:
      - 401
      path: /
    port: 80
    protocol: http
  ircbouncer.torproject.org:
    address: moz5kotsnjony4oxccxfo4lwk3pvoxmdoljibhgoonzgzjs5oemtjmqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  karma1.torproject.org:
    address: t5z367d2omuewjvrwqsdd2bixlh6dektuf2hhe2hc2tpvk4bosb4u4yd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  karma2.torproject.org:
    address: h6necup44ztozsqs3my6g5pjljptqnm4auqrqcy6jdctoqvznmvh3qqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  lists-01.torproject.org:
    address: e6r6heg2ucmlm2po5yrxzf6k23ta5wwbt2adogjcyntlaiopytjz35yd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  metrics-api.torproject.org:
    address: yc3galza3gejn3taziuhhgrwt4bdtwmom25zby7jphfwbeirvkmcdvqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  metrics-db.torproject.org:
    address: lk6lj36rfj32u2rjceujj3o7otgujm6fw5hyyxr6jko6pkfasb2z6eid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  metrics.torproject.org:
    address: hctxrvjzfpvmzh2jllqhgvvkoepxb4kfzdjm6h7egcwlumggtktiftid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  moat.torproject.org:
    address: z7m7ogzdhu43nosvjtsuplfmuqa3ge5obahixydhmzdox6owwxfoxzid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  newsletter.torproject.org:
    address: a4ygisnerpgtc5ayerl22pll6cls3oyj54qgpm7qrmb66xrxts6y3lyd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  nightlies.tbb.torproject.org:
    address: umj4zbqdfcyevlkgqgpq6foxk3z75zzxsbgt5jqmfxofrbrjh3crbnad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  nyx.torproject.org:
    address: 3ewfgrt4gzfccp6bnquhqb266r3zepiqpnsk3falwygkegtluwuyevid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  onion.torproject.org:
    address: xao2lxsmia2edq2n5zxg6uahx6xox2t7bfjw6b5vdzsxi7ezmqob6qid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  onionservices.torproject.org:
    address: ttevhjjsjxz6uqqcjkbig5cycd7n7xv7cmd6f5fcvrqaaa7f3bj36wad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  openpgpkey.torproject.org:
    address: 2yldcptk56shc7lwieozoglw3t5ghty7m6mf2faysvfnzccqavbu2mad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  people.torproject.org:
    address: 5ecey6oe4rocdsfoigr4idu42cecm2j7zfogc3xc7kfn4uriehwrs6qd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  prometheus1.torproject.org:
    address: ydok5jiruh3ak6hcfdlm2g7iuraaxcomeckj2nucjsxif6qmrrda2byd.onion
    paths:
    - allowed_statuses:
      - 401
      path: /
    port: 80
    protocol: http
  prometheus2.torproject.org:
    address: vyo6yrqhl3by7d6n5t6hjkflaqbarjpqjnvapr5u5rafk4imnfrmcjyd.onion
    paths:
    - allowed_statuses:
      - 401
      path: /
    port: 80
    protocol: http
  rbm.torproject.org:
    address: nkuz2tpok7ctwd5ueer5bytj3bm42vp7lgjcsnznal3stotg6vyaakyd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  rdsys-moat.torproject.org:
    address: jcbdm4biw3aac57snk34brzc5fghbszrzde47idnlanj6kf6jmocdgqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  research.torproject.org:
    address: xhqthou6scpfnwjyzc3ekdgcbvj76ccgyjyxp6cgypxjlcuhnxiktnqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  review.torproject.net:
    address: zhkhhhnppc5k6xju7n25rjba3wuip73jnodicxl65qdpchrwvvsilcyd.onion
    paths:
    - allowed_statuses:
      - 401
      path: /
    port: 80
    protocol: http
  rpm.torproject.org:
    address: 4ayyzfoh5qdrokqaejis3rdredhvf22n3migyxfudpkpunngfc7g4lqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  snowflake.torproject.org:
    address: oljlphash3bpqtrvqpr5gwzrhroziw4mddidi5d2qa4qjejcbrmoypqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  spec.torproject.org:
    address: i3xi5qxvbrngh3g6o7czwjfxwjzigook7zxzjmgwg5b7xnjcn5hzciad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  staging.crm.torproject.org:
    address: pt34uujusar4arrvsqljndqlt7tck2d5cosaav5xni4nh7bmvshyp2yd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  status.torproject.org:
    address: eixoaclv7qvnmu5rolbdwba65xpdiditdoyp6edsre3fitad777jr3ad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  stem.torproject.org:
    address: mf34jlghauz5pxjcmdymdqbe5pva4v24logeys446tdrgd5lpsrocmqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  styleguide.torproject.org:
    address: 7khzpw47s35pwo3lvtctwf2szvnq3kgglvzc22elx7of2awdzpovqmqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  submission.torproject.org:
    address: givpjczyrb5jjseful3o5tn3tg7tidbu4gydl4sa5ekpcipivqaqnpad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  support.torproject.org:
    address: rzuwtpc4wb3xdzrj3yeajsvm3fkq4vbeubm2tdxaqruzzzgs5dwemlad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  survey.torproject.org:
    address: eh5esdnd6fkbkapfc6nuyvkjgbtnzq2is72lmpwbdbxepd2z7zbgzsqd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  svn-archive.torproject.org:
    address: b63iq6es4biaawfilwftlfkw6a6putogxh4iakei2ioppb7dsfucekyd.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  tagtor.torproject.org:
    address: lx75vwrdgdgzpnnewquw2kngajieq6lqbblawoufjkf6fyqexhu4iiad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  tb-manual.torproject.org:
    address: dsbqrprgkqqifztta6h3w7i2htjhnq7d3qkh3c7gvc35e66rrcv66did.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  test-data.tbb.torproject.org:
    address: umbk3kbgov4ekg264yulvbrpykfye7ohguqbds53qn547mdpt6o4qkad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  test.crm.torproject.org:
    address: a4d52y2erv4eijii66cpnyqn7rsnnq3gmtrsdxzt2laoutvu4gz7fwid.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
  www.onion-router.net:
    address: tttyx2vwp7ihml3vkhywwcizv6nbwrikpgeciy3qrow7l7muak2pnhad.onion
    paths:
    - allowed_statuses:
      - 200
      path: /
    port: 80
    protocol: http
\f[R]
.fi
.SH EXIT STATUS
.PP
If any tested endpoint had a failure on any probing, then the exit
status is 1.
Otherwise, the exit status is 0.
.SH FILES
.TP
/etc/onionprobe
System-wide Onionprobe configuration files.
.SH LIMITATIONS
.PP
Onionprobe currently has the following limitations:
.IP "1." 3
Only works for Onion Services websites, i.e, those served via either
HTTP or HTTPS.
.IP "2." 3
Currently Onionprobe probes runs in a single thread.
.IP "3." 3
For other limitations, check the list of issues available at the
Onionprobe source code repository.
.SH SEE ALSO
.PP
The \f[I]docs/\f[R] folder distributed with Onionprobe contains the full
documentation, which should also be available at
<https://onionservices.torproject.org/apps/web/onionprobe/>.
.PP
The Onionprobe source code and all documentation may be downloaded from
<https://gitlab.torproject.org/tpo/onion-services/onionprobe>.
.SH AUTHORS
Silvio Rhatto <rhatto@torproject.org>.