private void SearchEventsGeneric(WebSearcher wsSearch) { try { foreach (int i in checkedListBoxExtensions.CheckedIndices) { var strExt = checkedListBoxExtensions.Items[i] as string; // remove '*' marked extensions if (strExt == null) { continue; } strExt = strExt.Replace("*", string.Empty); wsSearch.AddExtension(strExt); } wsSearch.Site = domain.Domain; wsSearch.SearcherLinkFoundEvent += Program.FormMainInstance.panelMetadataSearch.HandleLinkFoundEvent; wsSearch.SearcherLogEvent += Program.FormMainInstance.panelMetadataSearch.WebSearcherLogEvent; wsSearch.SearcherStartEvent += HandleSearchStartEvent; wsSearch.SearcherEndEvent += HandleCustomSearchEndEvent; wsSearch.GetLinks(); wsSearch.Join(); } catch (ThreadAbortException) { wsSearch.Abort(); } }
private void CaptureSearchResults(object sender, EventsThreads.CollectionFound <Uri> e) { WebSearcher searcher = (WebSearcher)sender; foreach (var group in e.Data.GroupBy(p => p.Host)) { if (CheckToSkip()) { searcher.Abort(); } try { AddAndLogSubdomainDiscover(group.Key); DomainsItem domain = Program.data.GetDomain(group.Key); foreach (Uri url in group) { domain.map.AddUrl(url.ToString()); } } catch { } } }
/// <summary> /// Perform web search based on the user's choice /// </summary> private void SearchWeb() { string message = $"Searching subdomains for {strDomain} in {PanelWebSearcherInformation.EngineToString(searchEngine)}"; Program.LogThis(new Log(Log.ModuleType.WebSearch, message, Log.LogType.debug)); Program.ChangeStatus(message); WebSearcher searcher = null; switch (searchEngine) { case PanelWebSearcherInformation.Engine.GoogleWeb: searcher = new GoogleWebSearcher { SearchAll = true, cSafeSearch = GoogleWebSearcher.SafeSearch.off, FirstSeen = GoogleWebSearcher.FirstSeenGoogle.AnyTime, LocatedInRegion = GoogleWebSearcher.Region.AnyRegion, WriteInLanguage = GoogleWebSearcher.Language.AnyLanguage }; break; case PanelWebSearcherInformation.Engine.GoogleAPI: searcher = new GoogleAPISearcher(Program.cfgCurrent.GoogleApiKey, Program.cfgCurrent.GoogleApiCx) { SearchAll = true }; break; case PanelWebSearcherInformation.Engine.BingWeb: searcher = new BingWebSearcher { LocatedInRegion = BingWebSearcher.Region.AnyRegion, SearchAll = true, WriteInLanguage = BingWebSearcher.Language.AnyLanguage }; break; case PanelWebSearcherInformation.Engine.BingAPI: searcher = new BingAPISearcher(Program.cfgCurrent.BingApiKey); break; case PanelWebSearcherInformation.Engine.DuckDuckGoWeb: searcher = new DuckduckgoWebSearcher(); break; } try { searcher.SearcherLinkFoundEvent += CaptureSearchResults; searcher.SearcherLogEvent += WebSearcherLogEvent; string strSearchString = $"site:{strDomain}"; if (CheckToSkip()) { return; } searcher.GetCustomLinks(strSearchString); searcher.Join(); } catch (ThreadAbortException) { } finally { searcher?.Abort(); } }