internal static void doOnProxyListChange(TeknarProxy proxy) { if (onProxyListChange == null) { return; } var ilist = onProxyListChange.GetInvocationList(); foreach (EventHandler <TeknarProxy> handler in ilist) { syncContext.Post(new SendOrPostCallback((o) => { handler(handler.Target, proxy); }), null); } }
private static void FPLN_ParseProxies(string html) { var trs = html.Replace("\r", string.Empty).Replace("\n", string.Empty). Split(new string[] { "table" }, StringSplitOptions.RemoveEmptyEntries)[6]. Split(new string[] { "<tr>", "</tr>" }, StringSplitOptions.RemoveEmptyEntries).Where(item => item.StartsWith("<td>")).ToList(); foreach (var tr in trs) { try { var tds = tr.Split(new string[] { "<td>", "</td>" }, StringSplitOptions.RemoveEmptyEntries); var newProxy = new TeknarProxy { country = tds[3].Trim(), ip = tds[0].Trim(), port = ushort.Parse(tds[1].Trim()), security = (anonymity_level)Enum.Parse(typeof(anonymity_level), tds[4].Replace(" ", string.Empty).Trim().ToUpperInvariant()), type = (protocol)Enum.Parse(typeof(protocol), tds[6].Replace(" ", string.Empty).Trim().ToUpperInvariant()), }; if (newProxy.security < anonymity_level.HIGH) { continue; } var key = string.Format("{0}:{1}", newProxy.ip, newProxy.port); TeknarProxy proxy; if (proxyList.TryGetValue(key, out proxy)) { proxy._pheromone = TeknarProxy.InitialPheromoneValue; proxy.security = newProxy.security; proxy.type = newProxy.type; proxy.country = newProxy.country; } else { proxyList[key] = newProxy; } doOnProxyListChange(proxyList[key]); } catch (Exception) { } } }
private static void HMA_ParseProxies(string table) { try { IHTMLDocument2 doc = (IHTMLDocument2)new HTMLDocument(); doc.write(string.Format("<table>{0}</table>", table.Replace("\r\n", string.Empty))); IHTMLElementCollection rows = ((IHTMLDocument3)doc).getElementsByTagName("tr"); for (int i = 0; i < rows.length; i++) { try { HTMLTableRow row = rows.item(i); var type = (protocol)Enum.Parse(typeof(protocol), rows.item(i).cells.item(6).innerText.Replace("/", string.Empty).ToUpperInvariant()); var security = (anonymity_level)Enum.Parse(typeof(anonymity_level), rows.item(i).cells.item(7).innerText.Replace(" +", string.Empty).ToUpperInvariant()); if (type == protocol.SOCKS45 || security < anonymity_level.HIGH) continue; var ipChilds = ((IHTMLDOMNode)row.cells.item(1)).firstChild.childNodes; string ipaddress = ""; for (int j = 0; j < ipChilds.length; j++) { var element = ipChilds.item(j) as IHTMLDOMNode; string tagname = element.nodeName; if (tagname == "#text") ipaddress += element.nodeValue; else { var element2 = (IHTMLElement2)element; string display = element2.currentStyle.display; if (display != "none") ipaddress += ((IHTMLElement)element).innerText; } } var port = ushort.Parse(((IHTMLElement)row.cells.item(2)).innerText); var key = string.Format("{0}:{1}", ipaddress, port); TeknarProxy newProxy = new TeknarProxy { ip = ipaddress, port = ushort.Parse(((IHTMLElement)row.cells.item(2)).innerText), country = ((IHTMLElement)row.cells.item(3)).innerText, type = type, security = security }; TeknarProxy proxy; if (proxyList.TryGetValue(key, out proxy)) { proxy._pheromone = TeknarProxy.InitialPheromoneValue; proxy.security = newProxy.security; proxy.type = newProxy.type; proxy.country = newProxy.country; } else { proxyList[key] = newProxy; } doOnProxyListChange(proxyList[key]); } catch (Exception) { } } } catch (Exception) { } }