private static NetRange API(string ip) { // send request to json endpoint HttpWebRequest r = (HttpWebRequest)HttpWebRequest.Create("https://stat.ripe.net/data/whois/data.json?resource=" + ip.ToString()); r.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0"; r.Headers.Add("Upgrade-Insecure-Requests: 1"); r.Method = "GET"; r.Headers.Add(HttpRequestHeader.Cookie, "serverid=www-plone-3; path=/"); // parse response HttpWebResponse resp = (HttpWebResponse)r.GetResponse(); string response; using (var sr = new StreamReader(resp.GetResponseStream())) { response = sr.ReadToEnd(); } try { // get netrange (if any) JObject json = JObject.Parse(response); string netrange = json["data"]["records"][0][0]["value"].ToString(); var ips = NetRange.GetNetRangeIPs(netrange); return(new NetRange(ips[0], ips[1], "netrangeObtainedFromRipe")); } catch (Exception) { // if there wasn't any netrange, return whole 0.0.0.0 to 255.255.255.255 return(new NetRange("0.0.0.0", "255.255.255.255", "ripe_noNetRangeFound")); } }