mirror of
https://github.com/Prowlarr/Prowlarr
synced 2026-05-08 12:43:19 +02:00
Merge 91f7069d0d into 18fe4ec495
This commit is contained in:
commit
2f21b0ce96
1 changed files with 22 additions and 2 deletions
|
|
@ -58,11 +58,15 @@ public override HttpResponse PostResponse(HttpResponse response)
|
|||
|
||||
if (flaresolverrResponse.StatusCode != HttpStatusCode.OK && flaresolverrResponse.StatusCode != HttpStatusCode.InternalServerError)
|
||||
{
|
||||
throw new FlareSolverrException("HTTP StatusCode not 200 or 500. Status is :" + response.StatusCode);
|
||||
throw new FlareSolverrException("HTTP StatusCode not 200 or 500. Status is :" + flaresolverrResponse.StatusCode);
|
||||
}
|
||||
|
||||
var result = JsonConvert.DeserializeObject<FlareSolverrResponse>(flaresolverrResponse.Content);
|
||||
|
||||
_logger.Debug("FlareSolverr response status: {0}, message: {1}", result.Status, result.Message);
|
||||
_logger.Debug("FlareSolverr solution has response body: {0} (length: {1})", result.Solution.Response.IsNotNullOrWhiteSpace(), result.Solution.Response?.Length ?? 0);
|
||||
_logger.Debug("FlareSolverr returned {0} cookies, UA: {1}", result.Solution.Cookies?.Length ?? 0, result.Solution.UserAgent);
|
||||
|
||||
var newRequest = response.Request;
|
||||
|
||||
//Cache the user-agent so we can inject it in next request to avoid re-solve
|
||||
|
|
@ -71,8 +75,24 @@ public override HttpResponse PostResponse(HttpResponse response)
|
|||
|
||||
InjectCookies(newRequest, result);
|
||||
|
||||
//Request again with User-Agent and Cookies from Flaresolverr
|
||||
// Use FlareSolverr's response body directly — a second HTTP request
|
||||
// gets 403'd because cf_clearance is bound to the solver's TLS fingerprint
|
||||
if (result.Solution.Response.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
_logger.Debug("Using FlareSolverr response body directly (skipping cookie retry)");
|
||||
return new HttpResponse(
|
||||
response.Request,
|
||||
response.Headers,
|
||||
response.Cookies,
|
||||
result.Solution.Response,
|
||||
response.ElapsedTime,
|
||||
HttpStatusCode.OK);
|
||||
}
|
||||
|
||||
// Fallback: if FlareSolverr returned no body, try cookies (original behavior)
|
||||
_logger.Debug("Attempting cookie-based retry for {0}", newRequest.Url);
|
||||
var finalResponse = _httpClient.Execute(newRequest);
|
||||
_logger.Debug("Cookie retry response: {0} (CF protected: {1})", finalResponse.StatusCode, CloudFlareDetectionService.IsCloudflareProtected(finalResponse));
|
||||
|
||||
return finalResponse;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue