Implement Tor easily into your C# projects.
The Tor implementation was completely taken out of WalletWasabi. The code was stripped of its WalletWasabi related components to serve as a general Tor implementation. I do not own this code and I'm not the intellectual owner of the code. Check WalletWasabi commits for that. The project was created for learning purposes only.
- Use TorSettings class to customize your Tor instance.
- Use OnionHttpClientFactory to create TorHttpClient.
- Use TorHttpClient to send requests.
- Use it on client and/or server side.
// You can use the EnvironmentHelpers to grab the data dir or insert your own path/of/data/directory.
var dataDir = EnvironmentHelpers.GetDataDir("Sample-Project");
// Create your Tor Settings
var torSetting = new TorSettings(dataDir,
distributionFolderPath: EnvironmentHelpers.GetFullBaseDirectory(),
terminateOnExit: true,
TorMode.Enabled,
socksPort: 37155,
controlPort: 37156);
// Create and start TorProcessManager which will start tor.exe
TorProcessManager torProcessManager = new TorProcessManager(torSetting);
await torProcessManager.StartAsync(attempts: 3, CancellationToken.None);
// Create the OnionHttpFactory
var onionClientFactory = new OnionHttpClientFactory(torSetting.SocksEndpoint.ToUri("socks5"));
// Create Http Clients
var myHttpClient = onionClientFactory.CreateClient("name-of-your-client");
// Send requests to onion address (for example)
await myHttpClient.GetAsync("http://explorerzydxu5ecjrkwceayqybizmpjjznk5izmitf2modhcusuqlid.onion/api/mempool/recent");The nuget package contains a built-in tor.exe. In case you don't trust it, you can replace it with a tor.exe you get by yourself. Download tor.exe from the official site and replace the executable with your new one.