Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }