void DoWorkInternal(object actionState) { ProxyDatum proxy = actionState as ProxyDatum; //var addressFamily = AddressFamily.InterNetwork; var socketType = SocketType.Stream; var protocolType = ProtocolType.Tcp; bool isProxyInvalid = true; lock (State) { ++State.Testing; } foreach (var proxyTypeToTest in proxyTypesToTest) { bool isProxySocketValid = ProbeProxy(proxy, socketType, protocolType, proxyTypeToTest, MaximumConnectionTime); SpinProxiesApiWrapper.WriteTempContent(spinProxiesData, SpinProxiesProxyClass.Socks5); isProxyInvalid = (isProxyInvalid && !isProxySocketValid); if (isProxySocketValid) { lock (State) { ++State.Available; } lock (availableProxiesList) { availableProxiesList.Add(proxy); } break; } } lock (State) { ++State.Tested; } if (isProxyInvalid) { lock (State) { ++State.Failed; } } }
private ProxyTester() { spinProxiesApiWrapper = new SpinProxiesApiWrapper(); spinProxiesData = spinProxiesApiWrapper.FetchProxyList(SpinProxiesProxyClass.Socks5); probeProxyHeaderBuffer = new FluentHeaderBuilder() .AddMethod("http://c.statcounter.com/11592521/0/dc42a2e3/0/", HttpMethod.Get) .Add(HttpRequestHeader.Host, "c.statcounter.com") .Add(HttpRequestHeader.Connection, "keep-alive") .Add(HttpRequestHeader.CacheControl, "max-age=0") .AddCustom("Upgrade-Insecure-Requests", "1") .Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36") .Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8") .Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate") .Add(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.9,ro;q=0.8") .Add(HttpRequestHeader.Pragma, "no-cache") .BuildAsByteArray(); }