Пример #1
0
        protected override void CheckDict()
        {
            var listToDelete = new List <WebProxy>();

            foreach (var host in ProxyList)
            {
                CookieDictionary.Add(host, new CachedArray <CookieContainer>(1000 * 60 * 10, () =>
                {
                    try
                    {
                        var cookies = new CookieCollection();

                        var result = new CookieContainer();

                        using (var client = new GetWebClient(host, cookies))
                        {
                            client.Headers["Referer"] = $"{Host.Replace("www", "play")}NewIndex?act=hdpou&webskintype=2";

                            var r = client.DownloadString($"{Host.Replace("www", "play")}onebook?act=hdpou");

                            cookies.Add(client.CookieCollection);

                            var parser = new HtmlParser();

                            var results = parser.Parse(r);

                            var verfCode = results.QuerySelector("input[name=__RequestVerificationToken]").GetAttribute("value");

                            cookies.Add(new Cookie("VerfCode", verfCode, "/", new Uri(Host).Host));
                        }

                        result.Add(cookies);

                        return(result);
                    }
                    catch (Exception)
                    {
                        listToDelete.Add(host);
                        ConsoleExt.ConsoleWriteError($"Dafabet delete address {host.Address} listToDelete {listToDelete.Count}");
                    }

                    return(null);
                }));
            }

            var tasks = ProxyList.AsParallel().Select(host => Task.Factory.StartNew(state => CookieDictionary[host].GetData(), host)).ToArray();

            Task.WaitAll(tasks);

            foreach (var host in listToDelete)
            {
                CookieDictionary.Remove(host);
                ProxyList.Remove(host);
            }
        }
Пример #2
0
        protected override LineDTO[] GetLiveLines()
        {
            var lines = new List <LineDTO>();

            try
            {
                var randomProxy = ProxyList.PickRandom();

                string response;

                using (var wc = new GetWebClient(randomProxy))
                {
                    response = wc.DownloadString($"{Host}offering/v2018/888/listView/all/all/all/all/in-play.json?lang=en_GB&market=En");
                }

                var events = JsonConvert.DeserializeObject <EventResult>(response).Events.Where(e => e.Event.path.All(p => !ForbiddenTournaments.Any(t => p.englishName.ContainsIgnoreCase(t)))).ToList();

                var tasks = new List <Task>();

                tasks.AddRange(events
                               .AsParallel()
                               .WithExecutionMode(ParallelExecutionMode.ForceParallelism)
                               .Select(ev =>
                                       Task.Factory.StartNew(state =>
                {
                    var lns = ParseEvent(ev);

                    lock (Lock) lines.AddRange(lns);
                }, ev)));

                try
                {
                    Task.WaitAll(tasks.ToArray(), 10000);
                }
                catch (Exception e)
                {
                    Log.Info("S888 Task wait all exception, line count " + lines.Count);
                    Console.WriteLine("S888 Task wait all exception, line count " + lines.Count);
                }

                LastUpdatedDiff = DateTime.Now - LastUpdated;

                ConsoleExt.ConsoleWrite(Name, ProxyList.Count, lines.Count(c => c != null), new DateTime(LastUpdatedDiff.Ticks).ToString("mm:ss"));

                return(lines.ToArray());
            }
            catch (Exception e)
            {
                Log.Info($"ERROR S888 {e.Message} {e.StackTrace}");
            }

            return(new LineDTO[] { });
        }
