private readonly string urlPattern = "(https.+)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]"; async Task readURLAsync(string url, TextBox result) { ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CertificateValidationCallback); try { IsReading(true); Uri uri = new Uri(url); HttpWebRequest Request = await Task.Run(() => (HttpWebRequest)WebRequest.Create(uri)); Request.Proxy = null; Request.Method = "GET"; Request.UserAgent = cbUserAgent.Text; Request.Headers.Add("Accept-Encoding", "gzip, deflate, br"); Request.Headers.Add("accept-language", "en-US,en;q=0.9"); Request.Accept = "application/json, text/javascript, */*; q=0.01"; using (WebResponse Response = await Task.Run(() => Request.GetResponse())) { using (StreamReader Reader = await Task.Run(() => new StreamReader(Response.GetResponseStream()))) { string content = await Reader.ReadToEndAsync(); MatchCollection mc = Regex.Matches(content, urlPattern, RegexOptions.IgnoreCase); StringBuilder sb = new StringBuilder(); foreach (Match m in mc) { sb.Append(m.Value + "\r\n"); } result.Text = sb.ToString().Trim(); CountLinks(); if (textBox_Result.Text.Trim() == "") return; } } if (Request != null) { Request.Abort(); } } catch (HttpRequestException ex2) { MessageBox.Show(ex2.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error); } IsReading(false); } c# 0 zackmark15 1 Июл 2020 в 06:56 2 ответа Лучший ответ Я бы посоветовал перейти к чему-то более похожему на это: Task readURLAsync(string url, string userAgent) { return Task.Run(async () => { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Method", "GET"); client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br"); client.DefaultRequestHeaders.Add("accept-language", "en-US,en;q=0.9"); client.DefaultRequestHeaders.Add("accept", "text/javascript, */*; q=0.01"); client.DefaultRequestHeaders.UserAgent.ParseAdd(userAgent); using (HttpResponseMessage response = await client.GetAsync(url)) { response.EnsureSuccessStatusCode(); string readResponse = await response.Content.ReadAsStringAsync(); MatchCollection mc = Regex.Matches(readResponse, urlPattern, RegexOptions.IgnoreCase); return String.Join(Environment.NewLine, mc.Cast().Select(x => x.Value)); } } });