using System.Threading.Tasks;
using System.Collections.Generic;
using CloudFlareUtilities;
public static List<Server> servers = new List<Server> { };
public static List<Player> players = new List<Player> { };
public static void Main()
Console.WriteLine("Started Main");
private static async Task GetServers()
Console.WriteLine("Started GetServers()");
var table = await ScrapeServer("https://www.tibia.com/community/?subtopic=worlds");
foreach (var row in table)
Server server = new Server();
server.OnlineAmount = Convert.ToInt32(row[1]);
server.Location = row[2];
server.AdditionalInformation = row[5];
Console.WriteLine(server.Name);
private static async Task<List<List<string>>> ScrapeServer(string url)
Console.WriteLine("Started ScrapeServer()");
var baseAddress = new Uri(url);
var cookieContainer = new CookieContainer();
cookieContainer.Add(baseAddress, new Cookie("__cfduid", "d87fb33cb80530521fdcb94595a49f14e1580649982"));
using (var cfHandler = new ClearanceHandler())
cfHandler.InnerHandler = new HttpClientHandler()
CookieContainer = cookieContainer
using (var client = new HttpClient(cfHandler, false) { BaseAddress = baseAddress })
var html = await client.GetStringAsync(baseAddress);
var document = new HtmlAgilityPack.HtmlDocument();
var serverTable = document.DocumentNode.SelectSingleNode("//table[5]");
return serverTable.Descendants("tr")
.Select(tr => tr.Descendants("td")
.Select(td => WebUtility.HtmlDecode(td.InnerText))
public string Name { get; set; }
public int OnlineAmount { get; set; }
public string Location { get; set; }
public string PvPType { get; set; }
public string BattlEye { get; set; }
public string AdditionalInformation { get; set; }
public override string ToString()
return this.Name.ToString();
public string Name { get; set; }
public int Level { get; set; }
public string Vocation { get; set; }
public string Server { get; set; }
public override string ToString()
return this.Name.ToString();