Brings up the pull-model scraper: the .NET C2 hands skin+wear jobs to Python nodriver workers that scrape cs.money and post results back, plus the supporting Core/EFCore data model, migrations, and docker-compose orchestration. IPRoyal proxying lets workers scale horizontally with a distinct residential exit IP each: every worker process mints its own sticky session at startup, and an in-process forwarding proxy injects the gateway auth so Chromium talks only to an auth-free localhost endpoint (zero CDP). On a Cloudflare challenge a worker rotates to a fresh session/IP and re-warms. Verified end-to-end against live IPRoyal: distinct US residential exits per worker and IP rotation on demand. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
22 lines
774 B
C#
22 lines
774 B
C#
using Microsoft.Extensions.Logging;
|
|
|
|
namespace BlueLaminate.Scraper.Proxies;
|
|
|
|
/// <summary>
|
|
/// Creates <see cref="LocalForwardingProxy"/> instances with a logger supplied from
|
|
/// DI, so consumers (the proxy probe, the cs.money capture) can spin up a per-run
|
|
/// local proxy without depending on <see cref="ILoggerFactory"/> directly.
|
|
/// </summary>
|
|
public sealed class LocalForwardingProxyFactory
|
|
{
|
|
private readonly ILogger<LocalForwardingProxy> _logger;
|
|
|
|
public LocalForwardingProxyFactory(ILogger<LocalForwardingProxy> logger)
|
|
{
|
|
_logger = logger;
|
|
}
|
|
|
|
/// <summary>Build (but do not start) a local proxy chaining to <paramref name="upstream"/>.</summary>
|
|
public LocalForwardingProxy Create(ProxyLease upstream) => new(upstream, _logger);
|
|
}
|