feat: add deferred response buffering, TableDataProvider, and stealth improvements

- ApiResponse: add readToBuffer option to defer/stream body instead of eagerly buffering
- TableDataProvider: implement HTML table parser with per-column provider support
- StealthConfig: add 10s page load timeout and copyCookiesFrom parameter for cookie sharing
- StealthUnitDownloader: catch WebDriverTimeoutException on navigation, log warning instead of throwing
- Bump version to 2.9.0
This commit is contained in:
qwsdcvghyu89
2026-04-03 11:51:19 +11:00
parent cf75d4a5d5
commit 2965270928
9 changed files with 229 additions and 26 deletions
+10 -2
View File
@@ -10,6 +10,8 @@ using Beam.Abstractions;
using Beam.Downloaders;
using Beam.Models;
using Beam.Stealth.Strategies;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace Beam.Stealth {
using File = System.IO.File;
@@ -35,9 +37,15 @@ namespace Beam.Stealth {
protected override async Task DownloadToStream(string url, int bufferSize, Stream destinationStream,
IProgress<IDownloadReport> progress, CancellationToken ct) {
var driver = Config.Driver;
await driver.Navigate().GoToUrlAsync(url);
await Manipulator(driver);
try {
await driver.Navigate().GoToUrlAsync(url);
}
catch (WebDriverTimeoutException) {
Logger?.LogWarning("Timeout navigating to {url}", url);
}
await Manipulator(driver);
await _downloadStrategy.DownloadToStream(url, bufferSize, destinationStream, progress, Config, Logger, ct);
}