Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
        /// <summary>
        /// 检查友链
        /// </summary>
        public void CheckLinks()
        {
            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);
            _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();
        }
Exemplo n.º 3
0
        /// <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();
        }