Following this nice tutorial (quite old but good anyways ) : http://www.geeknewz.fr/tuto-proxy-socks-via-ssh-sur-synology-15567
Here is the same thing, but aotumatised in C#: don’t forget to replace YOUR_SYNOLOGY_DNS_OR_IP_HERE with your synology address or DNS name
and also your syno admin password instead of YOUR_SYNOLOGY_PASSWORD_HERE
you can’t slightly change code to not have to type your password every new connection (Console.ReadLine()…and remove:
cmd.StandardInput.WriteLine("./myscript.sh"); cmd.StandardInput.WriteLine("y"); cmd.StandardInput.WriteLine("exit");
using Microsoft.Win32; using Microsoft.Win32; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Firefox; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace MyProxyTunnel { class Program { private static bool keepRunning = true; static void Main(string[] args) { //CTRL+C to quit console app Console.CancelKeyPress += delegate (object sender, ConsoleCancelEventArgs e) { e.Cancel = true; Program.keepRunning = false; }; //PART 1 : //checks which browsers are installed RegistryKey browserKeys; //on 64bit the browsers are in a different location browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Clients\StartMenuInternet"); if (browserKeys == null) browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Clients\StartMenuInternet"); string[] browserNames = browserKeys.GetSubKeyNames(); var driverpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); IWebDriver driver = null; //PART II : run proxy tunnel Process cmd = new Process(); cmd.StartInfo.FileName = @"C:\Program Files (x86)\PuTTY\plink.exe"; cmd.StartInfo.UseShellExecute = false; cmd.StartInfo.RedirectStandardInput = true; cmd.StartInfo.RedirectStandardOutput = true; cmd.StartInfo.Arguments = " -ssh admin@YOUR_SYNOLOGY_DNS_OR_IP_HERE:443 -pw YOUR_SYNOLOGY_PASSWORD_HERE -C -T -D 443 -N"; cmd.Start(); //this below is for removing the 'enter "yes"' keyboard confirmation cmd.StandardInput.WriteLine("./myscript.sh"); cmd.StandardInput.WriteLine("y"); cmd.StandardInput.WriteLine("exit"); // string output = cmd.StandardOutput.ReadToEnd(); //PART III : run browser if (browserNames.Contains("Google Chromes")) { //starts chrome with custom proxy settings ; you need chromedriver.exe //just install the WebDriver from Nuget Package manager ChromeOptions options = new ChromeOptions(); options.AddArguments("--proxy-server=socks5://localhost:443"); driver = new ChromeDriver(driverpath, options); } else if (browserNames.Contains("FIREFOX.EXE")) { //else starts firefox //Create a new Firefox profile var firefoxProfile = new FirefoxProfile(); //Create a new proxy object var proxy = new Proxy() { SocksProxy = "localhost:443" }; //We then add this proxt setting to the Firefox profile we created firefoxProfile.SetProxyPreferences(proxy); //Then create a new Firefox Driver passing in the profile we created //WebDriver we open a Firefox using this profile now driver = new FirefoxDriver(firefoxProfile); } if (driver != null) driver.Navigate().GoToUrl("http://www.google.fr"); } } }