private async Task GetChatCount(long number) { try { _driver = Utility.RefreshDriver(clsAdvertise.IsSilent); await Utility.Wait(); var link = _driver.FindElements(By.TagName("span")).Any(q => q.Text == "حساب من"); if (!link) { return; } await Utility.Wait(); _driver.FindElements(By.TagName("span")).FirstOrDefault(q => q.Text == "حساب من")?.Click(); await Utility.Wait(); var badge = _driver.FindElements(By.ClassName("badge")).Any(); if (!badge) { return; } await Utility.Wait(); var newChat = _driver.FindElement(By.ClassName("badge"))?.FindElement(By.TagName("span"))?.Text ?? ""; if (string.IsNullOrEmpty(newChat)) { return; } var sim = await SimcardBussines.GetAsync(number); TelegramSender.GetChatLog_bot() .Send( $"#چت_شیپور \r\nسیستم مرجع: {await Utilities.GetNetworkIpAddress()} \r\n شماره: {number} \r\n مالک: {sim.Owner} \r\n تعداد چت شیپور: {newChat.FixString()}"); } catch (Exception ex) { WebErrorLog.ErrorInstence.StartErrorLog(ex); } }
public async Task <bool> Login(long simCardNumber, bool isFromSimcard) { try { var sim_ = await SimcardBussines.GetAsync(simCardNumber); if (isFromSimcard) { _driver = Utility.RefreshDriver(clsAdvertise.IsSilent); var simBusiness = await Utility.CheckToken(simCardNumber, AdvertiseType.Sheypoor); // در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند if (!simBusiness.HasError) { // token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32); _driver.Navigate().GoToUrl("https://www.sheypoor.com"); _driver.Manage().Cookies.DeleteCookieNamed("ts"); var newToken = new OpenQA.Selenium.Cookie("ts", simBusiness.value); _driver.Manage().Cookies.AddCookie(newToken); _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings"); var linksElements = _driver.FindElements(By.TagName("a")).ToList(); foreach (var link in linksElements) { if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout")) { continue; } _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');"); await Utility.Wait(); _driver.SwitchTo().Alert().Accept(); return(true); } } //اگر قبلا توکن نداشته و یا توکن اشتباه باشد وارد صفحه دریافت کد تائید لاگین می شود _driver.Manage().Timeouts().PageLoad = new TimeSpan(0, 2, 0); _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings"); //var all = _driver.Manage().Cookies.AllCookies; if (_driver.FindElements(By.Id("username")).Count > 0) { _driver.FindElement(By.Id("username")).SendKeys(simCardNumber + "\n"); } //انتظار برای لاگین شدن int repeat = 0; //حدود 120 ثانیه فرصت لاگین دارد while (repeat < 20) { //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود var badGateWay = _driver.FindElements(By.TagName("h1")) .Any(q => q.Text == "502 Bad Gateway" || q.Text == "Error 503 Service Unavailable"); if (badGateWay) { return(false); } var message = $@"مالک: {sim_.Owner} \r\nشماره: {simCardNumber} \r\nلطفا لاگین نمائید "; _driver.ExecuteJavaScript($"alert('{message}');"); //Wait(); await Utility.Wait(5); try { _driver.SwitchTo().Alert().Accept(); await Utility.Wait(10); repeat++; } catch { await Utility.Wait(15); } var linksElements = _driver?.FindElements(By.TagName("a")).ToList() ?? null; AdvTokenBussines advToken = null; foreach (var link in linksElements) { if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout")) { continue; } advToken = await AdvTokenBussines.GetTokenAsync(simCardNumber, AdvertiseType.Sheypoor); var token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32); if (advToken != null) { advToken.Token = token; } else { advToken = new AdvTokenBussines() { Type = AdvertiseType.Sheypoor, Token = token, Number = simCardNumber, Guid = Guid.NewGuid(), } }; await advToken.SaveAsync(); _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');"); await Utility.Wait(); _driver.SwitchTo().Alert().Accept(); return(true); } } var linksElements1 = _driver?.FindElements(By.TagName("a")).FirstOrDefault(q => q.Text == "خروج") ?? null; if (linksElements1 == null) { var msg = $@"فرصت لاگین کردن به اتمام رسید. لطفا دقایقی بعد مجددا امتحان نمایید"; _driver.ExecuteJavaScript($"alert('{msg}');"); _driver.SwitchTo().Alert().Accept(); await Utility.Wait(3); } await Utility.Wait(); } else { _driver = Utility.RefreshDriver(clsAdvertise.IsSilent); var simBusiness = await Utility.CheckToken(simCardNumber, AdvertiseType.Sheypoor); // در صورتیکه توکن قبلا ثبت شده باشد لاگین می کند if (!simBusiness.HasError) { // token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32); _driver.Navigate().GoToUrl("https://www.sheypoor.com"); _driver.Manage().Cookies.DeleteCookieNamed("ts"); var newToken = new OpenQA.Selenium.Cookie("ts", simBusiness.value); _driver.Manage().Cookies.AddCookie(newToken); _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings"); var linksElements = _driver.FindElements(By.TagName("a")).ToList(); foreach (var link in linksElements) { if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout")) { continue; } _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');"); await Utility.Wait(); _driver.SwitchTo().Alert().Accept(); return(true); } } _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings"); //انتظار برای لاگین شدن int repeat = 0; //حدود 120 ثانیه فرصت لاگین دارد while (repeat < 5) { //تا زمانی که لاگین اوکی نشده باشد این حلقه تکرار می شود var badGateWay = _driver.FindElements(By.TagName("h1")) .Any(q => q.Text == "502 Bad Gateway" || q.Text == "Error 503 Service Unavailable"); if (!badGateWay) { return(false); } var message = $@"مالک: {sim_.Owner} \r\nشماره: {simCardNumber} \r\nلطفا لاگین نمائید "; _driver.ExecuteJavaScript($"alert('{message}');"); //Wait(); await Utility.Wait(2); try { _driver.SwitchTo().Alert().Accept(); await Utility.Wait(1); repeat++; } catch { await Utility.Wait(15); } var linksElements = _driver?.FindElements(By.TagName("a")).ToList() ?? null; AdvTokenBussines advToken = null; foreach (var link in linksElements) { if (link?.GetAttribute("href") == null || !link.GetAttribute("href").Contains("logout")) { continue; } var token = _driver.Manage().Cookies.GetCookieNamed("ts").ToString().Substring(3, 32); advToken = await AdvTokenBussines.GetTokenAsync(simCardNumber, AdvertiseType.Sheypoor); if (advToken != null) { advToken.Token = token; } else { advToken = new AdvTokenBussines() { Type = AdvertiseType.Sheypoor, Token = token, Number = simCardNumber, Guid = Guid.NewGuid(), } }; } await advToken?.SaveAsync(); _driver.ExecuteJavaScript(@"alert('لاگین انجام شد');"); await Utility.Wait(); _driver.SwitchTo().Alert().Accept(); return(true); } } await Utility.Wait(); TelegramSender.GetChatLog_bot().Send( $"#نداشتن_توکن \r\n سیستم مرجع: {await Utilities.GetNetworkIpAddress()} \r\n شماره {simCardNumber} به مالکیت {sim_.Owner} توکن ارسال آگهی شیپور داشته، اما منقضی شده و موفق به لاگین نشد " + $"\r\n به همین سبب توکن شیپور این شماره از دیتابیس حذف خواهد شد " + $"\r\n لطفا نسبت به دریافت مجدد توکن اقدام گردد."); var advTokens = await AdvTokenBussines.GetTokenAsync(simCardNumber, AdvertiseType.Sheypoor); await advTokens?.RemoveAsync(); return(false); } catch (WebException) { return(false); } catch (Exception ex) { if (ex.Source != "WebDriver") { WebErrorLog.ErrorInstence.StartErrorLog(ex); } return(false); } }
public async Task StartRegisterAdv(AdvertiseLogBussines adv, long number) { var counter = 0; try { var res__ = await Utilities.PingHostAsync(); while (res__.HasError) { await Utility.Wait(10); lstMessage.Clear(); lstMessage.Add("خطای اتصال به شبکه"); Utility.ShowBalloon("لطفا اتصال به شبکه را چک نمایید", lstMessage); counter++; } var sim = await SimcardBussines.GetAsync(number); if (sim.isSheypoorBlocked) { lstMessage.Clear(); lstMessage.Add($"نوع آگهی: شیپور"); lstMessage.Add($"شماره: {number}"); lstMessage.Add($"مالک: {sim.Owner}"); lstMessage.Add("بدلیل بلاک بودن، موفق به لاگین نشد"); Utility.ShowBalloon("عدم انجام لاگین", lstMessage); sim.NextUseSheypoor = DateTime.Now.AddDays(1); await sim.SaveAsync(); return; } var tt = await Utility.CheckToken(number, AdvertiseType.Sheypoor); if (tt.HasError) { lstMessage.Clear(); lstMessage.Add($"نوع آگهی: شیپور"); lstMessage.Add($"شماره: {number}"); lstMessage.Add($"مالک: {sim.Owner}"); lstMessage.Add("بدلیل توکن نداشتن، موفق به لاگین نشد"); Utility.ShowBalloon("عدم انجام لاگین", lstMessage); sim.NextUseSheypoor = DateTime.Now.AddDays(1); await sim.SaveAsync(); return; } if (!await Login(number, false)) { return; } await GetChatCount(number); var res_ = await RegisterAdv(adv); if (res_.HasError) { return; } //تشخیص بلاکی _driver.Navigate().GoToUrl("https://www.sheypoor.com/session/myListings"); await Utility.Wait(2); var el = _driver.FindElements(By.TagName("article")).Any(); await Utility.Wait(); if (el) { return; } TelegramSender.GetChatLog_bot().Send($"#گزارش_تشخیص_بلاکی_در_شیپور \r\n" + $" سیمکارت {number} " + $"\r\n به مالکیت {sim.Owner}" + $" \r\n در تاریخ {Calendar.MiladiToShamsi(DateTime.Now)} " + $"\r\n و ساعت {DateTime.Now.ToLongTimeString()} " + $"\r\n از سوی ربات، بلاک شده تشخیص داده شد"); } catch (WebDriverException) { } catch (Exception ex) { WebErrorLog.ErrorInstence.StartErrorLog(ex); } }