I'm trying to learn my way around Tor and the Stem library for a class. My understanding is that the middle node is selected by tor and is unaccessible through Stem, however as part of the class I have to identify the middle node and find the address/location/etc.

After doing some research it looks like some suggest to go about doing this using extend_circuit, while others say that it's just not doable (which i'm assuming is incorrect since if it wasn't doable it wouldn't be part of the class?). I was hoping for some help/direction so I know where to look and how to go about doing this.

1 Answer 1


stem.control.Controller.get_circuits returns a list of stem.response.events.CircuitEvent.

Each of these contains a path attribute, which is a list of the relays involved in the circuit, including the middle relay.

  • So, just to double check i'm understanding this correctly, if the output looks something like (('jsdasld', 'C'), ('sjdfls', 'a'), ('sdfsdf', 'W')), then these are the entry, middle, and exit nodes?
    – April
    Nov 28, 2016 at 2:11
  • right, or at least the order of the nodes. not all circuits exit the tor network.
    – cacahuatl
    Nov 28, 2016 at 3:34
  • You say you want to "select" a middle relay, this shows what middle relay is in use in current circuits if you're looking to build custom circuits with your own chosen middle node, then see this: tor.stackexchange.com/questions/12401/…
    – cacahuatl
    Nov 28, 2016 at 3:44

Not the answer you're looking for? Browse other questions tagged .