Lyo.Http.Client.Flared
2.0.1
dotnet add package Lyo.Http.Client.Flared --version 2.0.1
NuGet\Install-Package Lyo.Http.Client.Flared -Version 2.0.1
<PackageReference Include="Lyo.Http.Client.Flared" Version="2.0.1" />
<PackageVersion Include="Lyo.Http.Client.Flared" Version="2.0.1" />
<PackageReference Include="Lyo.Http.Client.Flared" />
paket add Lyo.Http.Client.Flared --version 2.0.1
#r "nuget: Lyo.Http.Client.Flared, 2.0.1"
#:package Lyo.Http.Client.Flared@2.0.1
#addin nuget:?package=Lyo.Http.Client.Flared&version=2.0.1
#tool nuget:?package=Lyo.Http.Client.Flared&version=2.0.1
Lyo.Http.Client.Flared
HTTP-only Cloudflare clearance via a running FlareSolverr instance (/v1) through FlareSolverrSharp. Not an in-process browser. Default ThroughSolver because ClearanceHandler replay uses .NET TLS and often fails (cookies … are not valid).
HttpClient never loads a page's subresources. Extract image/AWS URLs from HTML with ThenExtractImages, or hand cookies to Playwright NavigateAsync for XHR-only URLs. FlareSolverr does not return its Chrome network log.
Start FlareSolverr locally: docker compose --profile flared up -d flaresolverr (does not start with the bench run profile).
Features
- ThroughSolver. Map
HttpRequestMessage→request.get/request.post; synthetic response fromsolution.response; merge cookies; pinsolution.userAgent. - Downloads. Large binaries skip the JSON envelope; stream with cookies+UA after clearance (
LyoHttpRequestMarkers.StreamBinary). - Stealth knobs on the base pipeline. Timing 200–800 ms + jitter, rate limit 1/2s, PerSession UA.
PerRequestrotation failsValidate(). - Named client
Lyo.Http.Flared. Own handler and rate-limit bucket. Replay mode:ConfigurePrimaryHttpMessageHandler(() => new ClearanceHandler(...))— new instance each time.
Examples
Register and run
services.AddFlaredHttpClientFromConfiguration(configuration);
// FlaredHttpOptions.FlareSolverrUrl defaults to http://127.0.0.1:8191/
Compose
docker compose --profile flared up -d flaresolverr
TLS and replay
Stay on ThroughSolver so TLS is FlareSolverr's Chrome. Document replay TLS mismatch. No curl-impersonate or JA3 forgers. Do not invent Sec-Fetch-* on replay.
Bot-detection fingerprints
FlareSolverr's Docker image ships Chromium with dummy GPU packages and Xvfb. Sites that inspect window.screen often report 800×600, and WebGL reports SwiftShader Device (Subzero). The /v1 API cannot set viewport or GPU. Do not spoof WEBGL_UNMASKED_RENDERER — it will not match the rest of the stack. For pages that fingerprint the renderer, solve with Flared then hand cookies to Playwright (host GPU, ScreenSize set, no --disable-gpu).
Playwright handoff and VPN IP
Diagrams: HttpClientArchitecture.drawio (packages, ThroughSolver vs StreamBinary, Playwright handoff).
cf_clearance is bound to IP plus User-Agent. FlareSolverr in Docker (docker compose --profile flared) is not your host VPN exit. Set FlaredHttpOptions.ProxyUrl (applied to FlareSolverr and to StreamBinary/.NET fetches) and PlaywrightBrowserOptions.ProxyUrl to the same exit. Playwright does not reference this package — the host copies solver UA onto PlaywrightBrowserOptions.UserAgents before StartBrowserAsync and cookies onto CookieJar after start. Worked example: FlaredPlaywrightHandoff.cs. Require BrowserKind Chromium; Firefox Nightly under automation cannot take Flared cookies. Navigate with NavigationWaitUntil = DOMContentLoaded (Cloudflare often never fires load).
Links
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Common.Metadata(direct, lyo)Lyo.Exceptions(direct, lyo)Lyo.Http.Client(direct, lyo)FlareSolverrSharp3.0.7(direct, third-party)Microsoft.Extensions.Configuration.Binder10.0.5(direct, microsoft)Microsoft.Extensions.Http10.0.5(direct, microsoft)Microsoft.Extensions.Logging.Abstractions10.0.5(direct, microsoft)Lyo.Common.Core(transitive, lyo)Lyo.Common.Json(transitive, lyo)Lyo.Metrics(transitive, lyo)Lyo.Result(transitive, lyo)AngleSharp1.5.0(transitive, third-party)Microsoft.Bcl.AsyncInterfaces10.0.5(transitive, microsoft, netstandard2.0)System.Memory4.6.3(transitive, microsoft, netstandard2.0)System.Text.Json10.0.5(transitive, microsoft, netstandard2.0)System.Threading.RateLimiting10.0.5(transitive, microsoft)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- FlareSolverrSharp (>= 3.0.7)
- Lyo.Common.Metadata (>= 2.0.0)
- Lyo.Exceptions (>= 2.0.0)
- Lyo.Http.Client (>= 2.0.1)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.5)
- Microsoft.Extensions.Http (>= 10.0.5)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
-
net10.0
- FlareSolverrSharp (>= 3.0.7)
- Lyo.Common.Metadata (>= 2.0.0)
- Lyo.Exceptions (>= 2.0.0)
- Lyo.Http.Client (>= 2.0.1)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.5)
- Microsoft.Extensions.Http (>= 10.0.5)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.