tor-commits
Threads by month
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
July 2017
- 14 participants
- 1744 discussions
[metrics-web/master] Add onionoo.html from onionoo.git (723e71a).
by karsten@torproject.org 06 Jul '17
by karsten@torproject.org 06 Jul '17
06 Jul '17
commit 09e27d6d85ccb1a9f65aefa2b9c764112cbc2dee
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Sat Mar 18 21:31:39 2017 +0100
Add onionoo.html from onionoo.git (723e71a).
---
website/src/main/resources/web/onionoo.html | 2249 +++++++++++++++++++++++++++
1 file changed, 2249 insertions(+)
diff --git a/website/src/main/resources/web/onionoo.html b/website/src/main/resources/web/onionoo.html
new file mode 100644
index 0000000..d8fe74a
--- /dev/null
+++ b/website/src/main/resources/web/onionoo.html
@@ -0,0 +1,2249 @@
+<!DOCTYPE HTML>
+<html lang="en" style="min-height:100%;">
+<head>
+
+ <title>Onionoo</title>
+
+ <meta charset="utf-8">
+ <link href="images/favicon.ico" type="image/x-icon" rel="shortcut icon">
+
+ <!-- yes, we're handheld friendly :) -->
+ <meta name="HandheldFriendly" content="True">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+ <meta name="apple-mobile-web-app-capable" content="yes">
+
+ <!-- icons for mobile devices -->
+ <link rel="apple-touch-icon" href="images/apple-touch-icon-152x152.png">
+ <link rel="shortcut icon" href="images/android-icon.png" sizes="196x196">
+ <meta name="msapplication-square70x70logo" content="images/smalltile.png">
+ <meta name="msapplication-square150x150logo" content="images/mediumtile.png">
+ <meta name="msapplication-wide310x150logo" content="images/widetile.png">
+ <meta name="msapplication-square310x310logo" content="images/largetile.png">
+
+ <!-- jQuery -->
+ <script src="js/jquery-3.1.1.min.js"></script>
+
+ <!-- Bootstrap -->
+ <link rel="stylesheet" href="css/bootstrap.min.css">
+ <script src="js/bootstrap.min.js"></script>
+
+ <!-- Fonts -->
+ <link rel="stylesheet" href="css/font-awesome.min.css">
+ <link rel="stylesheet" href="fonts/source-sans-pro.css">
+
+ <!-- custom styles and javascript -->
+ <link rel="stylesheet" href="css/style.css">
+ <script src="js/script.js"></script>
+
+</head>
+
+<body class="noscript" style="background-image:url(images/ajax-loader.gif);background-repeat:no-repeat;background-position:center center;">
+
+<!-- Using evil inline stylesheets to hide the FOUC for slow connections... -->
+
+<div id="wrapper" style="display:none;">
+
+
+<!-- backToTop-Button and Anchor -->
+<noscript>
+<div class="topButton" style="display:block;"><a href="#top"><i class="fa fa-chevron-up" aria-hidden="true"></i></a></div>
+</noscript>
+<script type="text/javascript">
+document.write('<div class="topButton" style="display:none;"><a href="#top"><i class="fa fa-chevron-up" aria-hidden="true"></i></a></div>');
+</script>
+<a id="top"></a>
+
+
+
+<!-- secondary navigation -->
+<nav class="navbar navbar-default navbar-secondary">
+ <div class="container-fluid visible-xs">
+ <input type="checkbox" id="navbar-toggle-checkbox">
+ <div class="navbar-header">
+ <label for="navbar-toggle-checkbox" type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-secondary" aria-expanded="false">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </label>
+ <a class="navbar-brand visible-xs" href="/"><img src="images/onionoo-wordmark-white.png" width="221" height="40" alt="Onionoo"></a>
+ </div>
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse" id="bs-example-navbar-secondary">
+ <ul class="nav navbar-nav navbar-right">
+
+
+ <!-- secondary navigation items -->
+ <li><a href="#general">General</a></li>
+ <li><a href="#versions">Protocol versions</a></li>
+ <li><a href="#methods">Methods</a></li>
+ <li><a href="#responses">Responses</a></li>
+ <li><a href="#summary">Summary documents</a></li>
+ <li><a href="#details">Details documents</a></li>
+ <li><a href="#history">History objects</a></li>
+ <li><a href="#bandwidth">Bandwidth documents</a></li>
+ <li><a href="#weights">Weights documents</a></li>
+ <li><a href="#clients">Clients documents</a></li>
+ <li><a href="#uptime">Uptime documents</a></li>
+ <li><a href="#examples">Example usage</a></li>
+ <!-- /secondary navigation items -->
+
+ </ul>
+ </div><!-- /.navbar-collapse -->
+
+ </div>
+</nav>
+<!-- /secondary navigation -->
+
+
+
+<!-- page header for every single page -->
+<div class="page-header hidden-xs">
+ <a href="/"><img src="images/tor-logo-weiss.png" width="162" height="100" alt="" id="onionoo-logo"></a>
+ <span style="display:inline-block;width:20px;"></span>
+ <a href="/"><img src="images/onionoo-wordmark-white.png" width="221" height="40" alt="Onionoo" id="onionoo-wordmark"></a>
+ <div>
+ <p>
+ <i>The Tor network status protocol providing the<br>
+ data for other applications and websites.</i>
+ </p>
+ </div>
+ <div class="clearfix"></div>
+</div>
+<!-- /page header -->
+
+
+
+
+
+ <div class="container">
+
+
+<br><br>
+
+
+
+ <div class="jumbotron">
+ <div class="text-center">
+ <h2>
+ The Tor network status protocol
+ </h2>
+ <p>Onionoo is a web-based protocol to learn about currently running
+ Tor relays and bridges. Onionoo itself was not designed as a service
+ for human beings—at least not directly. Onionoo provides the
+ data for other applications and websites which in turn present Tor
+ network status information to humans. </p>
+ <a class="btn btn-primary btn-lg" style="margin: 10px" href="#protocol"><i class="fa fa-chevron-right" aria-hidden="true"></i> Tell me more!</a>
+
+ </div><!-- text-center -->
+
+
+ </div><!-- jumbotron -->
+
+
+
+
+
+
+<br>
+
+
+
+
+
+<br>
+<a id="protocol"></a>
+
+ <!-- floating anchor box -->
+ <div class="col-md-4 pull-right hidden-xs" style="padding:1.2em 0 0 2em;">
+ <div class="list-group">
+ <h3>Table of contents</h3>
+ <a class="list-group-item" href="#general">General</a>
+ <a class="list-group-item" href="#versions">Protocol versions</a>
+ <a class="list-group-item" href="#methods">Methods</a>
+ <a class="list-group-item" href="#responses">Responses</a>
+ <a class="list-group-item" href="#summary">Summary documents</a>
+ <a class="list-group-item" href="#details">Details documents</a>
+ <a class="list-group-item" href="#history">History objects</a>
+ <a class="list-group-item" href="#bandwidth">Bandwidth documents</a>
+ <a class="list-group-item" href="#weights">Weights documents</a>
+ <a class="list-group-item" href="#clients">Clients documents</a>
+ <a class="list-group-item" href="#uptime">Uptime documents</a>
+ <a class="list-group-item" href="#examples">Example usage</a>
+ </div>
+ </div>
+
+
+<h1>The Tor network status protocol <a href="#protocol" class="anchor">#</a></h1>
+
+<a id="general"></a><br>
+<h2>General <a href="#general" class="anchor">#</a></h2>
+
+<p>
+The Onionoo service is designed as a RESTful web service.
+Onionoo clients send HTTP GET requests to the Onionoo server which
+responds with JSON-formatted replies.
+Onionoo clients and their developers should follow a few rules:
+</p>
+
+<br>
+
+<h3>Compression</h3>
+<p>
+Clients should include an <strong>"Accept-Encoding:
+gzip"</strong> header in their requests and handle gzip-compressed
+responses.
+Only requests starting at a certain size will be compressed by the
+server.
+</p>
+
+<br>
+
+<h3>Caching</h3>
+<p>Clients should make use of the <strong>"Last-Modified"</strong>
+header of responses and include that timestamp in a
+<strong>"If-Modified-Since"</strong> header of subsequent requests.
+</p>
+
+<br>
+
+
+
+<div class="clearfix"></div>
+
+
+<h3>Response codes</h3>
+<p>
+Clients should handle response codes by
+distinguishing between client and server errors, and if there's a problem,
+informing their users about the kind of problem.
+The following response codes are used:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>200 OK</b>
+<p>
+The request was processed successfully.
+</p>
+</li>
+
+<li>
+<b>304 Not Modified</b>
+<p>
+Server data has not changed since the
+<strong>"If-Modified-Since"</strong> header included in the request.
+</p>
+</li>
+
+<li>
+<b>400 Bad Request</b>
+<p>
+The request for a known resource could not be processed because of bad
+syntax.
+This is most likely a client problem.
+</p>
+</li>
+
+<li>
+<b>404 Not Available</b>
+<p>
+The request could not be processed because the requested resource could
+not be found.
+This is most likely a client problem.
+</p>
+</li>
+
+<li>
+<b>500 Internal Server Error</b>
+<p>
+There is an unspecific problem with
+the server which the service operator may not yet be aware of.
+Please check if there's already a bug report for this problem, and if not,
+file one.
+</p>
+</li>
+
+<li>
+<b>503 Service Unavailable</b>
+<p>
+The server is temporarily down for
+maintenance, or there is a temporary problem with the server that the
+service operator is already aware of.
+Only file a bug report if this problem persists.
+</p>
+</li>
+
+</ul>
+
+
+<a id="versions"></a><br>
+<h2>Protocol versions <a href="#versions" class="anchor">#</a></h2>
+<p>
+There are plenty of reasons why we may have
+to change the protocol described here.
+Clients should be able to handle all valid JSON responses, ignoring
+unknown fields and not breaking horribly in case of missing fields.
+Protocol changes will be announced here by writing deprecated API parts with
+the label <span class="label label-warning">deprecated</span> and new parts
+with the label <span class="label label-primary">new</span>.
+Deprecated parts will be removed one month after their announcement.
+</p>
+
+<p>All responses contain a <strong>"version"</strong> string that
+indicates whether clients can parse the document or not.
+Version strings consist of a major and a minor version number.
+The major version number is raised when previously required fields are
+dropped or turned into optional fields, when request parameters or
+response documents are removed, or when there are structural changes.
+The minor version number is raised when new fields, request parameters, or
+response documents are added or optional fields are dropped.
+If clients support the same major version given in a response but only a
+lower minor version, they should be able to parse the document but may not
+understand all fields.
+If clients support a lower major version, they should not attempt to parse
+a document, because there may be backward-incompatible changes.</p>
+
+<p>Responses may also contain the optional
+<strong>"next_major_version_scheduled"</strong> field that announces when
+the next major version is scheduled to be deployed.
+Clients should inform their users that they should upgrade to the next
+major protocol version before the provided date.</p>
+
+<p>The following versions have been used in the past six months or are
+scheduled to be deployed in the next months:</p>
+
+<ul>
+<li><strong>1.0</strong>: First assigned version number on August 31,
+2014.</li>
+<li><strong>1.1</strong>: Added optional "next_major_version_scheduled"
+field on September 16, 2014.</li>
+<li><strong>1.2</strong>: Added qualified search terms to "search"
+parameter on October 17, 2014.</li>
+<li><strong>2.0</strong>: Extended search parameter to base64-encoded
+fingerprints on November 15, 2014.</li>
+<li><strong>2.1</strong>: Removed optional "advertised_bandwidth_fraction"
+field from details documents and optional "advertised_bandwidth" and
+"advertised_bandwidth_fraction" fields from weights documents on November
+16, 2014.</li>
+<li><strong>2.2</strong>: Removed optional "pool_assignment" field and
+added "transports" field to bridge details documents on December 8,
+2014.</li>
+<li><strong>2.3</strong>: Added optional "flags" field to uptime
+documents on March 22, 2015.</li>
+<li><strong>2.4</strong>: Added optional "effective_family" field to
+details documents on July 3, 2015.</li>
+<li><strong>2.5</strong>: Added optional "measured" field to details
+documents on August 13, 2015.</li>
+<li><strong>2.6</strong>: Added optional "alleged_family" and
+"indirect_family" fields and deprecated optional "family" field in details
+documents on August 25, 2015.</li>
+<li><strong>3.0</strong>: Extended search parameter to match any 4 hex
+characters of a space-separated fingerprint on November 15, 2015.</li>
+<li><strong>3.1</strong>: Removed optional "family" field on January 18,
+2016.</li>
+<li><strong>3.2</strong>: Extended order parameter to "first_seen" and
+added response meta data fields "relays_skipped", "relays_truncated",
+"bridges_skipped", and "bridges_truncated" on January 27, 2017.</li>
+<li><strong>4.0</strong>: Extended search parameter to not require
+leading or enclosing square brackets around IPv6 addresses anymore on
+February 28, 2017.</li>
+</ul>
+
+
+
+<a id="methods"></a><br>
+<h2>Methods <a href="#methods" class="anchor">#</a></h2>
+
+<p>
+The following methods each return a single document containing zero or
+more objects of relays and/or bridges.
+By default, all relays and bridges are included that have been running in
+the past week.
+</p>
+
+<div class="responsive-table">
+ <table class="table table-striped">
+ <thead>
+ <tr>
+ <th class="method">Method</th>
+ <th class="url">URL</th>
+ <th class="description">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td data-title="Method" >GET</td>
+ <td data-title="URL" >https://onionoo.torproject.org/summary</td>
+ <td data-title="Description" >returns a <a href="#summary">summary document</a></td>
+ </tr>
+ <tr>
+ <td data-title="Method" >GET</td>
+ <td data-title="URL" >https://onionoo.torproject.org/details</td>
+ <td data-title="Description" >returns a <a href="#details">details document</a></td>
+ </tr>
+ <tr>
+ <td data-title="Method" >GET</td>
+ <td data-title="URL" >https://onionoo.torproject.org/bandwidth</td>
+ <td data-title="Description" >returns a <a href="#bandwidth">bandwidth document</a></td>
+ </tr>
+ <tr>
+ <td data-title="Method" >GET</td>
+ <td data-title="URL" >https://onionoo.torproject.org/weights</td>
+ <td data-title="Description" >returns a <a href="#weights">weights document</a></td>
+ </tr>
+ <tr>
+ <td data-title="Method" >GET</td>
+ <td data-title="URL" >https://onionoo.torproject.org/clients</td>
+ <td data-title="Description" >returns a <a href="#clients">clients document</a></td>
+ </tr>
+ <tr>
+ <td data-title="Method" >GET</td>
+ <td data-title="URL" >https://onionoo.torproject.org/uptime</td>
+ <td data-title="Description" >returns an <a href="#uptime">uptime document</a></td>
+ </tr>
+
+ </tbody>
+ </table>
+</div>
+
+
+
+<h3>Parameters</h3>
+<p>
+Each of the methods can be parameterized to select only a subset of relay
+and/or bridge documents that are currently running or that have been
+running in the past week.
+(The <strong>fingerprint</strong> parameter is special here, because it
+allows selecting a specific relay or bridge, regardless of whether it has
+been running in the past week.)
+If multiple parameters are specified, they are combined using a logical
+AND operation, meaning that only the intersection of relays and bridges
+matching all parameters is returned.
+If the same parameter is specified more than once, only the first
+parameter value is considered.
+</p>
+
+<ul class="properties">
+
+<li>
+<b>type</b>
+<p>
+Return only relay (parameter value
+<strong>relay</strong>) or only bridge documents (parameter value
+<strong>bridge</strong>).
+Parameter values are case-insensitive.
+</p>
+</li>
+
+<li>
+<b>running</b>
+<p>
+Return only running (parameter value
+<strong>true</strong>) or only non-running relays and/or bridges
+(paramter value
+<strong>false</strong>).
+Parameter values are case-insensitive.
+</p>
+</li>
+
+<li>
+<b>search</b>
+<p>
+Return only (1) relays with the parameter value matching (part of a)
+nickname, (possibly $-prefixed) beginning of a hex-encoded fingerprint,
+any 4 hex characters of a space-separated fingerprint, beginning of a
+base64-encoded fingerprint without trailing equal signs, or beginning of
+an IP address (possibly enclosed in square brackets in case of IPv6),
+(2) bridges with (part of a) nickname or (possibly
+$-prefixed) beginning of a hashed hex-encoded fingerprint, and (3) relays
+and/or bridges matching a given qualified search term.
+Searches by relay IP address include all known addresses used for onion
+routing and for exiting to the Internet.
+Searches for beginnings of IP addresses are performed on textual
+representations of canonical IP address forms, so that searches using CIDR
+notation or non-canonical forms will return empty results.
+Searches are case-insensitive, except for base64-encoded fingerprints.
+If multiple search terms are given, separated by spaces, the intersection
+of all relays and bridges matching all search terms will be returned.
+Complete hex-encoded fingerprints should always be hashed using SHA-1,
+regardless of searching for a relay or a bridge, in order to not
+accidentally leak non-hashed bridge fingerprints in the URL.
+Qualified search terms have the form "key:value" (without double quotes)
+with "key" being one of the parameters listed here except for "search",
+"fingerprint", "order", "limit", "offset", and "fields", and "value" being
+the string that will internally be passed to that parameter.
+</p>
+</li>
+
+<li>
+<b>lookup</b>
+<p>
+Return only the relay with the parameter
+value matching the fingerprint or the bridge with the parameter value
+matching the hashed fingerprint.
+Fingerprints should always be hashed using SHA-1, regardless of looking up
+a relay or a bridge, in order to not accidentally leak non-hashed bridge
+fingerprints in the URL.
+Lookups only work for full fingerprints or hashed fingerprints consisting
+of 40 hex characters.
+Lookups are case-insensitive.
+</p>
+</li>
+
+<li>
+<b>fingerprint</b>
+<p>
+Return only the relay with the parameter value matching the fingerprint
+or the bridge with the parameter value matching the hashed fingerprint.
+Fingerprints must consist of 40 hex characters, case does not matter.
+This parameter is quite similar to the <strong>lookup</strong> parameter
+with two exceptions:
+(1) the provided relay fingerprint or hashed bridge fingerprint <i>must
+not</i> be hashed (again) using SHA-1;
+(2) the response will contain any matching relay or bridge regardless of
+whether they have been running in the past week.
+</p>
+</li>
+
+<li>
+<b>country</b>
+<p>
+Return only relays which are located in the
+given country as identified by a two-letter country code.
+Filtering by country code is case-insensitive.
+</p>
+</li>
+
+<li>
+<b>as</b>
+<p>
+Return only relays which are located in the
+given autonomous system (AS) as identified by the AS number (with or
+without preceding "AS" part).
+Filtering by AS number is case-insensitive.
+</p>
+</li>
+
+<li>
+<b>flag</b>
+<p>
+Return only relays which have the
+given relay flag assigned by the directory authorities.
+Note that if the flag parameter is specified more than once, only the
+first parameter value will be considered.
+Filtering by flag is case-insensitive.
+</p>
+</li>
+
+<li>
+<b>first_seen_days</b>
+<p>
+Return only relays or bridges which
+have first been seen during the given range of days ago.
+A parameter value "x-y" with x <= y returns relays or bridges that have
+first been seen at least x and at most y days ago.
+Accepted short forms are "x", "x-", and "-y" which are interpreted as
+"x-x", "x-infinity", and "0-y".
+</p>
+</li>
+
+<li>
+<b>last_seen_days</b>
+<p>
+Return only relays or bridges which
+have last been seen during the given range of days ago.
+A parameter value "x-y" with x <= y returns relays or bridges that have
+last been seen at least x and at most y days ago.
+Accepted short forms are "x", "x-", and "-y" which are interpreted as
+"x-x", "x-infinity", and "0-y".
+Note that relays and bridges that haven't been running in the past week
+are not included in results, so that setting x to 8 or higher will lead to
+an empty result set.
+</p>
+</li>
+
+<li>
+<b>contact</b>
+<p>
+Return only relays with the parameter value
+matching (part of) the contact line.
+If the parameter value contains spaces, only relays are returned which
+contain all space-separated parts in their contact line.
+Only printable ASCII characters are permitted in the parameter value,
+some of which need to be percent-encoded (# as %23, % as %25, & as
+%26, + as %2B, and / as %2F).
+Comparisons are case-insensitive.
+</p>
+</li>
+
+<li>
+<b>family</b>
+<p>
+Return only the relay whose fingerprint matches the parameter value and
+all relays that this relay has listed in its family by fingerprint and
+that in turn have listed this relay in their family by fingerprint.
+If relays have listed other relays in their family by nickname, those
+family relationships will not be considered, regardless of whether they
+have the Named flag or not.
+The provided relay fingerprint must consist of 40 hex characters where
+case does not matter, and it must not be hashed using SHA-1.
+Bridges are not contained in the result, regardless of whether they define
+a family.
+</p>
+</li>
+
+</ul>
+
+<p>
+Response documents can be reduced in size by requesting only a subset
+of contained fields.
+</p>
+
+<ul class="properties">
+
+<li>
+<b>fields</b>
+<p>
+Comma-separated list of fields that will be
+included in the result.
+So far, only top-level fields in relay or bridge objects of details
+documents can be specified, e.g.,
+<strong>nickname,hashed_fingerprint</strong>.
+If the fields parameter is provided, all other fields which are not
+contained in the provided list will be removed from the result.
+Field names are case-insensitive.
+</p>
+</li>
+
+</ul>
+
+<p>
+Relay and/or bridge documents in the response can be ordered and
+limited by providing further parameters.
+If the same parameter is specified more than once, only the first
+parameter value is considered.
+</p>
+
+<ul class="properties">
+
+<li>
+<b>order</b>
+<p>
+Re-order results by a comma-separated list
+of fields in ascending or descending order.
+Results are first ordered by the first list element, then by the second,
+and so on.
+Possible fields for ordering are: <strong>consensus_weight</strong> and
+<strong>first_seen</strong>.
+Field names are case-insensitive.
+Ascending order is the default; descending order is selected by prepending
+fields with a minus sign (<strong>-</strong>).
+Field names can be listed at most once in either ascending or descending
+order.
+Relays or bridges which don't have any value for a field to be ordered by
+are always appended to the end, regardless or sorting order.
+The ordering is defined independent of the requested document type and
+does not require the ordering field to be contained in the document.
+If no <strong>order</strong> parameter is given, ordering of results is
+undefined.
+</p>
+</li>
+
+<li>
+<b>offset</b>
+<p>
+Skip the given number of relays and/or
+bridges.
+Relays are skipped first, then bridges.
+Non-positive <strong>offset</strong> values are treated as zero and don't
+change the
+result.
+</p>
+</li>
+
+<li>
+<b>limit</b>
+<p>
+Limit result to the given number of
+relays and/or bridges.
+Relays are kept first, then bridges.
+Non-positive <strong>limit</strong> values are treated as zero and lead
+to an empty
+result.
+When used together with <strong>offset</strong>, the offsetting step
+precedes the
+limiting step.
+</p>
+</li>
+
+</ul>
+
+
+<a id="responses"></a><br>
+<h2>Responses <a href="#responses" class="anchor">#</a></h2>
+
+<p>Responses all have the same structure, regardless of requested
+method and provided parameters.
+Responses contain the following fields:</p>
+
+<ul class="properties">
+
+<li>
+<b>version</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+Onionoo protocol version string.
+</p>
+</li>
+
+<li>
+<b>next_major_version_scheduled</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+UTC date (YYYY-MM-DD) when the next major protocol version is scheduled to
+be deployed.
+Omitted if no major protocol changes are planned.
+</p>
+</li>
+
+<li>
+<b>relays_published</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) when the last known relay network
+status consensus started being valid.
+Indicates how recent the relay objects in this document are.
+</p>
+</li>
+
+<li>
+<b>relays_skipped <span class="label label-primary">new</span></b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Number of skipped relays as requested by a positive "offset" parameter
+value.
+Omitted if zero.
+<span class="blue">Added on January 27, 2017.</span>
+</p>
+</li>
+
+<li>
+<b>relays</b>
+<code class="typeof">array of objects</code>
+<span class="required-true">required</span>
+<p>
+Array of relay objects as specified below.
+</p>
+</li>
+
+<li>
+<b>relays_truncated <span class="label label-primary">new</span></b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Number of truncated relays as requested by a positive "limit"
+parameter value.
+Omitted if zero.
+<span class="blue">Added on January 27, 2017.</span>
+</p>
+</li>
+
+<li>
+<b>bridges_published</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) when
+the last known bridge network status was published.
+Indicates how recent the bridge objects in this document are.
+</p>
+</li>
+
+<li>
+<b>bridge_skipped <span class="label label-primary">new</span></b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Number of skipped bridges as requested by a positive "offset"
+parameter value.
+Omitted if zero.
+<span class="blue">Added on January 27, 2017.</span>
+</p>
+</li>
+
+<li>
+<b>bridges</b>
+<code class="typeof">array of objects</code>
+<span class="required-true">required</span>
+<p>
+Array of bridge objects as specified below.
+</p>
+</li>
+
+<li>
+<b>bridges_truncated <span class="label label-primary">new</span></b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Number of truncated bridges as requested by a positive "limit"
+parameter value.
+Omitted if zero.
+<span class="blue">Added on January 27, 2017.</span>
+</p>
+</li>
+
+</ul>
+
+
+<a id="summary"></a><br>
+<h2>Summary documents <a href="#summary" class="anchor">#</a>
+<span class="request-response">
+<a href="summary?limit=4">example request</a>
+</span>
+</h2>
+
+<p>Summary documents contain short summaries of relays with nicknames,
+fingerprints, IP addresses, and running information as well as bridges
+with hashed fingerprints and running information.</p>
+
+<h3>Relay summary objects</h3>
+
+<p>
+Relay summary objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>n</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Relay nickname consisting of 1–19 alphanumerical characters.
+Omitted if the relay nickname is <strong>"Unnamed"</strong>.
+</p>
+</li>
+
+<li>
+<b>f</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+Relay fingerprint consisting of 40 upper-case hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>a</b>
+<code class="typeof">array of strings</code>
+<span class="required-true">required</span>
+<p>
+Array of IPv4 or IPv6 addresses where the relay accepts
+onion-routing connections or which the relay used to exit to the Internet
+in the past 24 hours.
+The first address is the primary onion-routing address that the relay used
+to register in the network, subsequent addresses are in arbitrary order.
+IPv6 hex characters are all lower-case.
+</p>
+</li>
+
+<li>
+<b>r</b>
+<code class="typeof">boolean</code>
+<span class="required-true">required</span>
+<p>
+Boolean field saying whether this relay was listed as
+running in the last relay network status consensus.
+</p>
+</li>
+
+</ul>
+
+<h3>Bridge summary objects</h3>
+
+<p>
+Bridge summary objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>n</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Bridge nickname consisting of 1–19 alphanumerical characters.
+Omitted if the bridge nickname is <strong>"Unnamed"</strong>.
+</p>
+</li>
+
+<li>
+<b>h</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+SHA-1 hash of the bridge fingerprint consisting of 40
+upper-case hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>r</b>
+<code class="typeof">boolean</code>
+<span class="required-true">required</span>
+<p>
+Boolean field saying whether this bridge was listed as
+running in the last bridge network status.
+</p>
+</li>
+
+</ul>
+
+
+<a id="details"></a><br>
+<h2>Details documents <a href="#details" class="anchor">#</a>
+<span class="request-response">
+<a href="details?limit=4">example request</a>
+</span>
+</h2>
+
+<p>
+Details documents are based on network statuses published by the Tor
+directories, server descriptors published by relays and bridges, and data
+published by Tor network services TorDNSEL and BridgeDB.
+Details documents use the most recently published data from these sources,
+which may lead to contradictions between fields based on different sources
+in rare edge cases.
+</p>
+
+<h3>Relay details objects</h3>
+
+<p>
+Relay details objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>nickname</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Relay nickname consisting of 1–19 alphanumerical characters.
+Omitted if the relay nickname is <strong>"Unnamed"</strong>.
+</p>
+</li>
+
+<li>
+<b>fingerprint</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+Relay fingerprint consisting of 40 upper-case
+hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>or_addresses</b>
+<code class="typeof">array of strings</code>
+<span class="required-true">required</span>
+<p>
+Array of IPv4 or IPv6 addresses and TCP ports
+or port lists where the relay accepts onion-routing connections.
+The first address is the primary onion-routing address that the relay used
+to register in the network, subsequent addresses are in arbitrary order.
+IPv6 hex characters are all lower-case.
+</p>
+</li>
+
+<li>
+<b>exit_addresses</b>
+<code class="typeof">array of strings</code>
+<span class="required-false">optional</span>
+<p>
+Array of IPv4 or IPv6 addresses that the
+relay used to exit to the Internet in the past 24 hours.
+IPv6 hex characters are all lower-case.
+Only those addresses are listed that are different from onion-routing
+addresses.
+Omitted if array is empty.
+</p>
+</li>
+
+<li>
+<b>dir_address</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+IPv4 address and TCP port where the relay
+accepts directory connections.
+Omitted if the relay does not accept directory connections.
+</p>
+</li>
+
+<li>
+<b>last_seen</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) when this
+relay was last seen in a network status consensus.
+</p>
+</li>
+
+<li>
+<b>last_changed_address_or_port</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+UTC timestamp (YYYY-MM-DD
+hh:mm:ss) when this relay last stopped announcing an IPv4 or IPv6 address
+or TCP port where it previously accepted onion-routing or directory
+connections.
+This timestamp can serve as indicator whether this relay would be a
+suitable fallback directory.
+</p>
+</li>
+
+<li>
+<b>first_seen</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) when this
+relay was first seen in a network status consensus.
+</p>
+</li>
+
+<li>
+<b>running</b>
+<code class="typeof">boolean</code>
+<span class="required-true">required</span>
+<p>
+Boolean field saying whether this relay was listed as
+running in the last relay network status consensus.
+</p>
+</li>
+
+<li>
+<b>hibernating</b>
+<code class="typeof">boolean</code>
+<span class="required-false">optional</span>
+<p>
+Boolean field saying whether this relay indicated that it is hibernating
+in its last known server descriptor.
+This information may be helpful to decide whether a relay that is not
+running anymore has reached its accounting limit and has not dropped out
+of the network for another, unknown reason.
+Omitted if either the relay is not hibernating, or if no information is
+available about the hiberation status of the relay.
+</p>
+</li>
+
+<li>
+<b>flags</b>
+<code class="typeof">array of strings</code>
+<span class="required-false">optional</span>
+<p>
+Array of relay flags that the directory authorities
+assigned to this relay.
+May be omitted if empty.
+</p>
+</li>
+
+<li>
+<b>country</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Two-letter lower-case country code as found in a
+GeoIP database by resolving the relay's first onion-routing IP address.
+Omitted if the relay IP address could not be found in the GeoIP
+database.
+</p>
+</li>
+
+<li>
+<b>country_name</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Country name as found in a GeoIP database by
+resolving the relay's first onion-routing IP address.
+Omitted if the relay IP address could not be found in the GeoIP
+database, or if the GeoIP database did not contain a country name.
+</p>
+</li>
+
+<li>
+<b>region_name</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Region name as found in a GeoIP database by
+resolving the relay's first onion-routing IP address.
+Omitted if the relay IP address could not be found in the GeoIP
+database, or if the GeoIP database did not contain a region name.
+</p>
+</li>
+
+<li>
+<b>city_name</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+City name as found in a
+GeoIP database by resolving the relay's first onion-routing IP address.
+Omitted if the relay IP address could not be found in the GeoIP
+database, or if the GeoIP database did not contain a city name.
+</p>
+</li>
+
+<li>
+<b>latitude</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Latitude as found in a GeoIP database by resolving
+the relay's first onion-routing IP address.
+Omitted if the relay IP address could not be found in the GeoIP
+database.
+</p>
+</li>
+
+<li>
+<b>longitude</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Longitude as found in a GeoIP database by
+resolving the relay's first onion-routing IP address.
+Omitted if the relay IP address could not be found in the GeoIP
+database.
+</p>
+</li>
+
+<li>
+<b>as_number</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+AS number as found in an AS database by
+resolving the relay's first onion-routing IP address.
+AS number strings start with "AS", followed directly by the AS number.
+Omitted if the relay IP address could not be found in the AS
+database.
+</p>
+</li>
+
+<li>
+<b>as_name</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+AS name as found in an AS database by resolving the
+relay's first onion-routing IP address.
+Omitted if the relay IP address could not be found in the AS
+database.
+</p>
+</li>
+
+<li>
+<b>consensus_weight</b>
+<code class="typeof">number</code>
+<span class="required-true">required</span>
+<p>
+Weight assigned to this relay by the
+directory authorities that clients use in their path selection algorithm.
+The unit is arbitrary; currently it's kilobytes per second, but that might
+change in the future.
+</p>
+</li>
+
+<li>
+<b>host_name</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Host name as found in a reverse DNS lookup of the
+relay IP address.
+This field is updated at most once in 12 hours, unless the relay IP
+address changes.
+Omitted if the relay IP address was not looked up or if no lookup request
+was successful yet.
+</p>
+</li>
+
+<li>
+<b>last_restarted</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) when the
+relay was last (re-)started.
+Missing if router descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>bandwidth_rate</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Average bandwidth
+in bytes per second that this relay is willing to sustain over long
+periods.
+Missing if router descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>bandwidth_burst</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Bandwidth in bytes
+per second that this relay is willing to sustain in very short intervals.
+Missing if router descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>observed_bandwidth</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Bandwidth
+estimate in bytes per second of the capacity this relay can handle.
+The relay remembers the maximum bandwidth sustained output over any ten
+second period in the past day, and another sustained input.
+The "observed_bandwidth" value is the lesser of these two numbers.
+Missing if router descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>advertised_bandwidth</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Bandwidth in bytes per second that this
+relay is willing and capable to provide.
+This bandwidth value is the minimum of <strong>bandwidth_rate</strong>,
+<strong>bandwidth_burst</strong>, and <strong>observed_bandwidth</strong>.
+Missing if router descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>exit_policy</b>
+<code class="typeof">array of strings</code>
+<span class="required-false">optional</span>
+<p>
+Array of exit-policy lines.
+Missing if router descriptor containing this information cannot be
+found.
+May contradict the <strong>"exit_policy_summary"</strong> field in a rare
+edge case: this happens when the relay changes its exit policy after the
+directory authorities summarized the previous exit policy.
+</p>
+</li>
+
+<li>
+<b>exit_policy_summary</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Summary
+version of the relay's exit policy containing a dictionary with either an
+"accept" or a "reject" element.
+If there is an "accept" ("reject") element, the relay accepts (rejects)
+all TCP ports or port ranges in the given list for most IP addresses and
+rejects (accepts) all other ports.
+May contradict the <strong>"exit_policy"</strong> field in a rare edge
+case: this happens when the relay changes its exit policy after the
+directory authorities summarized the previous exit policy.
+</p>
+</li>
+
+<li>
+<b>exit_policy_v6_summary</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Summary version of the relay's IPv6 exit policy containing a dictionary
+with either an "accept" or a "reject" element.
+If there is an "accept" ("reject") element, the relay accepts (rejects)
+all TCP ports or port ranges in the given list for most IP addresses and
+rejects (accepts) all other ports.
+Missing if the relay rejects all connections to IPv6 addresses.
+May contradict the <strong>"exit_policy_summary"</strong> field in a rare
+edge case: this happens when the relay changes its exit policy after the
+directory authorities summarized the previous exit policy.
+</p>
+</li>
+
+<li>
+<b>contact</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Contact address of the relay operator.
+Omitted if empty or if descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>platform</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Platform string containing operating system and Tor
+version details.
+Omitted if empty or if descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>recommended_version</b>
+<code class="typeof">boolean</code>
+<span class="required-false">optional</span>
+<p>
+Boolean field saying whether the Tor software version of this relay is
+recommended by the directory authorities or not.
+Omitted if either the directory authorities did not recommend versions, or
+the relay did not report which version it runs.
+</p>
+</li>
+
+<li>
+<b>effective_family</b>
+<code class="typeof">array of strings</code>
+<span class="required-false">optional</span>
+<p>
+Array of $-prefixed fingerprints of relays that are in an effective,
+mutual family relationship with this relay.
+These relays are part of this relay's family and they consider this relay
+to be part of their family.
+Omitted if empty or if descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>alleged_family</b>
+<code class="typeof">array of strings</code>
+<span class="required-false">optional</span>
+<p>
+Array of $-prefixed fingerprints of relays that are not in an effective,
+mutual family relationship with this relay.
+These relays are part of this relay's family but they don't consider this
+relay to be part of their family.
+Omitted if empty or if descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>indirect_family</b>
+<code class="typeof">array of strings</code>
+<span class="required-false">optional</span>
+<p>
+Array of $-prefixed fingerprints of relays that are not in an effective,
+mutual family relationship with this relay but that can be reached by
+following effective, mutual family relationships starting at this relay.
+Omitted if empty or if descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>consensus_weight_fraction</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Fraction of this relay's consensus weight compared to the sum of all
+consensus weights in the network.
+This fraction is a very rough approximation of the probability of this
+relay to be selected by clients.
+Omitted if the relay is not running.
+</p>
+</li>
+
+<li>
+<b>guard_probability</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Probability of this relay to be selected for the guard position.
+This probability is calculated based on consensus weights, relay flags,
+and bandwidth weights in the consensus.
+Path selection depends on more factors, so that this probability can only
+be an approximation.
+Omitted if the relay is not running, or the consensus does not contain
+bandwidth weights.
+</p>
+</li>
+
+<li>
+<b>middle_probability</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Probability of this relay to be selected for the middle position.
+This probability is calculated based on consensus weights, relay flags,
+and bandwidth weights in the consensus.
+Path selection depends on more factors, so that this probability can only
+be an approximation.
+Omitted if the relay is not running, or the consensus does not contain
+bandwidth weights.
+</p>
+</li>
+
+<li>
+<b>exit_probability</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Probability of this relay to be selected for the exit position.
+This probability is calculated based on consensus weights, relay flags,
+and bandwidth weights in the consensus.
+Path selection depends on more factors, so that this probability can only
+be an approximation.
+Omitted if the relay is not running, or the consensus does not contain
+bandwidth weights.
+</p>
+</li>
+
+<li>
+<b>measured</b>
+<code class="typeof">boolean</code>
+<span class="required-false">optional</span>
+<p>
+Boolean field saying whether the consensus weight of this relay is based
+on a threshold of 3 or more measurements by Tor bandwidth authorities.
+Omitted if the network status consensus containing this relay does not
+contain measurement information.
+</p>
+</li>
+
+</ul>
+
+<h3>Bridge details objects</h3>
+
+<p>
+Bridge details objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>nickname</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Bridge nickname consisting of 1–19
+alphanumerical characters.
+Omitted if the bridge nickname is <strong>"Unnamed"</strong>.
+</p>
+</li>
+
+<li>
+<b>hashed_fingerprint</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+SHA-1 hash of the bridge fingerprint
+consisting of 40 upper-case hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>or_addresses</b>
+<code class="typeof">array of strings</code>
+<span class="required-true">required</span>
+<p>
+Array of sanitized IPv4 or IPv6 addresses and
+TCP ports or port lists where the bridge accepts onion-routing
+connections.
+The first address is the primary onion-routing address that the bridge
+used to register in the network, subsequent addresses are in arbitrary
+order.
+IPv6 hex characters are all lower-case.
+Sanitized IP addresses are always in <strong>10/8</strong> or
+<strong>[fd9f:2e19:3bcf/48]</strong> IP networks and are only useful to
+learn which
+IP version the bridge uses and to detect whether the bridge changed its
+address.
+Sanitized IP addresses always change on the 1st of every month at 00:00:00
+UTC, regardless of the bridge actually changing its IP address.
+TCP ports are not sanitized.
+</p>
+</li>
+
+<li>
+<b>last_seen</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) when this
+bridge was last seen in a bridge network status.
+</p>
+</li>
+
+<li>
+<b>first_seen</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) when this
+bridge was first seen in a bridge network status.
+</p>
+</li>
+
+<li>
+<b>running</b>
+<code class="typeof">boolean</code>
+<span class="required-true">required</span>
+<p>
+Boolean field saying whether this bridge was listed
+as running in the last bridge network status.
+</p>
+</li>
+
+<li>
+<b>flags</b>
+<code class="typeof">array of strings</code>
+<span class="required-false">optional</span>
+<p>
+Array of relay flags that the bridge authority
+assigned to this bridge.
+May be omitted if empty.
+</p>
+</li>
+
+<li>
+<b>last_restarted</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) when the
+bridge was last (re-)started.
+Missing if router descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>advertised_bandwidth</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Bandwidth in bytes per second that this
+bridge is willing and capable to provide.
+This bandwidth value is the minimum of <strong>bandwidth_rate</strong>,
+<strong>bandwidth_burst</strong>, and <strong>observed_bandwidth</strong>.
+Missing if router descriptor containing this information cannot be
+found.
+</p>
+</li>
+
+<li>
+<b>platform</b>
+<code class="typeof">string</code>
+<span class="required-false">optional</span>
+<p>
+Platform string containing operating system and Tor
+version details.
+Omitted if not provided by the bridge or if descriptor containing this
+information cannot be found.
+</p>
+</li>
+
+<li>
+<b>transports</b>
+<code class="typeof">array of strings</code>
+<span class="required-false">optional</span>
+<p>
+Array of (pluggable) transport names supported by this bridge.
+</p>
+</li>
+
+</ul>
+
+
+<a id="history"></a><br>
+<h2>History objects <a href="#history" class="anchor">#</a></h2>
+
+<p>
+History objects are no documents by themselves, but are contained in
+subsequent documents.
+<p>
+
+<h3>Graph history objects</h3>
+
+<p>
+Graph history objects contain the following fields:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>first</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) of the first data point, or more
+specifically the interval midpoint of the first interval.
+</p>
+</li>
+
+<li>
+<b>last</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+UTC timestamp (YYYY-MM-DD hh:mm:ss) of the last data point, or more
+specifically the interval midpoint of the last interval.
+</p>
+</li>
+
+<li>
+<b>interval</b>
+<code class="typeof">number</code>
+<span class="required-true">required</span>
+<p>
+Time interval between two data points in seconds.
+</p>
+</li>
+
+<li>
+<b>factor</b>
+<code class="typeof">number</code>
+<span class="required-true">required</span>
+<p>
+Factor by which subsequent data values need to be multiplied to obtain
+original values.
+The idea is to reduce document size while still providing sufficient
+detail for very different data scales.
+</p>
+</li>
+
+<li>
+<b>count</b>
+<code class="typeof">number</code>
+<span class="required-false">optional</span>
+<p>
+Number of provided data points, included mostly for debugging purposes.
+Can also be derived from the number of elements in the subsequent array.
+</p>
+</li>
+
+<li>
+<b>values</b>
+<code class="typeof">array of numbers</code>
+<span class="required-true">required</span>
+<p>
+Array of normalized values between 0 and 999.
+May contain null values.
+Contains at least two subsequent non-null values to enable drawing of line
+graphs.
+</p>
+</li>
+
+</ul>
+
+
+<a id="bandwidth"></a><br>
+<h2>Bandwidth documents <a href="#bandwidth" class="anchor">#</a>
+<span class="request-response">
+<a href="bandwidth?limit=4">example request</a>
+</span>
+</h2>
+
+<p>
+Bandwidth documents contain aggregate statistics of a relay's or
+bridge's consumed bandwidth for different time intervals.
+Bandwidth documents are only updated when a relay or bridge publishes a
+new server descriptor, which may take up to 18 hours during normal
+operation.
+</p>
+
+<h3>Relay bandwidth objects</h3>
+
+<p>
+Relay bandwidth objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>fingerprint</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+Relay fingerprint consisting of 40 upper-case
+hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>write_history</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing graph history objects with written bytes for different
+time periods.
+Keys are string representation of the time period covered by the graph
+history object.
+Keys are fixed strings <strong>"3_days"</strong>,
+<strong>"1_week"</strong>, <strong>"1_month"</strong>,
+<strong>"3_months"</strong>, <strong>"1_year"</strong>, and
+<strong>"5_years"</strong>.
+Keys refer to the last known bandwidth history of a relay, not to the time
+when the bandwidth document was published.
+A graph history object is only contained if the time period it covers is
+not already contained in another graph history object with shorter time
+period and higher data resolution.
+Similarly, a graph history object is excluded if the relay did not provide
+bandwidth histories on the required level of detail.
+The unit is bytes per second.
+Contained graph history objects may contain null values if the relay did
+not provide any bandwidth data or only data for less than 20% of a given
+time period.
+</p>
+</li>
+
+<li>
+<b>read_history</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing graph history objects with read bytes for different time
+periods.
+The specification of graph history objects is similar to those in the
+<strong>write_history</strong> field.
+</p>
+</li>
+
+</ul>
+
+<h3>Bridge bandwidth objects</h3>
+
+<p>
+Bridge bandwidth objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>fingerprint</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+SHA-1 hash of the bridge fingerprint consisting
+of 40 upper-case hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>write_history</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing graph history objects with written bytes for different
+time periods.
+The specification of graph history objects is similar to those in the
+<strong>write_history</strong> field of <strong>relays</strong>.
+</p>
+</li>
+
+<li>
+<b>read_history</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing graph history objects with read bytes for different time
+periods.
+The specification of graph history objects is similar to those in the
+<strong>write_history</strong> field of <strong>relays</strong>.
+</p>
+</li>
+
+</ul>
+
+
+<a id="weights"></a><br>
+<h2>Weights documents <a href="#weights" class="anchor">#</a>
+<span class="request-response">
+<a href="weights?limit=4">example request</a>
+</span>
+</h2>
+
+<p>
+Weights documents contain aggregate statistics of a relay's probability
+to be selected by clients for building paths.
+Weights documents contain different time intervals and are available for
+relays only.
+</p>
+
+<h3>Relay weights objects</h3>
+
+<p>
+Relay weights objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>fingerprint</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+Relay fingerprint consisting of 40 upper-case
+hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>consensus_weight_fraction</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+History object containing the
+fraction of this relay's consensus weight compared to the sum of all
+consensus weights in the network.
+This fraction is a very rough approximation of the probability of this
+relay to be selected by clients.
+Keys are string representation of the time period covered by the graph
+history object.
+Keys are fixed strings <strong>"1_week"</strong>,
+<strong>"1_month"</strong>, <strong>"3_months"</strong>,
+<strong>"1_year"</strong>, and <strong>"5_years"</strong>.
+Keys refer to the last known weights history of a relay, not to the time
+when the weights document was published.
+A graph history object is only contained if the time period it covers is
+not already contained in another graph history object with shorter time
+period and higher data resolution.
+The unit is path-selection probability.
+Contained graph history objects may contain null values if the relay was
+running less than 20% of a given time period.
+</p>
+</li>
+
+<li>
+<b>guard_probability</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+History object containing the probability
+of this relay to be selected for the guard position.
+This probability is calculated based on consensus weights, relay flags,
+and bandwidth weights in the consensus.
+Path selection depends on more factors, so that this probability can only
+be an approximation.
+The specification of this history object is similar to that in the
+<strong>consensus_weight_fraction</strong> field above.
+</p>
+</li>
+
+<li>
+<b>middle_probability</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+History object containing the probability
+of this relay to be selected for the middle position.
+This probability is calculated based on consensus weights, relay flags,
+and bandwidth weights in the consensus.
+Path selection depends on more factors, so that this probability can only
+be an approximation.
+The specification of this history object is similar to that in the
+<strong>consensus_weight_fraction</strong> field above.
+</p>
+</li>
+
+<li>
+<b>exit_probability</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+History object containing the probability
+of this relay to be selected for the exit position.
+This probability is calculated based on consensus weights, relay flags,
+and bandwidth weights in the consensus.
+Path selection depends on more factors, so that this probability can only
+be an approximation.
+The specification of this history object is similar to that in the
+<strong>consensus_weight_fraction</strong> field above.
+</p>
+</li>
+
+<li>
+<b>consensus_weight</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+History object containing the absolute consensus weight of this relay.
+The specification of this history object is similar to that in the
+<strong>consensus_weight_fraction</strong> field above.
+</p>
+</li>
+
+</ul>
+
+
+<a id="clients"></a><br>
+<h2>Clients documents <a href="#clients" class="anchor">#</a>
+<span class="request-response">
+<a href="clients?limit=4">example request</a>
+</span>
+</h2>
+
+<p>
+Clients documents contain estimates of the average number of clients
+connecting to a bridge every day.
+There are no clients documents available for relays, just for bridges.
+Clients documents contain different time intervals and are available for
+bridges only.
+</p>
+
+<h3>Bridge clients objects</h3>
+
+<p>
+Bridge clients objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>fingerprint</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+SHA-1 hash of the bridge fingerprint consisting
+of 40 upper-case hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>average_clients</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing graph history objects with the average number of clients
+connecting to this bridge.
+Keys are string representation of the time period covered by the graph
+history object.
+Keys are fixed strings <strong>"1_week"</strong>,
+<strong>"1_month"</strong>, <strong>"3_months"</strong>,
+<strong>"1_year"</strong>, and <strong>"5_years"</strong>.
+Keys refer to the last known clients history of a bridge, not to the time
+when the clients document was published.
+A graph history object is only contained if the time period it covers
+is not already contained in another clients graph object with shorter
+time period and higher data resolution.
+The unit is number of clients.
+Contained graph history objects may contain null values if the bridge did
+not report client statistics for at least 50% of a given time period.
+Each graph history object contains the following additional key-value
+pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>countries <span class="label label-danger">beta</span></b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing fractions of clients by country in the considered time
+period.
+Keys are two-letter lower-case country codes as found in a GeoIP database.
+Values are numbers between 0 and 1 standing for the fraction of clients by
+country.
+A country is only included if at least 1% of clients came from this
+country.
+Omitted if the bridge did not report client statistics by country.
+<span class="red"><strong>BETA:</strong> This field breaks compatibility
+with the history objects contained in other documents pretty badly.
+It might be removed in the future without notice.</span>
+</p>
+</li>
+
+<li>
+<b>transports <span class="label label-danger">beta</span></b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing fractions of clients by transport in the considered time
+period.
+Keys are transport names, or <strong>"<OR>"</strong> for the default
+onion-routing transport protocol.
+Values are numbers between 0 and 1 standing for the fraction of clients by
+transport.
+Omitted if the bridge did not report client statistics by transport.
+<span class="red"><strong>BETA:</strong> This field breaks compatibility
+with the history objects contained in other documents pretty badly.
+It might be removed in the future without notice.</span>
+</p>
+</li>
+
+<li>
+<b>versions <span class="label label-danger">beta</span></b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing fractions of clients by IP version in the considered
+time period.
+Keys are either <strong>"v4"</strong> for IPv4 or <strong>"v6"</strong>
+for IPv6.
+Values are numbers between 0 and 1 standing for the fraction of clients by
+version.
+Omitted if the bridge did not report client statistics by IP version.
+<span class="red"><strong>BETA:</strong> This field breaks compatibility
+with the history objects contained in other documents pretty badly.
+It might be removed in the future without notice.</span>
+</p>
+</li>
+
+</ul>
+
+</li>
+
+</ul>
+
+
+<a id="uptime"></a><br>
+<h2>Uptime documents <a href="#uptime" class="anchor">#</a>
+<span class="request-response">
+<a href="uptime?limit=4">example request</a>
+</span>
+</h2>
+
+<p>
+Uptime documents contain fractional uptimes of relays and bridges.
+Uptime documents contain different time intervals and are available for
+relays and bridges.
+</p>
+
+<h3>Relay uptime objects</h3>
+
+<p>
+Relay uptime objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>fingerprint</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+Relay fingerprint consisting of 40 upper-case
+hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>uptime</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing graph history objects with the fractional uptime of this
+relay.
+Keys are string representation of the time period covered by the graph
+history object.
+Keys are fixed strings <strong>"1_week"</strong>,
+<strong>"1_month"</strong>, <strong>"3_months"</strong>,
+<strong>"1_year"</strong>, and <strong>"5_years"</strong>.
+Keys refer to the last known uptime history of a relay, not to the time
+when the uptime document was published.
+A graph history object is only contained if the time period it covers is
+not already contained in another graph history object with shorter time
+period and higher data resolution.
+The unit is fractional uptime from 0 to 1.
+Contained graph history objects may contain null values if less than 20%
+of network statuses have been processed for a given time period.
+</p>
+</li>
+
+<li>
+<b>flags</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing fractional times of this relay having relay flags
+assigned.
+Keys are flag names like <strong>"Running"</strong> or
+<strong>"Exit"</strong>, values are objects similar to the
+<strong>uptime</strong> field above, again with keys like
+<strong>"1_week"</strong> etc.
+If a relay never had a given relay flag assigned, no object is included
+for that flag.
+</p>
+</li>
+
+</ul>
+
+<h3>Bridge uptime objects</h3>
+
+<p>
+Bridge uptime objects contain the following key-value pairs:
+</p>
+
+<ul class="properties">
+
+<li>
+<b>fingerprint</b>
+<code class="typeof">string</code>
+<span class="required-true">required</span>
+<p>
+SHA-1 hash of the bridge fingerprint consisting
+of 40 upper-case hexadecimal characters.
+</p>
+</li>
+
+<li>
+<b>uptime</b>
+<code class="typeof">object</code>
+<span class="required-false">optional</span>
+<p>
+Object containing uptime history objects for different time periods.
+The specification of uptime history objects is similar to those in the
+<strong>uptime</strong> field of <strong>relays</strong>.
+</p>
+</li>
+
+</ul>
+
+
+<a id="examples"></a><br>
+<h2>Example usage <a href="#examples" class="anchor">#</a>
+</h2>
+
+<p>
+The following examples illustrate how to build requests for some trivial
+and some more complex use cases.
+While Onionoo is designed mainly for developers and not end users, there
+may be cases when it's easier to quickly write a specific query Onionoo
+rather than to find an Onionoo client that provides the desired
+information.
+</p>
+
+<p>
+<code>/summary?limit=4</code>
+(<a href="/summary?limit=4">view result</a>)
+</p>
+
+<p>
+This first query returns the first four summary documents that Onionoo can
+find.
+The <code>limit</code> parameter should always be used while developing
+new queries to avoid downloading huge responses.
+</p>
+
+<p>
+<code>/summary?limit=4&search=moria</code>
+(<a href="/summary?limit=4&search=moria">view result</a>)
+</p>
+
+<p>
+The second query restricts results to relays and bridges containing the
+string "moria" in one of a few searched fields.
+</p>
+
+<p>
+<code>/details?limit=4&search=moria</code>
+(<a href="/details?limit=4&search=moria">view result</a>)
+</p>
+
+<p>
+The third query switches from the short summary documents to the longer
+details documents containing, well, more details.
+</p>
+
+<p>
+<code>/details?limit=4&search=moria&fields=nickname</code>
+(<a href="/details?limit=4&search=moria&fields=nickname">view result</a>)
+</p>
+
+<p>
+The fourth query adds the <code>fields</code> parameter which removes all
+fields except the specified ones from the result.
+This parameter is only implemented for details documents.
+</p>
+
+<p>
+<code>/details?limit=4&search=moria&fields=nickname&order=-consensus_weight</code>
+(<a href="/details?limit=4&search=moria&fields=nickname&order=-consensus_weight">view result</a>)
+</p>
+
+<p>
+The fifth query sorts results by relay consensus weight from largest to
+smallest.
+</p>
+
+<p>
+Obviously, this query can be made even more complex by adding more
+parameters, and in some cases this is necessary and useful.
+Please refer to the protocol specification for details.
+</p>
+
+
+
+</div>
+
+
+
+
+
+
+
+
+ <div class="container-fluid" id="footer">
+
+ <div class="container no-gutter">
+ <div class="col-xs-6">
+ <p>
+ © 2017 The Tor Project
+ </p>
+ </div>
+ <div class="col-xs-6">
+ <p class="pull-right">
+
+ <a href="https://metrics.torproject.org/about.html#contact">Contact</a>
+
+ </p>
+ </div>
+ </div>
+
+ <div class="container small">
+
+ <p>Data on this site is freely available under a <a href="http://creativecommons.org/publicdomain/zero/1.0/">CC0 no copyright declaration</a>: To the extent possible under law, the Tor Project has waived all copyright and related or neighboring rights in the data. "Tor" and the "Onion Logo" are <a href="https://www.torproject.org/docs/trademark-faq.html.en">registered trademarks</a> of The Tor Project, Inc.</p>
+
+ </div>
+
+ </div><!-- /footer -->
+
+
+
+</div><!-- /wrapper -->
+
+</body>
+</html>
+
1
0
[metrics-web/master] Reorganize sources page into main and other sources.
by karsten@torproject.org 06 Jul '17
by karsten@torproject.org 06 Jul '17
06 Jul '17
commit 29526d99f7fea3e35af289c8d66613be653c79c6
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Sat Mar 18 22:39:39 2017 +0100
Reorganize sources page into main and other sources.
---
website/src/main/resources/web/WEB-INF/sources.jsp | 42 +++++-----------------
1 file changed, 9 insertions(+), 33 deletions(-)
diff --git a/website/src/main/resources/web/WEB-INF/sources.jsp b/website/src/main/resources/web/WEB-INF/sources.jsp
index b36d43f..301a2ea 100644
--- a/website/src/main/resources/web/WEB-INF/sources.jsp
+++ b/website/src/main/resources/web/WEB-INF/sources.jsp
@@ -17,51 +17,27 @@
<p>You're a data person and only trust the statistics that you doctored yourself? Here's all the data right from the source, doctor.</p>
</div>
- <div class="container tools">
- <h2>Network archives <a href="#archive" name="archive" class="anchor">#</a></h2>
- <p>We get our data from the network archives below.</p>
- <div class="row">
- <div class="col-md-3 col-sm-4 col-xs-6">
- <a href="https://collector.torproject.org/" target="_blank">
- <div class="logo" style="background-image:url(images/collector-logo.png);"></div>
- <h2>CollecTor</h2>
- <p>collects and archives data from various nodes and services in the public Tor network.</p>
- </a>
- </div>
- <div class="col-md-3 col-sm-4 col-xs-6">
- <a href="https://ooni.torproject.org/" target="_blank">
- <div class="logo" style="background-image:url(images/ooni-logo.png);"></div>
- <h2>OONI</h2>
- <p>detects censorship, surveillance, and traffic manipulation on the internet.</p>
- </a>
- </div>
- </div>
- </div>
-
<div class="container">
+ <h2>Main sources <a href="#main" name="main" class="anchor">#</a></h2>
+ <p>We get most of our data from the services below.</p>
<ul>
- <li><a href="https://webstats.torproject.org/" target="_blank"><code>webstats.torproject.org</code></a> collects logs from <code>torproject.org</code> web servers and provides them as a stripped-down version of Apache's "combined" log format without IP addresses, log times, HTTP parameters, referers, and user agent strings.</li>
+ <li><a href="collector.html">CollecTor</a> collects and archives data from various nodes and services in the public Tor network.</li>
+ <li><a href="stats.html">Statistics</a> used for visualizations on this site are available in the CSV format.</li>
+ <li><a href="onionoo.html">Onionoo</a> provides current and historical data about relays and bridges via a web-based API.</li>
</ul>
</div>
<div class="container">
- <h2>Measurement tools <a href="#measurement" name="measurement" class="anchor">#</a></h2>
- <p>The following tools perform active measurements in the Tor network.</p>
+ <h2>Other sources <a href="#other" name="other" class="anchor">#</a></h2>
+ <p>The following tools perform active measurements in the Tor network or provide other Tor network data.</p>
<ul>
<li><a href="https://gitweb.torproject.org/user/phw/exitmap.git" target="_blank">Exitmap</a> is a fast and extensible scanner for Tor exit relays.</li>
<li><a href="https://www.torproject.org/projects/tordnsel.html.en" target="_blank">TorDNSEL</a> publishes lists of IP addresses of multi-homed Tor exits.</li>
<li><a href="https://gitweb.torproject.org/torperf.git" target="_blank">Torperf</a> measures Tor performance with a set of utilities and Python scripts.</li>
<li><a href="https://github.com/robgjansen/onionperf" target="_blank">OnionPerf</a> measures the performance of onion services.</li>
+ <li><a href="https://ooni.torproject.org/" target="_blank">OONI</a> detects censorship, surveillance, and traffic manipulation on the internet.</li>
<li><a href="https://gitweb.torproject.org/user/phw/sybilhunter.git/" target="_blank">Sybilhunter</a> attempts to detect Sybil attacks onthe Tor network.</li>
- </ul>
- </div>
-
- <div class="container">
- <h2>Pre-aggregated data <a href="#aggregated" name="aggregated" class="anchor">#</a></h2>
- <p>Sometimes the data from the original sources can be hard to process. If you want to take a little shortcut, try out the following pre-aggregated statistics.</p>
- <ul>
- <li><a href="stats.html">CSV files</a> are available with aggregated statistics of visualizations on this site.</li>
- <li><a href="https://onionoo.torproject.org/" target="_blank">Onionoo</a> provides current and historical data about relays and bridges via a web-based API.</li>
+ <li><a href="https://webstats.torproject.org/" target="_blank">Webstats</a> collects logs from <code>torproject.org</code> web servers and provides them as a stripped-down version of Apache's "combined" log format without IP addresses, log times, HTTP parameters, referers, and user agent strings.</li>
</ul>
</div>
1
0
commit d159f647bfb440cfa903ea8c6092816c2844aff0
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Sun Mar 19 16:34:10 2017 +0100
Fix links on Onionoo page.
---
website/src/main/resources/web/WEB-INF/onionoo.jsp | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/website/src/main/resources/web/WEB-INF/onionoo.jsp b/website/src/main/resources/web/WEB-INF/onionoo.jsp
index df1fef0..dbf080d 100644
--- a/website/src/main/resources/web/WEB-INF/onionoo.jsp
+++ b/website/src/main/resources/web/WEB-INF/onionoo.jsp
@@ -701,7 +701,7 @@ Omitted if zero.
<a id="summary"></a><br>
<h2>Summary documents <a href="#summary" class="anchor">#</a>
<span class="request-response">
-<a href="summary?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/summary?limit=4">example request</a>
</span>
</h2>
@@ -806,7 +806,7 @@ running in the last bridge network status.
<a id="details"></a><br>
<h2>Details documents <a href="#details" class="anchor">#</a>
<span class="request-response">
-<a href="details?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/details?limit=4">example request</a>
</span>
</h2>
@@ -1568,7 +1568,7 @@ graphs.
<a id="bandwidth"></a><br>
<h2>Bandwidth documents <a href="#bandwidth" class="anchor">#</a>
<span class="request-response">
-<a href="bandwidth?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/bandwidth?limit=4">example request</a>
</span>
</h2>
@@ -1687,7 +1687,7 @@ The specification of graph history objects is similar to those in the
<a id="weights"></a><br>
<h2>Weights documents <a href="#weights" class="anchor">#</a>
<span class="request-response">
-<a href="weights?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/weights?limit=4">example request</a>
</span>
</h2>
@@ -1807,7 +1807,7 @@ The specification of this history object is similar to that in the
<a id="clients"></a><br>
<h2>Clients documents <a href="#clients" class="anchor">#</a>
<span class="request-response">
-<a href="clients?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/clients?limit=4">example request</a>
</span>
</h2>
@@ -1928,7 +1928,7 @@ It might be removed in the future without notice.</span>
<a id="uptime"></a><br>
<h2>Uptime documents <a href="#uptime" class="anchor">#</a>
<span class="request-response">
-<a href="uptime?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/uptime?limit=4">example request</a>
</span>
</h2>
@@ -2044,7 +2044,7 @@ information.
<p>
<code>/summary?limit=4</code>
-(<a href="/summary?limit=4">view result</a>)
+(<a href="https://onionoo.torproject.org/summary?limit=4">view result</a>)
</p>
<p>
@@ -2056,7 +2056,7 @@ new queries to avoid downloading huge responses.
<p>
<code>/summary?limit=4&search=moria</code>
-(<a href="/summary?limit=4&search=moria">view result</a>)
+(<a href="https://onionoo.torproject.org/summary?limit=4&search=moria">view result</a>)
</p>
<p>
@@ -2066,7 +2066,7 @@ string "moria" in one of a few searched fields.
<p>
<code>/details?limit=4&search=moria</code>
-(<a href="/details?limit=4&search=moria">view result</a>)
+(<a href="https://onionoo.torproject.org/details?limit=4&search=moria">view result</a>)
</p>
<p>
@@ -2076,7 +2076,7 @@ details documents containing, well, more details.
<p>
<code>/details?limit=4&search=moria&fields=nickname</code>
-(<a href="/details?limit=4&search=moria&fields=nickname">view result</a>)
+(<a href="https://onionoo.torproject.org/details?limit=4&search=moria&fields=nickname">view result</a>)
</p>
<p>
@@ -2087,7 +2087,7 @@ This parameter is only implemented for details documents.
<p>
<code>/details?limit=4&search=moria&fields=nickname&order=-consensus_weight</code>
-(<a href="/details?limit=4&search=moria&fields=nickname&order=-consensus_weight">view result</a>)
+(<a href="https://onionoo.torproject.org/details?limit=4&search=moria&fields=nickname…">view result</a>)
</p>
<p>
1
0
06 Jul '17
commit baaf9c81487646a3dc7f4aee7679ea7af0165ba7
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Sun Mar 19 16:37:46 2017 +0100
Change CollecTor links to the new page.
---
website/src/main/resources/web/WEB-INF/development.jsp | 2 +-
website/src/main/resources/web/WEB-INF/metrics-lib.jsp | 6 +++---
website/src/main/resources/web/WEB-INF/stats.jsp | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/website/src/main/resources/web/WEB-INF/development.jsp b/website/src/main/resources/web/WEB-INF/development.jsp
index 2627530..9b35364 100644
--- a/website/src/main/resources/web/WEB-INF/development.jsp
+++ b/website/src/main/resources/web/WEB-INF/development.jsp
@@ -19,7 +19,7 @@
<div class="container">
<h2>Parsing libraries <a href="#libraries" name="libraries" class="anchor">#</a></h2>
- <p>The following libraries help you with parsing Tor network data from the <a href="https://collector.torproject.org/" target="_blank">CollecTor</a> service.</p>
+ <p>The following libraries help you with parsing Tor network data from the <a href="collector.html">CollecTor</a> service.</p>
<ul>
<li><a href="metrics-lib.html">Tor Metrics Library</a> is a Java library to fetch and parse Tor descriptors.</li>
<li><a href="https://stem.torproject.org/" target="_blank">Stem</a> is a Python library that parses Tor descriptors.</li>
diff --git a/website/src/main/resources/web/WEB-INF/metrics-lib.jsp b/website/src/main/resources/web/WEB-INF/metrics-lib.jsp
index 44b2a79..4188a42 100644
--- a/website/src/main/resources/web/WEB-INF/metrics-lib.jsp
+++ b/website/src/main/resources/web/WEB-INF/metrics-lib.jsp
@@ -18,7 +18,7 @@
<div class="jumbotron">
<div class="text-center">
<h2>Tor Metrics Library</h2>
-<p>Tor Metrics Library is a Java API that facilitates processing Tor network data from the <a href="https://collector.torproject.org/">CollecTor</a> service for statistical analysis and for building services and applications.</p>
+<p>Tor Metrics Library is a Java API that facilitates processing Tor network data from the <a href="collector.html">CollecTor</a> service for statistical analysis and for building services and applications.</p>
<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://dist.torproject.org/metrics-lib/?C=M;O=D"><i class="fa fa-chevron-right" aria-hidden="true"></i> Download Release</a>
<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://gitweb.torproject.org/metrics-lib.git/plain/CHANGELOG.md"><i class="fa fa-chevron-right" aria-hidden="true"></i> View Change Log</a>
<a class="btn btn-primary btn-lg" style="margin: 10px" href="metrics-lib/"><i class="fa fa-chevron-right" aria-hidden="true"></i> Browse JavaDocs</a>
@@ -36,13 +36,13 @@
<h1>metrics-lib</h1>
-<p>Welcome to metrics-lib, a Java API that facilitates processing Tor network data from the <a href="https://collector.torproject.org/">CollecTor</a> service for statistical analysis and for building services and applications.</p>
+<p>Welcome to metrics-lib, a Java API that facilitates processing Tor network data from the <a href="collector.html">CollecTor</a> service for statistical analysis and for building services and applications.</p>
<p>In the tutorials below we're explaining the basic steps to get you started with metrics-lib.</p>
<h2 id="prerequisites">Prerequisites and preparation <a href="#prerequisites" class="anchor">#</a></h2>
-<p>The following tutorials are written with an audience in mind that knows Java and to a lesser extent how Tor works. We explain all data used in the tutorials. More and most up-to-date information about descriptors can be found in the <a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt">Tor directory protocol specification</a> and on the <a href="https://collector.torproject.org/">CollecTor website</a>.</p>
+<p>The following tutorials are written with an audience in mind that knows Java and to a lesser extent how Tor works. We explain all data used in the tutorials. More and most up-to-date information about descriptors can be found in the <a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt">Tor directory protocol specification</a> and on the <a href="collector.html">CollecTor page</a>.</p>
<p>All tutorials require you to <a href="https://dist.torproject.org/descriptor/?C=M;O=D">download</a> the latest release of metrics-lib, follow the instructions to <a href="https://gitweb.torproject.org/metrics-lib.git/tree/README.md">verify</a> its signature, extract the tarball locally, and copy the <code>lib/</code> and the <code>generated/</code> directories to your working directory for the tutorials.</p>
diff --git a/website/src/main/resources/web/WEB-INF/stats.jsp b/website/src/main/resources/web/WEB-INF/stats.jsp
index 2d5a69d..fd3fd6d 100644
--- a/website/src/main/resources/web/WEB-INF/stats.jsp
+++ b/website/src/main/resources/web/WEB-INF/stats.jsp
@@ -320,7 +320,7 @@ tool, which periodically fetches static files over Tor and records several
timestamps in the process. The data file contains daily medians and quartiles
as well as total numbers of requests, timeouts, and failures. Raw Torperf
measurement data are available on the <a
-href="https://collector.torproject.org/#torperf">CollecTor</a> website.</p>
+href="collector.html#torperf">CollecTor</a> website.</p>
<p><b>Download as <a href="stats/torperf.csv">CSV file</a>.</b></p>
1
0
06 Jul '17
commit f97b1af18e1ddc2e1d8fd00e7a7c750d4fc5661a
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Sun Mar 19 17:44:50 2017 +0100
Update Onionoo's jumbotron a bit.
---
website/src/main/resources/web/WEB-INF/onionoo.jsp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/website/src/main/resources/web/WEB-INF/onionoo.jsp b/website/src/main/resources/web/WEB-INF/onionoo.jsp
index dbf080d..2ccdf9d 100644
--- a/website/src/main/resources/web/WEB-INF/onionoo.jsp
+++ b/website/src/main/resources/web/WEB-INF/onionoo.jsp
@@ -23,14 +23,15 @@
<div class="jumbotron">
<div class="text-center">
<h2>
- The Tor network status protocol
+ Onionoo
</h2>
<p>Onionoo is a web-based protocol to learn about currently running
Tor relays and bridges. Onionoo itself was not designed as a service
for human beings—at least not directly. Onionoo provides the
data for other applications and websites which in turn present Tor
network status information to humans. </p>
- <a class="btn btn-primary btn-lg" style="margin: 10px" href="#protocol"><i class="fa fa-chevron-right" aria-hidden="true"></i> Tell me more!</a>
+ <a class="btn btn-primary btn-lg" style="margin: 10px" href="#versions"><i class="fa fa-chevron-right" aria-hidden="true"></i> View Protocol Versions</a>
+ <a class="btn btn-primary btn-lg" style="margin: 10px" href="#examples"><i class="fa fa-chevron-right" aria-hidden="true"></i> View Examples</a>
</div><!-- text-center -->
1
0
06 Jul '17
commit 8ba31084169c84957f8bc76354e1c6fc8ed7e945
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Sun Mar 19 17:45:51 2017 +0100
Remove Onionoo's table of contents.
---
website/src/main/resources/web/WEB-INF/onionoo.jsp | 20 --------------------
1 file changed, 20 deletions(-)
diff --git a/website/src/main/resources/web/WEB-INF/onionoo.jsp b/website/src/main/resources/web/WEB-INF/onionoo.jsp
index 2ccdf9d..32d7cea 100644
--- a/website/src/main/resources/web/WEB-INF/onionoo.jsp
+++ b/website/src/main/resources/web/WEB-INF/onionoo.jsp
@@ -52,26 +52,6 @@
<br>
<a id="protocol"></a>
- <!-- floating anchor box -->
- <div class="col-md-4 pull-right hidden-xs" style="padding:1.2em 0 0 2em;">
- <div class="list-group">
- <h3>Table of contents</h3>
- <a class="list-group-item" href="#general">General</a>
- <a class="list-group-item" href="#versions">Protocol versions</a>
- <a class="list-group-item" href="#methods">Methods</a>
- <a class="list-group-item" href="#responses">Responses</a>
- <a class="list-group-item" href="#summary">Summary documents</a>
- <a class="list-group-item" href="#details">Details documents</a>
- <a class="list-group-item" href="#history">History objects</a>
- <a class="list-group-item" href="#bandwidth">Bandwidth documents</a>
- <a class="list-group-item" href="#weights">Weights documents</a>
- <a class="list-group-item" href="#clients">Clients documents</a>
- <a class="list-group-item" href="#uptime">Uptime documents</a>
- <a class="list-group-item" href="#examples">Example usage</a>
- </div>
- </div>
-
-
<h1>The Tor network status protocol <a href="#protocol" class="anchor">#</a></h1>
<a id="general"></a><br>
1
0
commit 9f30654cba42b9f7dba2e290bebf3c17c57df8c4
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Mon Mar 20 16:55:26 2017 +0100
Fix broken CollecTor links.
---
website/src/main/resources/web/WEB-INF/collector.jsp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/website/src/main/resources/web/WEB-INF/collector.jsp b/website/src/main/resources/web/WEB-INF/collector.jsp
index a66308e..60e8721 100644
--- a/website/src/main/resources/web/WEB-INF/collector.jsp
+++ b/website/src/main/resources/web/WEB-INF/collector.jsp
@@ -801,7 +801,7 @@ wget --recursive \ # turn on recursive retrieving
<h2 id="index-json" class="hover">Custom downloaders using provided <code>index.json</code>
<a href="#index-json" class="anchor">#</a></h2>
-<p>Another automated way to download descriptors is to develop a tool that uses the provided <a href="index/index.json"><code>index.json</code></a> file or one of its compressed versions <a href="index/index.json.gz"><code>index.json.gz</code></a>, <a href="index/index.json.bz2"><code>index.json.bz2</code></a>, or <a href="index/index.json.xz"><code>index.json.xz</code></a>.
+<p>Another automated way to download descriptors is to develop a tool that uses the provided <a href="https://collector.torproject.org/index/index.json"><code>index.json</code></a> file or one of its compressed versions <a href="https://collector.torproject.org/index/index.json.gz"><code>index.json.gz</code></a>, <a href="https://collector.torproject.org/index/index.json.bz2"><code>index.json.bz2</code></a>, or <a href="https://collector.torproject.org/index/index.json.xz"><code>index.json.xz</code></a>.
These files contain a machine-readable representation of all descriptor files available on this site.
Index files use the following custom JSON data format that might still be extended at a later time:</p>
<ul>
1
0
06 Jul '17
commit cdb5e5c7bd488063935ee221cd3d3be63995268a
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Sun Mar 19 16:38:59 2017 +0100
Change Onionoo links to the new page.
---
website/src/main/resources/web/WEB-INF/development.jsp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/website/src/main/resources/web/WEB-INF/development.jsp b/website/src/main/resources/web/WEB-INF/development.jsp
index 9b35364..05199a9 100644
--- a/website/src/main/resources/web/WEB-INF/development.jsp
+++ b/website/src/main/resources/web/WEB-INF/development.jsp
@@ -29,11 +29,11 @@
<div class="container">
<h2>Query support <a href="#query" name="query" class="anchor">#</a></h2>
- <p>The following tools help you with querying Tor network data from the <a href="https://onionoo.torproject.org/" target="_blank">Onionoo</a> service.</p>
+ <p>The following tools help you with querying Tor network data from the <a href="onionoo.html">Onionoo</a> service.</p>
<ul>
<li><a href="https://savannah.nongnu.org/projects/koninoo/" target="_blank">koninoo</a> is a simple Java command line interface for querying Onionoo data.</li>
<li><a href="https://github.com/duk3luk3/onion-py" target="_blank">OnionPy</a> provides memcached support to cache queried data.</li>
- <li><a href="https://github.com/lukechilds/onionoo-node-client" target="_blank">onionoo-node-client</a> is a Node.js client library for the <a href="https://onionoo.torproject.org/" target="_blank">Onionoo</a> API.</li>
+ <li><a href="https://github.com/lukechilds/onionoo-node-client" target="_blank">onionoo-node-client</a> is a Node.js client library for the <a href="onionoo.html">Onionoo</a> API.</li>
</ul>
</div>
1
0
06 Jul '17
commit f18ced853c608d8b21f1cb2876d401029bed1bb5
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Mon Mar 20 17:06:33 2017 +0100
Make external links more obvious.
---
website/src/main/resources/web/WEB-INF/bottom.jsp | 2 +-
.../src/main/resources/web/WEB-INF/collector.jsp | 118 ++++++++++-----------
.../src/main/resources/web/WEB-INF/glossary.jsp | 4 +-
website/src/main/resources/web/WEB-INF/index.jsp | 2 +-
.../src/main/resources/web/WEB-INF/metrics-lib.jsp | 14 +--
website/src/main/resources/web/WEB-INF/onionoo.jsp | 22 ++--
website/src/main/resources/web/WEB-INF/stats.jsp | 6 +-
website/src/main/resources/web/css/style.css | 4 +
8 files changed, 88 insertions(+), 84 deletions(-)
diff --git a/website/src/main/resources/web/WEB-INF/bottom.jsp b/website/src/main/resources/web/WEB-INF/bottom.jsp
index 1ca6f3c..835b286 100644
--- a/website/src/main/resources/web/WEB-INF/bottom.jsp
+++ b/website/src/main/resources/web/WEB-INF/bottom.jsp
@@ -3,7 +3,7 @@
<div class="container no-gutter">
<div class="col-xs-6">
<p>
- © 2009–2017 <a href="https://www.torproject.org/">The Tor Project</a>
+ © 2009–2017 <a href="https://www.torproject.org/" target="_blank">The Tor Project</a>
</p>
</div>
<div class="col-xs-6">
diff --git a/website/src/main/resources/web/WEB-INF/collector.jsp b/website/src/main/resources/web/WEB-INF/collector.jsp
index 60e8721..a6085f4 100644
--- a/website/src/main/resources/web/WEB-INF/collector.jsp
+++ b/website/src/main/resources/web/WEB-INF/collector.jsp
@@ -32,8 +32,8 @@
network, or if you're developing an application that uses
Tor network data, this is your place to start.
</p>
-<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://collector.torproject.org/recent/"><i class="fa fa-chevron-right" aria-hidden="true"></i> Browse Recent Descriptors</a>
-<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://collector.torproject.org/archive/"><i class="fa fa-chevron-right" aria-hidden="true"></i> Browse Archived Descriptors</a>
+<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://collector.torproject.org/recent/" target="_blank"><i class="fa fa-chevron-right" aria-hidden="true"></i> Browse Recent Descriptors</a>
+<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://collector.torproject.org/archive/" target="_blank"><i class="fa fa-chevron-right" aria-hidden="true"></i> Browse Archived Descriptors</a>
</div><!-- text-center -->
@@ -65,53 +65,53 @@
<tr>
<td><a href="#type-server-descriptor">Relay Server Descriptors</a></td>
<td><code>@type server-descriptor 1.0</code></td>
- <td><a href="https://collector.torproject.org/recent/relay-descriptors/server-descriptor…" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/relay-descriptors/server-descripto…" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/relay-descriptors/server-descriptor…" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/relay-descriptors/server-descripto…" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-extra-info">Relay Extra-info Descriptors</a></td>
<td><code>@type extra-info 1.0</code></td>
- <td><a href="https://collector.torproject.org/recent/relay-descriptors/extra-infos/" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/relay-descriptors/extra-infos/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/relay-descriptors/extra-infos/" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/relay-descriptors/extra-infos/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-network-status-consensus-3">Network Status Consensuses</a></td>
<td><code>@type network-status-consensus-3 1.0</code></td>
- <td><a href="https://collector.torproject.org/recent/relay-descriptors/consensuses/" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/relay-descriptors/consensuses/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/relay-descriptors/consensuses/" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/relay-descriptors/consensuses/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-network-status-vote-3">Network Status Votes</a></td>
<td><code>@type network-status-vote-3 1.0</code></td>
- <td><a href="https://collector.torproject.org/recent/relay-descriptors/votes/" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/relay-descriptors/votes/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/relay-descriptors/votes/" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/relay-descriptors/votes/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-dir-key-certificate-3">Directory Key Certificates</a></td>
<td><code>@type dir-key-certificate-3 1.0</code></td>
- <td><a href="https://collector.torproject.org/archive/relay-descriptors/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/archive/relay-descriptors/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-network-status-microdesc-consensus-3">Microdescriptor Consensuses</a></td>
<td><code>@type network-status-microdesc-consensus-3 1.0</code></td>
- <td><a href="https://collector.torproject.org/recent/relay-descriptors/microdescs/consen…" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/relay-descriptors/microdescs/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/relay-descriptors/microdescs/consen…" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/relay-descriptors/microdescs/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-microdescriptor">Microdescriptors</a></td>
<td><code>@type microdescriptor 1.0</code></td>
- <td><a href="https://collector.torproject.org/recent/relay-descriptors/microdescs/micro/" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/relay-descriptors/microdescs/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/relay-descriptors/microdescs/micro/" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/relay-descriptors/microdescs/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-network-status-2">Version 2 Network Statuses</a></td>
<td><code>@type network-status-2 1.0</code></td>
- <td><a href="https://collector.torproject.org/archive/relay-descriptors/statuses/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/archive/relay-descriptors/statuses/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-directory">Version 1 Directories</a></td>
<td><code>@type directory 1.0</code></td>
- <td><a href="https://collector.torproject.org/archive/relay-descriptors/tor/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/archive/relay-descriptors/tor/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr class="tableHeadline">
<td colspan="3"><b><a href="#bridge-descriptors">Tor Bridge Descriptors</a></b></td>
@@ -119,20 +119,20 @@
<tr>
<td><a href="#type-bridge-network-status">Bridge Network Statuses</a></td>
<td><code>@type bridge-network-status 1.1</code></td>
- <td><a href="https://collector.torproject.org/recent/bridge-descriptors/statuses/" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/bridge-descriptors/statuses/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/bridge-descriptors/statuses/" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/bridge-descriptors/statuses/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-bridge-server-descriptor">Bridge Server Descriptors</a></td>
<td><code>@type bridge-server-descriptor 1.2</code></td>
- <td><a href="https://collector.torproject.org/recent/bridge-descriptors/server-descripto…" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/bridge-descriptors/server-descript…" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/bridge-descriptors/server-descripto…" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/bridge-descriptors/server-descript…" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr>
<td><a href="#type-bridge-extra-info">Bridge Extra-info Descriptors</a></td>
<td><code>@type bridge-extra-info 1.3</code></td>
- <td><a href="https://collector.torproject.org/recent/bridge-descriptors/extra-infos/" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/bridge-descriptors/extra-infos/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/bridge-descriptors/extra-infos/" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/bridge-descriptors/extra-infos/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr class="tableHeadline">
<td colspan="3"><b><a href="#tor-hidden-service-descriptors">Tor Hidden Service Descriptors</a></b></td>
@@ -148,7 +148,7 @@
<tr>
<td><a href="#type-bridge-pool-assignment">Bridge Pool Assignments</a></td>
<td><code>@type bridge-pool-assignment 1.0</code></td>
- <td><a href="https://collector.torproject.org/archive/bridge-pool-assignments/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/archive/bridge-pool-assignments/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr class="tableHeadline">
<td colspan="3"><b><a href="#exit-lists">TorDNSEL's Exit Lists</a></b></td>
@@ -156,8 +156,8 @@
<tr>
<td><a href="#type-tordnsel">Exit Lists</a></td>
<td><code>@type tordnsel 1.0</code></td>
- <td><a href="https://collector.torproject.org/recent/exit-lists/" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/exit-lists/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/exit-lists/" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/exit-lists/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
<tr class="tableHeadline">
<td colspan="3"><b><a href="#torperf">Torperf's Performance Data</a></b></td>
@@ -165,8 +165,8 @@
<tr>
<td><a href="#type-torperf">Torperf Measurement Results</a></td>
<td><code>@type torperf 1.0</code></td>
- <td><a href="https://collector.torproject.org/recent/torperf/" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
- <a href="https://collector.torproject.org/archive/torperf/" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
+ <td><a href="https://collector.torproject.org/recent/torperf/" target="_blank" class="btn btn-primary btn-xs pull-left"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+ <a href="https://collector.torproject.org/archive/torperf/" target="_blank" class="btn btn-primary btn-xs pull-right"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a></td>
</tr>
</tbody>
</table>
@@ -204,17 +204,17 @@ number.
Relays and directory authorities publish relay descriptors, so that
clients can select relays for their paths through the Tor network.
All these relay descriptors are specified in the
-<a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt">Tor
+<a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt" target="_blank">Tor
directory protocol, version 3</a> specification document (or in the
earlier protocol
-<a href="https://gitweb.torproject.org/torspec.git/tree/attic/dir-spec-v2.txt">version 2</a> or
-<a href="https://gitweb.torproject.org/torspec.git/tree/attic/dir-spec-v1.txt">version 1</a>).
+<a href="https://gitweb.torproject.org/torspec.git/tree/attic/dir-spec-v2.txt" target="_blank">version 2</a> or
+<a href="https://gitweb.torproject.org/torspec.git/tree/attic/dir-spec-v1.txt" target="_blank">version 1</a>).
</p>
<h3 id="type-server-descriptor" class="hover">Relay Server Descriptors
<small><code>@type server-descriptor 1.0</code></small>
-<a href="https://collector.torproject.org/recent/relay-descriptors/server-descriptor…" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/relay-descriptors/server-descripto…" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/relay-descriptors/server-descriptor…" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/relay-descriptors/server-descripto…" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-server-descriptor" class="anchor">#</a>
</h3>
@@ -231,8 +231,8 @@ file.
<h3 id="type-extra-info" class="hover">Relay Extra-info Descriptors
<small><code>@type extra-info 1.0</code></small>
-<a href="https://collector.torproject.org/recent/relay-descriptors/extra-infos/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/relay-descriptors/extra-infos/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/relay-descriptors/extra-infos/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/relay-descriptors/extra-infos/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-extra-info" class="anchor">#</a>
</h3>
@@ -249,8 +249,8 @@ file.
<h3 id="type-network-status-consensus-3" class="hover">Network Status Consensuses
<small><code>@type network-status-consensus-3 1.0</code></small>
-<a href="https://collector.torproject.org/recent/relay-descriptors/consensuses/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/relay-descriptors/consensuses/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/relay-descriptors/consensuses/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/relay-descriptors/consensuses/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-network-status-consensus-3" class="anchor">#</a>
</h3>
@@ -265,8 +265,8 @@ flags, heuristics used for relay selection, etc.
<h3 id="type-network-status-vote-3" class="hover">Network Status Votes
<small><code>@type network-status-vote-3 1.0</code></small>
-<a href="https://collector.torproject.org/recent/relay-descriptors/votes/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/relay-descriptors/votes/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/relay-descriptors/votes/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/relay-descriptors/votes/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-network-status-vote-3" class="anchor">#</a>
</h3>
@@ -278,7 +278,7 @@ Vote documents are by far the largest documents provided here.
<h3 id="type-dir-key-certificate-3" class="hover">Directory Key Certificates
<small><code>@type dir-key-certificate-3 1.0</code></small>
-<a href="https://collector.torproject.org/archive/relay-descriptors/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/archive/relay-descriptors/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-dir-key-certificate-3" class="anchor">#</a>
</h3>
@@ -291,8 +291,8 @@ available in a single descriptor archive tarball.
<h3 id="type-network-status-microdesc-consensus-3" class="hover">Microdescriptor Consensuses
<small><code>@type network-status-microdesc-consensus-3 1.0</code></small>
-<a href="https://collector.torproject.org/recent/relay-descriptors/microdescs/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/relay-descriptors/microdescs/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/relay-descriptors/microdescs/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/relay-descriptors/microdescs/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-network-status-microdesc-consensus-3" class="anchor">#</a>
</h3>
@@ -309,8 +309,8 @@ together.
<h3 id="type-microdescriptor" class="hover">Microdescriptors
<small><code>@type microdescriptor 1.0</code></small>
-<a href="https://collector.torproject.org/recent/relay-descriptors/microdescs/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/relay-descriptors/microdescs/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/relay-descriptors/microdescs/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/relay-descriptors/microdescs/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-microdescriptor" class="anchor">#</a>
</h3>
@@ -328,7 +328,7 @@ file.
<h3 id="type-network-status-2" class="hover">Version 2 Network Statuses
<small><code>@type network-status-2 1.0</code></small>
-<a href="https://collector.torproject.org/archive/relay-descriptors/statuses/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/archive/relay-descriptors/statuses/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-network-status-2" class="anchor">#</a>
</h3>
@@ -343,7 +343,7 @@ We stopped archiving version 2 network statuses in 2012.
<h3 id="type-directory" class="hover">Version 1 Directories
<small><code>@type directory 1.0</code></small>
-<a href="https://collector.torproject.org/archive/relay-descriptors/tor/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/archive/relay-descriptors/tor/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-directory" class="anchor">#</a>
</h3>
@@ -451,8 +451,8 @@ descriptor including all signatures.</li>
<h3 id="type-bridge-network-status" class="hover">Bridge Network Statuses
<small><code>@type bridge-network-status 1.1</code></small>
-<a href="https://collector.torproject.org/recent/bridge-descriptors/statuses/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/bridge-descriptors/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/bridge-descriptors/statuses/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/bridge-descriptors/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-bridge-network-status" class="anchor">#</a>
</h3>
@@ -472,8 +472,8 @@ ports.</li>
<h3 id="type-bridge-server-descriptor" class="hover">Bridge Server descriptors
<small><code>@type bridge-server-descriptor 1.2</code></small>
-<a href="https://collector.torproject.org/recent/bridge-descriptors/server-descripto…" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/bridge-descriptors/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/bridge-descriptors/server-descripto…" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/bridge-descriptors/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-bridge-server-descriptor" class="anchor">#</a>
</h3>
@@ -506,8 +506,8 @@ ports.</li>
<h3 id="type-bridge-extra-info" class="hover">Bridge Extra-info Descriptors
<small><code>@type bridge-extra-info 1.3</code></small>
-<a href="https://collector.torproject.org/recent/bridge-descriptors/extra-infos/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/bridge-descriptors/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/bridge-descriptors/extra-infos/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/bridge-descriptors/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-bridge-extra-info" class="anchor">#</a>
</h3>
@@ -589,7 +589,7 @@ statistical analysis.
<h3 id="type-bridge-pool-assignment" class="hover">Bridge Pool Assignments
<small><code>@type bridge-pool-assignment 1.0</code></small>
-<a href="https://collector.torproject.org/archive/bridge-pool-assignments/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/archive/bridge-pool-assignments/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-bridge-pool-assignment" class="anchor">#</a>
</h3>
@@ -641,15 +641,15 @@ archived.
<p>
The exit list service
-<a href="https://www.torproject.org/tordnsel/dist/">TorDNSEL</a>
+<a href="https://www.torproject.org/tordnsel/dist/" target="_blank">TorDNSEL</a>
publishes exit lists containing the IP addresses of relays that it found
when exiting through them.
</p>
<h3 id="type-tordnsel" class="hover">Exit Lists
<small><code>@type tordnsel 1.0</code></small>
-<a href="https://collector.torproject.org/recent/exit-lists/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/exit-lists/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/exit-lists/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/exit-lists/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-tordnsel" class="anchor">#</a>
</h3>
@@ -692,8 +692,8 @@ over the Tor network and notes how long substeps take.
<h3 id="type-torperf" class="hover">Torperf Measurement Results
<small><code>@type torperf 1.0</code></small>
-<a href="https://collector.torproject.org/recent/torperf/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
-<a href="https://collector.torproject.org/archive/torperf/" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
+<a href="https://collector.torproject.org/recent/torperf/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> recent</a>
+<a href="https://collector.torproject.org/archive/torperf/" target="_blank" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> archive</a>
<a href="#type-torperf" class="anchor">#</a>
</h3>
@@ -801,7 +801,7 @@ wget --recursive \ # turn on recursive retrieving
<h2 id="index-json" class="hover">Custom downloaders using provided <code>index.json</code>
<a href="#index-json" class="anchor">#</a></h2>
-<p>Another automated way to download descriptors is to develop a tool that uses the provided <a href="https://collector.torproject.org/index/index.json"><code>index.json</code></a> file or one of its compressed versions <a href="https://collector.torproject.org/index/index.json.gz"><code>index.json.gz</code></a>, <a href="https://collector.torproject.org/index/index.json.bz2"><code>index.json.bz2</code></a>, or <a href="https://collector.torproject.org/index/index.json.xz"><code>index.json.xz</code></a>.
+<p>Another automated way to download descriptors is to develop a tool that uses the provided <a href="https://collector.torproject.org/index/index.json" target="_blank"><code>index.json</code></a> file or one of its compressed versions <a href="https://collector.torproject.org/index/index.json.gz" target="_blank"><code>index.json.gz</code></a>, <a href="https://collector.torproject.org/index/index.json.bz2" target="_blank"><code>index.json.bz2</code></a>, or <a href="https://collector.torproject.org/index/index.json.xz" target="_blank"><code>index.json.xz</code></a>.
These files contain a machine-readable representation of all descriptor files available on this site.
Index files use the following custom JSON data format that might still be extended at a later time:</p>
<ul>
diff --git a/website/src/main/resources/web/WEB-INF/glossary.jsp b/website/src/main/resources/web/WEB-INF/glossary.jsp
index edde87d..a617b21 100644
--- a/website/src/main/resources/web/WEB-INF/glossary.jsp
+++ b/website/src/main/resources/web/WEB-INF/glossary.jsp
@@ -39,7 +39,7 @@
authority:</a></b> a
special-purpose <a href="#relay">relay</a> that maintains a list of
bridges as input for external bridge distribution mechanisms (for example,
- <a href="https://bridges.torproject.org/">BridgeDB</a>).</p>
+ <a href="https://bridges.torproject.org/" target="_blank">BridgeDB</a>).</p>
<p id="circuit"><b><a href="#circuit">circuit:</a></b> a path through the
Tor network
@@ -103,7 +103,7 @@
example, "Fast", "Stable"), or roles (for example, "Authority", "HSDir"),
as assigned by the <a href="#directory-authority">directory
authorities</a> and further defined in the
- <a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt">directory
+ <a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt" target="_blank">directory
protocol specification</a>.</p>
</div>
diff --git a/website/src/main/resources/web/WEB-INF/index.jsp b/website/src/main/resources/web/WEB-INF/index.jsp
index 11217ea..56e2afa 100644
--- a/website/src/main/resources/web/WEB-INF/index.jsp
+++ b/website/src/main/resources/web/WEB-INF/index.jsp
@@ -15,7 +15,7 @@
<div class="container">
<h1>Welcome!</h1>
<p>
- What would you like to know about the <a href="https://www.torproject.org/">Tor</a> network?
+ What would you like to know about the <a href="https://www.torproject.org/" target="_blank">Tor</a> network?
</p>
</div>
diff --git a/website/src/main/resources/web/WEB-INF/metrics-lib.jsp b/website/src/main/resources/web/WEB-INF/metrics-lib.jsp
index 4188a42..3cd26f6 100644
--- a/website/src/main/resources/web/WEB-INF/metrics-lib.jsp
+++ b/website/src/main/resources/web/WEB-INF/metrics-lib.jsp
@@ -19,8 +19,8 @@
<div class="text-center">
<h2>Tor Metrics Library</h2>
<p>Tor Metrics Library is a Java API that facilitates processing Tor network data from the <a href="collector.html">CollecTor</a> service for statistical analysis and for building services and applications.</p>
-<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://dist.torproject.org/metrics-lib/?C=M;O=D"><i class="fa fa-chevron-right" aria-hidden="true"></i> Download Release</a>
-<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://gitweb.torproject.org/metrics-lib.git/plain/CHANGELOG.md"><i class="fa fa-chevron-right" aria-hidden="true"></i> View Change Log</a>
+<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://dist.torproject.org/metrics-lib/?C=M;O=D" target="_blank"><i class="fa fa-chevron-right" aria-hidden="true"></i> Download Release</a>
+<a class="btn btn-primary btn-lg" style="margin: 10px" href="https://gitweb.torproject.org/metrics-lib.git/plain/CHANGELOG.md" target="_blank"><i class="fa fa-chevron-right" aria-hidden="true"></i> View Change Log</a>
<a class="btn btn-primary btn-lg" style="margin: 10px" href="metrics-lib/"><i class="fa fa-chevron-right" aria-hidden="true"></i> Browse JavaDocs</a>
</div><!-- text-center -->
</div><!-- jumbotron -->
@@ -42,13 +42,13 @@
<h2 id="prerequisites">Prerequisites and preparation <a href="#prerequisites" class="anchor">#</a></h2>
-<p>The following tutorials are written with an audience in mind that knows Java and to a lesser extent how Tor works. We explain all data used in the tutorials. More and most up-to-date information about descriptors can be found in the <a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt">Tor directory protocol specification</a> and on the <a href="collector.html">CollecTor page</a>.</p>
+<p>The following tutorials are written with an audience in mind that knows Java and to a lesser extent how Tor works. We explain all data used in the tutorials. More and most up-to-date information about descriptors can be found in the <a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt" target="_blank">Tor directory protocol specification</a> and on the <a href="collector.html">CollecTor page</a>.</p>
-<p>All tutorials require you to <a href="https://dist.torproject.org/descriptor/?C=M;O=D">download</a> the latest release of metrics-lib, follow the instructions to <a href="https://gitweb.torproject.org/metrics-lib.git/tree/README.md">verify</a> its signature, extract the tarball locally, and copy the <code>lib/</code> and the <code>generated/</code> directories to your working directory for the tutorials.</p>
+<p>All tutorials require you to <a href="https://dist.torproject.org/descriptor/?C=M;O=D" target="_blank">download</a> the latest release of metrics-lib, follow the instructions to <a href="https://gitweb.torproject.org/metrics-lib.git/tree/README.md" target="_blank">verify</a> its signature, extract the tarball locally, and copy the <code>lib/</code> and the <code>generated/</code> directories to your working directory for the tutorials.</p>
<h2 id="tutorial1">Tutorial 1: Download descriptors from CollecTor <a href="#tutorial1" class="anchor">#</a></h2>
-<p>Let's start this tutorial series by doing something really simple. We'll use metrics-lib to download <a href="https://collector.torproject.org/recent/relay-descriptors/consensuses/">recent consensuses from CollecTor</a> and write them to a local directory. We're not doing anything with those consensuses yet, though we'll get back to that in a bit.</p>
+<p>Let's start this tutorial series by doing something really simple. We'll use metrics-lib to download <a href="https://collector.torproject.org/recent/relay-descriptors/consensuses/" target="_blank">recent consensuses from CollecTor</a> and write them to a local directory. We're not doing anything with those consensuses yet, though we'll get back to that in a bit.</p>
<p>We'll need to tell metrics-lib five pieces of information for this:</p>
@@ -296,9 +296,9 @@ java -cp .:lib/\*:generated/dist/signed/\* PluggableTransports
<p>Want to write more code that uses metrics-lib? Be sure to read the <a href="metrics-lib/">JavaDocs</a> while developing new services or applications using Tor network data.</p>
-<p>Ran into a problem, found a bug, or came up with a cool new feature? Feel free to <a href="https://metrics.torproject.org/about.html#contact">contact us</a>. Alternatively, take a look at the <a href="https://trac.torproject.org/projects/tor">bug tracker</a> and open a ticket if there's none for your issue yet.</p>
+<p>Ran into a problem, found a bug, or came up with a cool new feature? Feel free to <a href="about.html#contact">contact us</a>. Alternatively, take a look at the <a href="https://trac.torproject.org/projects/tor" target="_blank">bug tracker</a> and open a ticket if there's none for your issue yet.</p>
-<p>Interested in writing <a href="https://gitweb.torproject.org/metrics-lib.git/">code</a> for metrics-lib? Please take a look at the Tor Metrics team <a href="https://trac.torproject.org/projects/tor/wiki/org/teams/MetricsTeam/Volunte…">wiki page</a> to find out how to contribute.</p>
+<p>Interested in writing <a href="https://gitweb.torproject.org/metrics-lib.git/" target="_blank">code</a> for metrics-lib? Please take a look at the Tor Metrics team <a href="https://trac.torproject.org/projects/tor/wiki/org/teams/MetricsTeam/Volunte…" target="_blank">wiki page</a> to find out how to contribute.</p>
<p>Scrolled down just to see where we're hiding the solutions of the three little riddles above? Here are the diffs:</p>
diff --git a/website/src/main/resources/web/WEB-INF/onionoo.jsp b/website/src/main/resources/web/WEB-INF/onionoo.jsp
index 228ec59..b349b7a 100644
--- a/website/src/main/resources/web/WEB-INF/onionoo.jsp
+++ b/website/src/main/resources/web/WEB-INF/onionoo.jsp
@@ -682,7 +682,7 @@ Omitted if zero.
<a id="summary"></a><br>
<h2>Summary documents <a href="#summary" class="anchor">#</a>
<span class="request-response">
-<a href="https://onionoo.torproject.org/summary?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/summary?limit=4" target="_blank">example request</a>
</span>
</h2>
@@ -787,7 +787,7 @@ running in the last bridge network status.
<a id="details"></a><br>
<h2>Details documents <a href="#details" class="anchor">#</a>
<span class="request-response">
-<a href="https://onionoo.torproject.org/details?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/details?limit=4" target="_blank">example request</a>
</span>
</h2>
@@ -1549,7 +1549,7 @@ graphs.
<a id="bandwidth"></a><br>
<h2>Bandwidth documents <a href="#bandwidth" class="anchor">#</a>
<span class="request-response">
-<a href="https://onionoo.torproject.org/bandwidth?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/bandwidth?limit=4" target="_blank">example request</a>
</span>
</h2>
@@ -1668,7 +1668,7 @@ The specification of graph history objects is similar to those in the
<a id="weights"></a><br>
<h2>Weights documents <a href="#weights" class="anchor">#</a>
<span class="request-response">
-<a href="https://onionoo.torproject.org/weights?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/weights?limit=4" target="_blank">example request</a>
</span>
</h2>
@@ -1788,7 +1788,7 @@ The specification of this history object is similar to that in the
<a id="clients"></a><br>
<h2>Clients documents <a href="#clients" class="anchor">#</a>
<span class="request-response">
-<a href="https://onionoo.torproject.org/clients?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/clients?limit=4" target="_blank">example request</a>
</span>
</h2>
@@ -1909,7 +1909,7 @@ It might be removed in the future without notice.</span>
<a id="uptime"></a><br>
<h2>Uptime documents <a href="#uptime" class="anchor">#</a>
<span class="request-response">
-<a href="https://onionoo.torproject.org/uptime?limit=4">example request</a>
+<a href="https://onionoo.torproject.org/uptime?limit=4" target="_blank">example request</a>
</span>
</h2>
@@ -2025,7 +2025,7 @@ information.
<p>
<code>/summary?limit=4</code>
-(<a href="https://onionoo.torproject.org/summary?limit=4">view result</a>)
+(<a href="https://onionoo.torproject.org/summary?limit=4" target="_blank">view result</a>)
</p>
<p>
@@ -2037,7 +2037,7 @@ new queries to avoid downloading huge responses.
<p>
<code>/summary?limit=4&search=moria</code>
-(<a href="https://onionoo.torproject.org/summary?limit=4&search=moria">view result</a>)
+(<a href="https://onionoo.torproject.org/summary?limit=4&search=moria" target="_blank">view result</a>)
</p>
<p>
@@ -2047,7 +2047,7 @@ string "moria" in one of a few searched fields.
<p>
<code>/details?limit=4&search=moria</code>
-(<a href="https://onionoo.torproject.org/details?limit=4&search=moria">view result</a>)
+(<a href="https://onionoo.torproject.org/details?limit=4&search=moria" target="_blank">view result</a>)
</p>
<p>
@@ -2057,7 +2057,7 @@ details documents containing, well, more details.
<p>
<code>/details?limit=4&search=moria&fields=nickname</code>
-(<a href="https://onionoo.torproject.org/details?limit=4&search=moria&fields=nickname">view result</a>)
+(<a href="https://onionoo.torproject.org/details?limit=4&search=moria&fields=nickname" target="_blank">view result</a>)
</p>
<p>
@@ -2068,7 +2068,7 @@ This parameter is only implemented for details documents.
<p>
<code>/details?limit=4&search=moria&fields=nickname&order=-consensus_weight</code>
-(<a href="https://onionoo.torproject.org/details?limit=4&search=moria&fields=nickname…">view result</a>)
+(<a href="https://onionoo.torproject.org/details?limit=4&search=moria&fields=nickname…" target="_blank">view result</a>)
</p>
<p>
diff --git a/website/src/main/resources/web/WEB-INF/stats.jsp b/website/src/main/resources/web/WEB-INF/stats.jsp
index fd3fd6d..7912834 100644
--- a/website/src/main/resources/web/WEB-INF/stats.jsp
+++ b/website/src/main/resources/web/WEB-INF/stats.jsp
@@ -315,7 +315,7 @@ there are users by either of the two numbers.</li>
<p>The following data file contains aggregate statistics on performance when
downloading static files of different sizes over Tor. These statistics are
-generated by the <a href="https://gitweb.torproject.org/torperf.git">Torperf</a>
+generated by the <a href="https://gitweb.torproject.org/torperf.git" target="_blank">Torperf</a>
tool, which periodically fetches static files over Tor and records several
timestamps in the process. The data file contains daily medians and quartiles
as well as total numbers of requests, timeouts, and failures. Raw Torperf
@@ -463,9 +463,9 @@ small subset of <a href="glossary.html#relay">relays</a> and extrapolated to
network totals. Statistics include the amount of onion-service traffic and the
number of onion-service addresses in the network per day. For more details on
the extrapolation algorithm, see <a
-href="https://blog.torproject.org/blog/some-statistics-about-onions">this blog
+href="https://blog.torproject.org/blog/some-statistics-about-onions" target="_blank">this blog
post</a> and <a
-href="https://research.torproject.org/techreports/extrapolating-hidserv-stats-201…">this
+href="https://research.torproject.org/techreports/extrapolating-hidserv-stats-201…" target="_blank">this
technical report</a>.</p>
<p><b>Download as <a href="stats/hidserv.csv">CSV file</a>.</b></p>
diff --git a/website/src/main/resources/web/css/style.css b/website/src/main/resources/web/css/style.css
index c93d9cf..6d39105 100644
--- a/website/src/main/resources/web/css/style.css
+++ b/website/src/main/resources/web/css/style.css
@@ -451,6 +451,10 @@ a[target="_blank"]:before {
margin-right:3px;
}
+a.btn[target="_blank"]:before {
+ content: "";
+}
+
/* news page */
1
0
06 Jul '17
commit 65d31bceb7a54f2d8880309452d6c54c97ccc4bf
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Mon Mar 20 14:29:17 2017 +0100
Fix button text color of visited links.
---
website/src/main/resources/web/css/style.css | 1 +
1 file changed, 1 insertion(+)
diff --git a/website/src/main/resources/web/css/style.css b/website/src/main/resources/web/css/style.css
index 70764ad..273260a 100644
--- a/website/src/main/resources/web/css/style.css
+++ b/website/src/main/resources/web/css/style.css
@@ -120,6 +120,7 @@ body {
/* primary button color */
.btn-primary {
+ color: #fff !important;
background-color: #8d56A8;
border-color: #7d4698;
}
1
0