Tools like Atlas graphs an Exit Node's 'Exit Probability': https://atlas.torproject.org/#details/E93F05C9A7112544A2F132CBB7F6701877140F2A

How is the Exit Probability calculated? (Bonus for a link to the code.) Do exit probabilities add up nicely to 100% among all exit nodes?

Is there a mechanism to re-run the calculation taking into account a particular exit port (or IP)?


Atlas uses Onionoo as its data back-end. From the Onionoo protocol specification:

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.

For the code, see NodeDetailsStatusUpdater.calculatePathSelectionProbabilities.

Yes, exit probabilities (should) add up to 100% for all currently running exit nodes.

I'm afraid there is no easy way to re-run this calculation for specific exit ports or IPs, at least not in Atlas/Onionoo. You might be able to write your own script using stem. All you have to do is process a consensus in a similar way as Onionoo does it, but only consider the subset of nodes permitting a specific port. Exit IPs is more difficult, because you'd have to combine consensuses with server descriptors to learn that.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.