mirror of
https://github.com/Prowlarr/Prowlarr
synced 2026-05-08 12:43:19 +02:00
Merge f449ad6682 into 18fe4ec495
This commit is contained in:
commit
fc17c860ef
1 changed files with 29 additions and 2 deletions
|
|
@ -58,7 +58,7 @@ 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);
|
||||
|
|
@ -71,9 +71,36 @@ public override HttpResponse PostResponse(HttpResponse response)
|
|||
|
||||
InjectCookies(newRequest, result);
|
||||
|
||||
//Request again with User-Agent and Cookies from Flaresolverr
|
||||
// Try cookie-based retry first so subsequent requests can
|
||||
// reuse the cookies without going through FlareSolverr.
|
||||
var finalResponse = _httpClient.Execute(newRequest);
|
||||
|
||||
if (!CloudFlareDetectionService.IsCloudflareProtected(finalResponse))
|
||||
{
|
||||
return finalResponse;
|
||||
}
|
||||
|
||||
// Cookie retry was blocked — fall back to FlareSolverr's response body.
|
||||
// This happens when CF selectively challenges by IP/UA and FlareSolverr
|
||||
// doesn't receive a challenge, so no cf_clearance cookie is returned.
|
||||
if (result.Solution.Response.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
var headers = new HttpHeader();
|
||||
|
||||
if (result.Solution.Headers?.ContentType.IsNotNullOrWhiteSpace() == true)
|
||||
{
|
||||
headers.ContentType = result.Solution.Headers.ContentType;
|
||||
}
|
||||
|
||||
return new HttpResponse(
|
||||
response.Request,
|
||||
headers,
|
||||
response.Cookies,
|
||||
result.Solution.Response,
|
||||
response.ElapsedTime,
|
||||
HttpStatusCode.OK);
|
||||
}
|
||||
|
||||
return finalResponse;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue