public ProxyCollection GetProxyByCountry(Country country) { string url = String.Format("http://spys.one/free-proxy-list/{0}/", country.abb); string response = client.DownloadString(url); HtmlDocument html = new HtmlDocument(); html.LoadHtml(response); JavaScriptEngine parser = new JavaScriptEngine(); var jscontext = new AngleSharp.Parser.Html.HtmlParser().Parse(response); parser.EvaluateScript(jscontext, html.DocumentNode.SelectSingleNode(@"/html/body/script").InnerText); var res = new ProxyCollection(); foreach (Match proxyitem in Regex.Matches(response, @"((\d+)\.(\d+)\.(\d+)\.(\d+))(<script(.*?)</script>)(.*?)(HTTP</font></a>|HTTP</font><font|SOCKS5)")) { var proxy = new Proxy(); string port = (string)parser.EvaluateScript(jscontext, "\"\"+" + Regex.Match(proxyitem.Value, @"(?<=\+)(.*?)(?=\)</script)").Value); string ip = Regex.Match(proxyitem.Value, @"(\d+)\.(\d+)\.(\d+)\.(\d+)").Value; proxy.ip = ip; proxy.port = port; switch (proxyitem.Groups[9].Value) { case @"HTTP</font></a>": proxy.protocol = "http"; break; case @"HTTP</font><font": proxy.protocol = "https"; break; case @"SOCKS5": proxy.protocol = "socks5"; break; default: proxy.protocol = "unknown"; break; } res.Add(proxy); } return(res); }
private void countrySelection_SelectedIndexChanged(object sender, EventArgs e) { this.StartBusy("Downloading proxy list..."); proxylist = wwproxy.GetProxyByCountry(countrylist[(int)this.countrySelection.SelectedIndex]); this.proxySelection.Items.Clear(); foreach (Proxy proxy in proxylist) { this.proxySelection.Items.Add(proxy); } this.StopBusy(); }