/// <summary> /// 检查友链 /// </summary> public void CheckLinks() { var links = _linksService.GetQuery(l => !l.Except).AsParallel(); var client = _httpClientFactory.CreateClient(); client.DefaultRequestHeaders.UserAgent.Add(ProductInfoHeaderValue.Parse("MasuitBot-link/1.0")); client.DefaultRequestHeaders.Referrer = new Uri("https://masuit.com"); client.Timeout = TimeSpan.FromSeconds(10); Parallel.ForEach(links, link => { var prev = link.Status; client.GetStringAsync(link.Url).ContinueWith(t => { if (t.IsCanceled || t.IsFaulted) { link.Status = Status.Unavailable; } else { link.Status = !t.Result.Contains(CommonHelper.SystemSettings["Domain"]) ? Status.Unavailable : Status.Available; } if (link.Status != prev) { link.UpdateTime = DateTime.Now; } }).Wait(); }); _linksService.SaveChanges(); }
/// <summary> /// 检查友链 /// </summary> public void CheckLinks() { var client = _httpClientFactory.CreateClient(); client.DefaultRequestHeaders.UserAgent.TryParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.47"); client.DefaultRequestHeaders.Add("X-Forwarded-For", "1.1.1.1"); client.DefaultRequestHeaders.Add("X-Forwarded-Host", "1.1.1.1"); client.DefaultRequestHeaders.Add("X-Real-IP", "1.1.1.1"); client.DefaultRequestHeaders.Referrer = new Uri("https://google.com"); client.Timeout = TimeSpan.FromSeconds(10); _linksService.GetQuery(l => !l.Except).AsParallel().ForAll(link => { var prev = link.Status; client.GetStringAsync(link.Url, new CancellationTokenSource(client.Timeout).Token).ContinueWith(t => { if (t.IsCanceled || t.IsFaulted) { link.Status = Status.Unavailable; } else { link.Status = !t.Result.Contains(CommonHelper.SystemSettings["Domain"].Split("|")) ? Status.Unavailable : Status.Available; } if (link.Status != prev) { link.UpdateTime = DateTime.Now; } }).Wait(); }); _linksService.SaveChanges(); }
/// <summary> /// 检查友链 /// </summary> public void CheckLinks() { var links = _linksService.GetQuery(l => !l.Except).AsParallel(); var client = _httpClientFactory.CreateClient(); client.DefaultRequestHeaders.UserAgent.Add(ProductInfoHeaderValue.Parse("Mozilla/5.0")); client.DefaultRequestHeaders.Referrer = new Uri("https://masuit.com"); client.Timeout = TimeSpan.FromSeconds(10); Parallel.ForEach(links, link => { client.GetAsync(link.Url).ContinueWith(async t => { if (t.IsCanceled || t.IsFaulted) { link.Status = Status.Unavailable; return; } var res = await t; if (res.IsSuccessStatusCode) { link.Status = !(await res.Content.ReadAsStringAsync()).Contains(CommonHelper.SystemSettings["Domain"]) ? Status.Unavailable : Status.Available; } else { link.Status = Status.Unavailable; } }).Wait(); }); _linksService.SaveChanges(); }
/// <summary> /// 检查友链 /// </summary> public void CheckLinks() { var client = _httpClientFactory.CreateClient(); client.DefaultRequestHeaders.UserAgent.Add(ProductInfoHeaderValue.Parse("Mozilla/5.0")); client.DefaultRequestHeaders.Referrer = new Uri("https://google.com"); client.Timeout = TimeSpan.FromSeconds(10); _linksService.GetQuery(l => !l.Except).AsParallel().ForAll(link => { var prev = link.Status; client.GetStringAsync(link.Url, new CancellationTokenSource(client.Timeout).Token).ContinueWith(t => { if (t.IsCanceled || t.IsFaulted) { link.Status = Status.Unavailable; } else { link.Status = !t.Result.Contains(CommonHelper.SystemSettings["Domain"].Split("|")) ? Status.Unavailable : Status.Available; } if (link.Status != prev) { link.UpdateTime = DateTime.Now; } if (link.Status == Status.Unavailable) { link.Weight -= 1; } }).Wait(); }); _linksService.SaveChanges(); }