Пример #1
0
        static async Task <(Credentials credentials, CookieContainer cookies)> SignUp()
        {
            for (int i = 0; i < SignUpAttempts; i++)
            {
                try
                {
                    var user = await TempMail.CreateRandomUser();

                    var cookies = await PrivateTunnel.SignUp(user);

                    Cache.SaveCredentials(user, cookies);

                    return(user, cookies);
                }
                catch (Exception) { }
            }

            return(null, null);
        }
Пример #2
0
        public static async Task <CookieContainer> SignUp(Credentials user)
        {
            var timer = Stopwatch.StartNew();

            string encodedEmail = WebUtility.UrlEncode(user.Email);

            string request =
                $"https://www.privatetunnel.com/jsonapi25/ptuserAPI.php" +
                $"?email={encodedEmail}&email2={encodedEmail}" +
                $"&request=register&tos=Yes" +
                $"&epassword={WebUtility.UrlEncode(user.Password.ToBase64())}" +
                $"&callback=angular.callbacks._0";

            var cookies = new CookieContainer();

            using (var client = new HttpClient(new HttpClientHandler
            {
                UseCookies = true,
                CookieContainer = cookies
            }))
            {
                WriteLine($"{user.Email}: Registering new account...");
                await client.GetAsync(request);

                WriteLine($"{user.Email}: Awaiting for the confirmation link...");
                string[] mails;
                while ((mails = await TempMail.GetMail(user.Email)) == null)
                {
                    await Task.Delay(1000);
                }

                WriteLine($"{user.Email}: Confirming the email...");
                string confirmUrl = Regex.Match(mails[0], @"(?<=a\s+href\s*=\s*"").*?(?="")").Value;
                await client.GetAsync(confirmUrl);
            }

            WriteLine($"{user.Email}: User registered in %Green{timer.Elapsed.TotalSeconds:F2}% seconds!");

            return(cookies);
        }