· 5 years ago · Jul 15, 2020, 07:36 AM
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Net;
5using System.Net.Http;
6using System.Text;
7using System.Threading.Tasks;
8using Fizzler.Systems.HtmlAgilityPack;
9using HtmlAgilityPack;
10
11namespace ConsoleApp6
12{
13 // <PackageReference Include="Fizzler.Systems.HtmlAgilityPack" Version="1.2.1" />
14 static class Program
15 {
16 private static async Task Main(string[] args)
17 {
18 string username = Guid.NewGuid().ToString().Replace("-", "") + "@gmail.com";
19 string password = Guid.NewGuid().ToString();
20
21 await CreateAccount(username, password);
22
23 Console.WriteLine(username);
24 Console.WriteLine(password);
25 }
26
27 private static async Task CreateAccount(string email, string password)
28 {
29 var httpClient = new HttpClient();
30
31 string token = await GetToken(httpClient);
32
33 var requestValues = new Dictionary<string, string>
34 {
35 {"trial_length", "10"},
36 {"csrfmiddlewaretoken", token},
37 {"first_name", "sdsds"},
38 {"last_name", "sdsds"},
39 {"email", email},
40 {"password1", password},
41 {"country", "US"},
42 {"referrer", ""},
43 };
44
45 string requestContent = string.Join("&", requestValues.Select(x => $"{x.Key}={WebUtility.UrlEncode(x.Value)}"));
46
47 var request = new HttpRequestMessage(HttpMethod.Post, "https://learning.oreilly.com/register/");
48 request.Headers.Add("referer", new[] {"https://learning.oreilly.com/register/"});
49 request.Content = new StringContent(requestContent, Encoding.UTF8, "application/x-www-form-urlencoded");
50
51 var response = await httpClient.SendAsync(request);
52 response.EnsureSuccessStatusCode();
53 }
54
55 private static async Task<string> GetToken(HttpClient httpClient)
56 {
57 var response = await httpClient.GetAsync("https://learning.oreilly.com/register/");
58 string content = await response.Content.ReadAsStringAsync();
59
60 var dom = new HtmlDocument();
61 dom.LoadHtml(content);
62
63 string token = dom.DocumentNode.QuerySelector("[name=csrfmiddlewaretoken]").GetAttributeValue("value", "");
64
65 return token;
66 }
67 }
68}