Пример #3
0
        private CookieCollection CloudflareRecaptcha(WebProxy proxy)
        {
            var cookieCollection = new CookieCollection();

            string responseText;

            using (var webClient = new GetWebClient(proxy, cookieCollection))
            {
                try
                {
                    responseText = webClient.DownloadString(Host + "en/live/");
                    cookieCollection.Add(webClient.CookieCollection);
                }
                catch (WebException ex)
                {
                    var response = (HttpWebResponse)ex.Response;

                    var encoding = Encoding.ASCII;
                    using (var reader = new StreamReader(response.GetResponseStream(), encoding)) responseText = reader.ReadToEnd();

                    cookieCollection.Add(response.Cookies);
                }
            }

            if (!string.IsNullOrEmpty(responseText) && responseText.ContainsIgnoreCase("sport"))
            {
                return(cookieCollection);
            }

            var ray     = Regex.Match(responseText, "data-ray=\"(.+?)\"").Groups[1].Value;
            var sitekey = Regex.Match(responseText, "data-sitekey=\"(.+?)\"").Groups[1].Value;
            var stoken  = Regex.Match(responseText, "data-stoken=\"(.+?)\"").Groups[1].Value;

            Log.Info($"FavBet RECAPTCHA Start {sitekey} {stoken}");

            var captchaResponse = RuCaptchaHelper.GetCaptchaResult(sitekey, stoken, Host, proxy.Credentials.GetCredential(proxy.Address, "").UserName, proxy.Address.Host, proxy.Credentials.GetCredential(proxy.Address, "").Password, proxy.Address.Port);

            Log.Info($"FavBet RECAPTCHA Result {captchaResponse}");

            if (captchaResponse.Contains("ERROR"))
            {
                throw new Exception("Error on ReCaptcha resolve");
            }

            using (var webClient = new GetWebClient(proxy, cookieCollection))
            {
                webClient.DownloadData($"{Host}cdn-cgi/l/chk_captcha?id={ray}&g-recaptcha-response={captchaResponse}");
                cookieCollection.Add(webClient.CookieCollection);
            }

            return(cookieCollection);
        }
Пример #4
0
        public static EventFull GetFullLine(long id, WebProxy proxy, string host)
        {
            EventFull e     = null;
            var       retry = 0;

            while (retry < 3)
            {
                try
                {
                    using (var wc = new GetWebClient(proxy))
                    {
                        var response = wc.DownloadString($"{host}offering/v2018/888/betoffer/event/{id}.json?lang=en_GB&market=En");
                        e     = JsonConvert.DeserializeObject <EventFull>(response);
                        retry = 3;
                    }
                }
                catch (WebException)
                {
                    retry++;
                }
                catch (Exception exception)
                {
                    Log.Info("S888 GetFullLine exception " + JsonConvert.SerializeObject(exception));
                    retry = 3;
                }
            }

            //foreach (var offer in e.BetOffers)
            //{
            //    foreach (var outcome in offer.outcomes)
            //    {
            //        ProxyHelper.Update888Events(e.Event[0].sport + " | " + offer.criterion.englishLabel + " | " + offer.betOfferType.englishName + " | " + outcome.englishLabel + " | "+ outcome.line);
            //    }
            //}

            return(e);
        }
Пример #5
0
        protected override void CheckDict()
        {
            var listToDelete = new List <WebProxy>();

            foreach (var host in ProxyList)
            {
                CookieDictionary.Add(host, new CachedArray <CookieContainer>(1000 * 3600 * 6, () =>
                {
                    try
                    {
                        CookieContainer cc;
                        using (var webClient = new GetWebClient(host))
                        {
                            var res = webClient.DownloadString($"{Host}");

                            var i = res.IndexOf("setCookie('", StringComparison.Ordinal);
                            var s = res.Substring(i, 75);

                            var cookieName  = s.Split('\'')[1];
                            var cookieValue = s.Split('\'')[3];

                            cc = webClient.CookieContainer;
                            cc.Add(new Cookie(cookieName, cookieValue, "/", Domain));
                        }

                        Console.WriteLine($"check address {host.Address}");

                        using (var webClient = new Extensions.WebClientEx(host, cc))
                        {
                            var f = webClient.DownloadString(Host);

                            if (!f.ContainsIgnoreCase("leonbets"))
                            {
                                throw new Exception();
                            }
                        }

                        return(cc);
                    }
                    catch (Exception e)
                    {
                        listToDelete.Add(host);
                    }

                    return(null);
                }));
            }

            //проверяем работу хоста
            Parallel.ForEach(ProxyList, host => CookieDictionary[host].GetData());

            //foreach (var webProxy in ProxyList)
            //{
            //    CookieDictionary[webProxy].GetData();
            //}

            foreach (var host in listToDelete)
            {
                CookieDictionary.Remove(host);
                ProxyList.Remove(host);
            }
        }