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); }
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); }