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); } }
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[] { }); }
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); }
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); }
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); } }