Ganz simpler C# Code für das LCR, man holt sich den günstigsten Tarif von einer Webseite und fügt diesen in die Rufbehandlung als Provider ein.
Man kann es natürlich auch direkt mit curl machen, dafür schreib ich auch noch ein Script. Das hier hab ich in 10 Minuten gebaut und das kann wirklich jeder.
Natürlich geht das auch Headless ohne Browser aber zur Ansicht ist es ganz nützlich wenn man sieht was der Firefox so macht. Den Firefox driver kann man ganz einfach gegen jeden x-beliebigen driver austauschen!
Man kann es natürlich auch direkt mit curl machen, dafür schreib ich auch noch ein Script. Das hier hab ich in 10 Minuten gebaut und das kann wirklich jeder.
Natürlich geht das auch Headless ohne Browser aber zur Ansicht ist es ganz nützlich wenn man sieht was der Firefox so macht. Den Firefox driver kann man ganz einfach gegen jeden x-beliebigen driver austauschen!
Code:
static void fritzboxlcr(string username, string password)
{
string port = FreeTcpPort().ToString();
string driverPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string driverExecutable = "geckodriver.exe";
FirefoxDriverService driverService = FirefoxDriverService.CreateDefaultService(driverPath, driverExecutable);
driverService.FirefoxBinaryPath = @"C:\Program Files\Firefox Developer Edition\firefox.exe -port " + port;
driverService.Port = Int32.Parse(port);
FirefoxOptions options = new FirefoxOptions();
FirefoxProfile ff = new FirefoxProfile(@"C:\selenium\firefox.profiles\dqbtmm1a.SeleniumFritzbox");
options.Profile = ff;
options.AddArgument("-port " + port);
options.UseLegacyImplementation = false;
options.AcceptInsecureCertificates = true;
options.LogLevel = FirefoxDriverLogLevel.Debug;
options.SetPreference("marionette.port", port);
options.SetPreference("webdriver.gecko.driver", driverPath+@"\geckodriver.exe -port " + port);
Console.WriteLine("Load Webdriver Begin: " + GetTimestamp(DateTime.Now));
IWebDriver driver = new FirefoxDriver(options);
Console.WriteLine("Load Webdriver End: " + GetTimestamp(DateTime.Now));
driver.Url = "https://www.billiger-telefonieren.de/festnetz/schnellrechner/ergebnis/?accessModeCallByCall=true&accessModeCallthrough=false&accessModePreselection=false&accessModeCallingCard=false&onlyWithoutRegistration=false&onlyWithoutConnectionFee=false&onlyWithTariffAnnouncement=false&onlyWithoutSimilarPrefixes=false&mergeDefaults=false&destinationId=56&phoneCallDuration=60&billingIncrement=60-60&onlyWithoutRegistration=true&onlyWithoutConnectionFee=true&onlyWithoutBreakout=true&rechnen=";
IWebElement element = driver.FindElement(By.ClassName("cms-widget_calculator_result_list"));
string myProvider = element.FindElement(By.CssSelector("li:nth-child(2) > ul:nth-child(1) > li:nth-child(2) > div:nth-child(2)")).Text;
driver.Url = "http://192.168.178.1/";
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
string title = (string)js.ExecuteScript("return document.title");
element = driver.FindElement(By.Id("uiViewUser"));
element.SendKeys(username);
element = driver.FindElement(By.Id("uiPass"));
element.SendKeys(password);
Thread.Sleep(5000);
element = driver.FindElement(By.Id("submitLoginBtn"));
element.Click();
driver.FindElement(By.Id("tel")).Click();
Thread.Sleep(5000);
driver.FindElement(By.Id("callHan")).Click();
Thread.Sleep(5000);
driver.FindElement(By.Id("dialProv")).Click();
Thread.Sleep(5000);
element = driver.FindElement(By.Id("uiPrefix1"));
element.Clear();
element.SendKeys(myProvider);
Thread.Sleep(5000);
driver.FindElement(By.Id("btnSave")).Click();
Thread.Sleep(5000);
driver.Close();
driver.Quit();
}