If I open a new tab, the exit node is the same as before. If I closed the window, i.e., all tabs, and open a new one, I still get the same exit node.
The browser uses an isolation method, to isolate connections by the "first party" domain (e.g.
torproject.org), so all tabs with
torproject.org in the address bar will use the same circuit. If both tabs were for the same site, it is intended that it uses the same circuit. It will also keep these circuits open for these sites while they are in use
If I select "new circuit" from the menu, I get a different middle node, but the ExitNode does not change.
"New Circuit" or "New Identity" do not guarantee a new exit, it only guarantees that it will use a "new" (previously unused, although possibly pre-built) circuit. It's entirely possible that you would pick the same exit twice in two distinct circuits, due to the way weighting influences the path selection.
Is there a way to force a new ExitNode
Not really, there are some ugly ways to do it but they'd require significant work on your part. There's no real advantage to most Tor users to force a "new" exit node (and infact it could be significantly disadvantageous to anonymity in certain circumstances).
or change the ExitNodes restrictions, without shutting down and relaunching?
You could use the Control Port to reconfigure Tor's ExitNodes configuration, or you can edit the torrc and send a hangup signal (SIGHUP) to the tor process. These would allow you to reconfigure the choice of exits but the choice would be random, another option instead of using
ExitNodes might be to use a
MapAddress directive with the
.exit notation (that is, and should be, disabled by default because of it's serious security and anonymity implications but it will work through a custom
Consider also that there are already tools that are designed to perform an action across a set of exit relays, like
ExitMap, which allows you to look for anomalous behaviour on specific exits.