private void ParseProxies(string[] Urls) { foreach (string s in Urls) { if (!mIsRun) { break; } string html = ""; double t; if (Web_Client.Get(html_parser.ClearUrl(s), "", out html, out t, mTimeOut)) { string[] proxies = html_parser.Matches(html, @"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{2,5}"); if (proxies.Length > 0) { foreach (string p in proxies) { if (p != "") { if (!mPrxsDic.ContainsKey(p)) { Proxy newProxy = new Proxy(); newProxy.adress = p; newProxy.latency = -1; Add(newProxy); } } } } } } }
private void Test() { for (int i = 0; i < mArray.Length && mIsRun; i++) { string html; double t; if (Web_Client.Get(mTarget.mAdress, mArray[i].adress, out html, out t, mTimeOut)) { FillProperties(mArray[i], html, t, "http"); } else if (Web_Client.GetViaSocks(true, mTarget.mAdress, mArray[i].adress, out html, out t, mTimeOut)) { FillProperties(mArray[i], html, t, "socks5"); } else if (Web_Client.GetViaSocks(false, mTarget.mAdress, mArray[i].adress, out html, out t, mTimeOut)) { FillProperties(mArray[i], html, t, "socks4"); } else { lock (mPrxsDic) { mPrxsDic.Remove(mArray[i].adress); mPrxsLstUpdated(this, EventArgs.Empty); } } } mIsRun = false; mTstDead(this, EventArgs.Empty); }
/// <summary> /// Search proxies and then parse them /// </summary> /// <param name="Prm">Id of thread</param> private void ProxyToAssemble() { StringBuilder txtQuery = new StringBuilder(); txtQuery.Append(mSearcher.url); txtQuery.Append("&"); txtQuery.Append(mSearcher.srchVar); txtQuery.Append("="); txtQuery.Append(mSearchPhrase.Replace(" ", mSearcher.spltr)); txtQuery.Append("&"); txtQuery.Append(mSearcher.pageVar); txtQuery.Append("="); while (mPrxsDic.Count < mPrxsCountNeed && mIsRun) { string html = ""; string uri = txtQuery.ToString() + mSender.GetNewPageNumber(mSearcher).ToString(); double t; if (Web_Client.Get(uri, mProxy, out html, out t, mTimeOut)) { if (html.ToLower().Contains("captcha")) { StopLoading(); } ParseProxies(html_parser.Matches(html, mSearcher.regexExpOfResults)); } Thread.Sleep(200); } mIsRun = false; mKilled(this, EventArgs.Empty); }