AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.9.1" />

 ResourceLoader

Represents the default resource loader. This class can be inherited.
using AngleSharp.Dom; using AngleSharp.Events; using AngleSharp.Extensions; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AngleSharp.Network.Default { public class ResourceLoader : IResourceLoader { private readonly IEnumerable<IRequester> _requesters; private readonly IDocument _document; private readonly Predicate<IRequest> _filter; public ResourceLoader(IEnumerable<IRequester> requesters, IDocument document, Predicate<IRequest> filter = null) { _requesters = requesters; _document = document; _filter = (filter ?? ((Predicate<IRequest>)((IRequest _) => true))); } public virtual Task<IResponse> LoadAsync(ResourceRequest request, CancellationToken cancel) { IEventAggregator events = _document.Context.Configuration.Events; Request request2 = new Request(); request2.Address = request.Target; request2.Method = HttpMethod.Get; Request request3 = request2; request3.Headers[HeaderNames.Referer] = request.Source.Owner.DocumentUri; if (!_filter(request3)) return TaskEx.FromResult<IResponse>(null); return _requesters.LoadAsync(request3, events, cancel); } } }