# How to change circuit programmatically in TorBrowser?

**URL:** https://forum.torproject.org/t/how-to-change-circuit-programmatically-in-torbrowser/10611
**Category:** Tor Browser Desktop
**Created:** [December 13, 2023, 4:48pm UTC](https://forum.torproject.org/t/how-to-change-circuit-programmatically-in-torbrowser/10611 "2023-12-13T16:48:32Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![coder4589](https://forum.torproject.org/letter_avatar_proxy/v4/letter/c/898d66/32.png) [@coder4589](https://forum.torproject.org/u/coder4589)
#### Post date: [December 13, 2023, 4:48pm UTC](https://forum.torproject.org/t/how-to-change-circuit-programmatically-in-torbrowser/10611/1 "2023-12-13T16:48:32Z")

</div>

It was possible to change circuit programmatically by using the codes below:

```auto
Cc["@torproject.org/domain-isolator;1"].getService(Ci.nsISupports).wrappedJSObject.newCircuitForDomain("domain.com");

```

or

```auto
domainIsolator = Cc["@torproject.org/domain-isolator;1"].getService(Ci.nsISupports).wrappedJSObject;

domainIsolator.newCircuitForDomain("domain.com");

```

Now the codes don’t work.

It is useful to change circuit programmatically in situations when “Domain 1” redirects to “Domain 2” because the “IP” is blocked, and when “New Circuit” button is triggered, the circuit for “Domain 2” is changed instead for “Domain 1”, thus, “Domain 1” will keep redirecting to “Domain 2” because “Domain 1” circuit was not changed.

\_\_\_\_ [Update]: \_\_\_\_

I found the code below so far, but it works exactly the same way as “New Circuit” button:

```auto
TorDomainIsolator.newCircuitForBrowser(gBrowser);

```

The function above somewhere calls the function below:

```auto
this.#newCircuitForDomain(firstPartyDomain);

```

So I tried the function calls below (but none worked):

```auto
this.#newCircuitForDomain("doamin.com");

TorDomainIsolator.#newCircuitForDomain("doamin.com");

TorDomainIsolator.newCircuitForDomain("doamin.com");

```

---

<div class="post-metadata">

### Author: ![coder4589](https://forum.torproject.org/letter_avatar_proxy/v4/letter/c/898d66/32.png) [@coder4589](https://forum.torproject.org/u/coder4589)
#### Post date: [December 15, 2023, 11:09am UTC](https://forum.torproject.org/t/how-to-change-circuit-programmatically-in-torbrowser/10611/2 "2023-12-15T11:09:58Z")

</div>

\_\_\_\_ [Temporary Solution]: \_\_\_\_

```auto
Fake_gBrowser = {};
Fake_gBrowser.selectedBrowser = {};
Fake_gBrowser.selectedBrowser.contentPrincipal = {};
Fake_gBrowser.selectedBrowser.contentPrincipal.originAttributes = {};
Fake_gBrowser.selectedBrowser.contentPrincipal.originAttributes.firstPartyDomain = "google.com"; 

TorDomainIsolator.newCircuitForBrowser(Fake_gBrowser);

```

The above codes will change the circuit of a given domain by using “Fake\_gBrowser”.

The below code is just for testing purpose, “gBrowser” and “Fake\_gBrowser” return different domains:

```auto
console.log( //"gBrowser" returns the domain of the current selected Tab

     gBrowser.selectedBrowser.contentPrincipal.originAttributes.firstPartyDomain

 + "\n\n" +

Fake_gBrowser.selectedBrowser.contentPrincipal.originAttributes.firstPartyDomain
);

```

---

<div class="post-metadata">

### Author: ![coder4589](https://forum.torproject.org/letter_avatar_proxy/v4/letter/c/898d66/32.png) [@coder4589](https://forum.torproject.org/u/coder4589)
#### Post date: [December 20, 2023, 7:33pm UTC](https://forum.torproject.org/t/how-to-change-circuit-programmatically-in-torbrowser/10611/3 "2023-12-20T19:33:06Z")

</div>

This issue is being discussed here: [Changing circuit programmatically in Tor Browser not working anymore! (#42338) · Issues · The Tor Project / Applications / Tor Browser · GitLab](https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/42338)

---

<div class="post-metadata">

### Author: ![coder4589](https://forum.torproject.org/letter_avatar_proxy/v4/letter/c/898d66/32.png) [@coder4589](https://forum.torproject.org/u/coder4589)
#### Post date: [February 22, 2024, 8:17am UTC](https://forum.torproject.org/t/how-to-change-circuit-programmatically-in-torbrowser/10611/4 "2024-02-22T08:17:08Z")

</div>

\_\_\_\_ [Definitive Solution]: \_\_\_\_

`TorDomainIsolator.newCircuitForDomain("google.com")`

“[google.com](http://google.com)” used just as an example.

Issue fixed in Tor Browser 13.0.10

---

<div class="post-metadata">

### Author: ![system](https://forum.torproject.org/uploads/default/original/2X/d/d3424bed34f4ec18b2e99178c2801ba6dfb655d6.png) [@system](https://forum.torproject.org/u/system)
#### Post date: [February 23, 2024, 8:17am UTC](https://forum.torproject.org/t/how-to-change-circuit-programmatically-in-torbrowser/10611/5 "2024-02-23T08:17:09Z")

</div>

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.
