protected override void CheckDict() { var hostsToDelete = new List <WebProxy>(); Parallel.ForEach(ProxyList, (host, state) => { try { Console.WriteLine($"888sport check address {host.Address}"); using (var webClient = new Extensions.WebClientEx(host)) { webClient.DownloadString("https://eu-offering.kambicdn.org/offering/v2018/888/listView/all/all/all/all/in-play.json?lang=en_GB&market=En"); } } catch (Exception e) { hostsToDelete.Add(host); Log.Info($"888sport delete address {host.Address} {host.Credentials.GetCredential(host.Address, "").UserName} listToDelete {hostsToDelete.Count}"); } }); foreach (var host in hostsToDelete) { ProxyList.Remove(host); } }
protected override void CheckDict() { var hostsToDelete = new List <WebProxy>(); Parallel.ForEach(ProxyList, (host, state) => { try { using (var webClient = new Extensions.WebClientEx(host)) { Console.WriteLine($"Bwin Lines Check Proxy {host.Address}"); webClient.DownloadString(Host); } } catch (Exception) { Console.WriteLine($"Bwin Lines DELETE Proxy {host.Address}"); hostsToDelete.Add(host); } }); foreach (var host in hostsToDelete) { ProxyList.Remove(host); } }
protected override LineDTO[] GetLiveLines() { try { var tempData = CachedArray.GetData(); if (tempData.NeedUpdate) { using (var wc = new Extensions.WebClientEx(ProxyList.PickRandom())) { wc.Encoding = Encoding.Default; wc.Headers["Referer"] = tempData.Referer; tempData.Html = wc.DownloadString(tempData.Url); } } else { tempData.NeedUpdate = true; } var converter = new ParimatchLineConverter(); var lines = converter.Convert(tempData, Name); LastUpdatedDiff = DateTime.Now - LastUpdated; ConsoleExt.ConsoleWrite(Name, ProxyList.Count, lines.Length, new DateTime(LastUpdatedDiff.Ticks).ToString("mm:ss")); return(lines); } catch { return(new LineDTO[] { }); } }
private TempData UpdateUrls(object data) { Func <string, string> load = x => { using (var wc = new Extensions.WebClientEx(ProxyList.PickRandom())) { wc.Headers["Upgrade-Insecure-Requests"] = "1"; wc.Headers["Referer"] = $"{Host}/en/live.html"; return(wc.DownloadString(x)); } }; var url = $"{Host}/en/live_as.html?curs=0&curName=$&shed=0"; var html = load(url); var parser = new HtmlParser(); var doc = parser.Parse(html); var inputs = doc.QuerySelectorAll("input.ch_l"); var values = inputs.Select(x => x.GetAttribute("value").ToInt()).ToList(); var hl = string.Join(",", values); var he = string.Join(",", values.OrderBy(x => x)); var tempData = new TempData { Referer = $"{Host}/en/bet.html?ARDisabled=on&hl={hl}" }; tempData.Html = load(tempData.Referer); tempData.NeedUpdate = false; tempData.Url = $"{Host}/en/live_ar.html?ARDisabled=on&hl={hl}&he={he}&curs=0&curName=$"; return(tempData); }
protected override void UpdateLiveLines() { try { var st = new Stopwatch(); st.Start(); var hostList = CookieDictionary.Select(c => c.Key).ToList(); var lines = new List <LineDTO>(); EventsList data; var randHost = hostList.PickRandom(); using (var webClient = new Extensions.WebClientEx(randHost, CookieDictionary[randHost].GetData())) { var d = webClient.DownloadString(Host + "bet-on-live-matches"); var f = eventsListRegex.Match(d).Groups["type"].Value; data = JsonConvert.DeserializeObject <EventsList>(f); } var actualEvents = data.events.Where(e => e.open).ToList(); Parallel.ForEach(actualEvents.ToList(), @event => { var task = Task.Factory.StartNew(() => { var retry = 0; while (retry < 3) { try { var proxy = hostList.PickRandom(); using (var webClient = new Extensions.WebClientEx(proxy, CookieDictionary[proxy].GetData())) { var json = webClient.DownloadString(string.Format("{1}rest/betline/event/inplay?ctag=en-US&eventId={0}", @event.Id, Host)); @event = JsonConvert.DeserializeObject <Event>(json); var converter = new LeonBetsLineConverter(); var r = converter.Convert(@event, Name); lock (Lock) lines.AddRange(r); return; } } catch (WebException) { retry++; } catch (JsonReaderException) { retry++; } catch (Exception e) { Log.Info("LeonBets error " + JsonConvert.SerializeObject(e)); retry = 3; } } }); if (!task.Wait(10000)) { Log.Info("Leonbets Task wait exception"); } }); LastUpdatedDiff = DateTime.Now - LastUpdated; ConsoleExt.ConsoleWrite(Name, ProxyList.Count, lines.Count, new DateTime(LastUpdatedDiff.Ticks).ToString("mm:ss")); ActualLines = lines.ToArray(); } catch (Exception e) { Log.Info($"ERROR {e.Message} {e.InnerException}"); Console.WriteLine($"ERROR {e.Message} {e.InnerException}"); } }
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); } }
protected override void CheckDict() { var listToDelete = new List <WebProxy>(); foreach (var host in ProxyList) { CookieDictionary.Add(host, new CachedArray <CookieContainer>(1000 * 3600 * 3, () => { try { var cc = new CookieContainer(); ConsoleExt.ConsoleWriteError($"Favbet check address {host.Address}"); cc.Add(PassCloudFlare(host)); using (var wc = new Extensions.WebClientEx(host, cc)) { wc.Headers["User-Agent"] = GetWebClient.DefaultUserAgent; wc.DownloadString(Host + "en/live/"); //var d = wc.ResponseHeaders["Set-Cookie"]; //foreach (var match in d.Split(',').Select(singleCookie => Regex.Match(singleCookie, "(.+?)=(.+?);")).Where(match => match.Captures.Count != 0)) //{ // var name = match.Groups[1].ToString(); // var value = match.Groups[2].ToString(); // if (name == "PHPSESSID") cc.Add(new Cookie(name, value) { Domain = ProxyHelper.GetDomain(Host) }); //} cc.Add(wc.CookieContainer.GetAllCookies()); } return(cc); } catch (Exception e) { listToDelete.Add(host); ConsoleExt.ConsoleWriteError($"Favbet delete address {host.Address} listToDelete {listToDelete.Count}"); } return(null); })); } var tasks = ProxyList.AsParallel().Select(host => Task.Factory.StartNew(state => CookieDictionary[host].GetData(), host)).ToArray(); //foreach (var host in ProxyList) //{ // CookieDictionary[host].GetData(); //} Task.WaitAll(tasks); foreach (var host in listToDelete) { CookieDictionary.Remove(host); ProxyList.Remove(host); } }
protected override void UpdateLiveLines() { var randomProxy = ProxyList.PickRandom(); var st = new Stopwatch(); st.Start(); try { var matchList = new List <long>(); var cookies = CookieDictionary[randomProxy].GetData(); using (var client = new Extensions.WebClientEx(randomProxy, cookies)) { client.Headers["X-Requested-With"] = "XMLHttpRequest"; client.Headers["Content-Type"] = "application/x-www-form-urlencoded"; client.Headers["__VerfCode"] = cookies.GetAllCookies()["VerfCode"].Value; var response = client.UploadString($"{Host.Replace("www", "play")}OddsManager/Standard", "FixtureType=l&SportType=1&LDisplayMode=0&Scope=MainMarket&IsParlay=false"); var t = JsonConvert.DeserializeObject <MatchDataResult>(response); foreach (var league in t.leagues) { //убираем запрещенные чемпионаты if (league.LeagueName.ContainsIgnoreCase(LeagueStopWords.ToArray())) { continue; } matchList.AddRange(league.matches.Where(m => m.IsLive).Select(m => m.MatchId).ToList()); } } st.Stop(); Log.Info("Dafabet after OddsManager/Standard request " + st.Elapsed); var tf = new List <long>(); tf.AddRange(_linesDictionary.Where(lineDtose => !matchList.Contains(lineDtose.Key)).Select(l => l.Key)); //удаляем устаревшие события foreach (var lineDtose in tf) { _linesDictionary.Remove(lineDtose); } //добавляем новые события foreach (var matchId in matchList) { if (_linesDictionary.ContainsKey(matchId)) { continue; } _linesDictionary.Add(matchId, new EventUpdateObject(() => { var random = ProxyList.PickRandom(); using (var cl = new Extensions.WebClientEx(random, CookieDictionary[randomProxy].GetData())) { cl.Headers["X-Requested-With"] = "XMLHttpRequest"; cl.Headers["Content-Type"] = "application/x-www-form-urlencoded"; cl.Headers["__VerfCode"] = cookies.GetAllCookies()["VerfCode"].Value; var res = cl.UploadString(new Uri($"{Host.Replace("www", "play")}OddsManager/Standard"), $"FixtureType=l&SportType=1&LDisplayMode=0&Scope=Match&IsParlay=false&MatchId={matchId}"); var converter = new DafabetConverter(); return(converter.Convert(res, Name).ToList()); } })); } LastUpdatedDiff = DateTime.Now - LastUpdated; ConsoleExt.ConsoleWrite(Name, ProxyList.Count, ActualLines.Length, new DateTime(LastUpdatedDiff.Ticks).ToString("mm:ss")); //ActualLines = lines.ToArray(); } catch (Exception e) { Log.Info($"ERROR Dafabet {e.Message} {e.StackTrace}"); } }