2

I'm trying to launch Tor browser via puppeteer-sharp. I am using .net core 3.1 console application and latest version of puppeteer-sharp. So far the given the executable path console application launches the Tor Browser with an exception.

using PuppeteerSharp;
using System.Threading;
using System.Threading.Tasks;

 
namespace puppeteer_tor
{
    internal class Program
    {
        static async Task Main(string[] args)
        {

            string enableAutomation = "--enable-automation";
            string noSandBox = "--no-sandbox";
            string disableSetUidSandBox = "--disable-setuid-sandbox";
            string[] argumentsWithoutExtension = new string[] { "C:\\Users\\selaka.nanayakkara\\Desktop\\Tor Browser\\Browser\\TorBrowser\\Data\\profile.default", "--proxy-server=socks5://127.0.0.1:9050", "--disable-gpu", "--disable-dev-shm-usage", enableAutomation, disableSetUidSandBox, noSandBox };

            var options = new LaunchOptions
            {
                Headless = false,
                ExecutablePath = @"C:\Users\selaka.nanayakkara\Desktop\Tor Browser\Browser\firefox.exe",
                Args = argumentsWithoutExtension
            };

            using (var browser = await Puppeteer.LaunchAsync(options))
            {
                Thread.Sleep(5000);
                var page = await browser.NewPageAsync();
                await page.GoToAsync("https://check.torproject.org/");
                var element = await page.WaitForSelectorAsync("h1");
                var text = element.ToString();

            }
        }

    }

}

The browser launches with an issue and gives me the exception of :

Failed to launch browser!

With the below screen of the Tor browser :

enter image description here

Your help is much appreciated in the above issue. Thanks in advance.

Please find the attach code base here.

Selaka Nanayakkara
  • 3,296
  • 1
  • 22
  • 42

2 Answers2

1

Set the Headless to true nad try

var options = new LaunchOptions
{
    Headless = true,
    ExecutablePath = @"C:\Program Files\Mozilla Firefox\firefox.exe",
    Args = argumentsWithoutExtension
};
Sachith Wickramaarachchi
  • 5,546
  • 6
  • 39
  • 68
1

After many pitfalls I was able to find the puppeteer-sharp to work along with Tor Browser. For anyone who is interested please find the below code attached here with :

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using PuppeteerSharp;
using System;
using System.Threading;
using System.Threading.Tasks;


namespace puppeteer_tor
{
    internal class Program
    {
        static async Task Main(string[] args)
        {


            // Initiating Browser configuration
            Console.WriteLine("Intiating Tor Browser");
 
             Browser browser = (Browser)await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = false,
                ExecutablePath = @"C:\Users\selaka.nanayakkara\Desktop\Tor Browser\Browser\firefox.exe",
                Product = Product.Firefox,
                UserDataDir = @"C:\Users\selaka.nanayakkara\Desktop\Tor Browser\Browser\TorBrowser\Data\profile.default",
                DefaultViewport = null,
                IgnoreHTTPSErrors = true,
                Args = new[] { "-wait-for-browser" }
            });

            // Enabling prxoy connectivilty
            Console.WriteLine("Intiating Tor proxy");
            var page = await browser.PagesAsync();
            Page page1 =(Page)page[0];
            await page1.ClickAsync("#connectButton");

            // Loading geoblocked url.
            Console.WriteLine("Navigating to the URL");
            Page page3 =(Page)await browser.NewPageAsync();
            page3.DefaultNavigationTimeout = 0;
            await page3.GoToAsync("http://nebraskalegislature.gov/laws/browse-chapters.php?chapter=20");

            // Fetching content from the page.
            Console.WriteLine("Fetching content in the URL.");
            var content = await page3.GetContentAsync();
            
            Console.WriteLine("Content fetching completed! ");

            // Closing Browser
            Console.WriteLine("Closing browser.");
            await browser.CloseAsync();

         }
    }

 }

Sample git repository : https://github.com/SelakaKithmal/puppeteer-tor

Selaka Nanayakkara
  • 3,296
  • 1
  • 22
  • 42