private async Task PassClearance(HttpResponseMessage response, CancellationToken cancellationToken) { SaveIdCookie(response); var pageContent = await response.Content.ReadAsStringAsync(); //CloudFlare页面获得 var scheme = response.RequestMessage.RequestUri.Scheme; //https var host = response.RequestMessage.RequestUri.Host; //suicibei.nyaa.si var port = response.RequestMessage.RequestUri.Port; //443 var solution = ChallengeSolver.Solve(pageContent, host); //获得验证信息 var clearanceUri = $"{scheme}://{host}:{port}{solution.ClearanceQuery}"; //验证完毕 await Task.Delay(5000, cancellationToken); //等待5S var clearanceRequest = new HttpRequestMessage(HttpMethod.Get, clearanceUri); IEnumerable <string> userAgent; if (response.RequestMessage.Headers.TryGetValues(HttpHeader.UserAgent, out userAgent)) { clearanceRequest.Headers.Add(HttpHeader.UserAgent, userAgent); } await _client.SendAsync(clearanceRequest, cancellationToken);//得到答案后再一次获得。 }
private async Task PassClearance(HttpResponseMessage response, CancellationToken cancellationToken) { SaveIdCookie(response); var pageContent = await response.Content.ReadAsStringAsync(); var scheme = response.RequestMessage.RequestUri.Scheme; var host = response.RequestMessage.RequestUri.Host; var port = response.RequestMessage.RequestUri.Port; var solution = ChallengeSolver.Solve(pageContent, host); var clearanceUri = $"{scheme}://{host}:{port}{solution.ClearanceQuery}"; await Task.Delay(5000, cancellationToken); var clearanceRequest = new HttpRequestMessage(HttpMethod.Get, clearanceUri); IEnumerable <string> userAgent; if (response.RequestMessage.Headers.TryGetValues(HttpHeader.UserAgent, out userAgent)) { clearanceRequest.Headers.Add(HttpHeader.UserAgent, userAgent); } var passResponse = await _client.SendAsync(clearanceRequest, cancellationToken); SaveIdCookie(passResponse); // new ID might be set as a response to the challenge in some cases }
private async Task PassClearance(HttpResponseMessage response, CancellationToken cancellationToken) { SaveIdCookie(response); var pageContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var scheme = response.RequestMessage.RequestUri.Scheme; var host = response.RequestMessage.RequestUri.Host; var port = response.RequestMessage.RequestUri.Port; var solution = ChallengeSolver.Solve(pageContent, host); var clearanceUri = $"{scheme}://{host}:{port}{solution.ClearanceQuery}"; await Task.Delay(ClearanceDelay, cancellationToken).ConfigureAwait(false); var clearanceRequest = new HttpRequestMessage(HttpMethod.Get, clearanceUri); if (response.RequestMessage.Headers.TryGetValues(HttpHeader.UserAgent, out var userAgent)) { clearanceRequest.Headers.Add(HttpHeader.UserAgent, userAgent); } if (response.RequestMessage.RequestUri != null) { clearanceRequest.Headers.Add("Referer", response.RequestMessage.RequestUri.ToString()); } clearanceRequest.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); clearanceRequest.Headers.Add("Upgrade-Insecure-Requests", "1"); var passResponse = await _client.SendAsync(clearanceRequest, cancellationToken).ConfigureAwait(false); SaveIdCookie(passResponse); // new ID might be set as a response to the challenge in some cases }