Загрузка...

Обработка ****** (три слова)

Тема в разделе C# создана пользователем N1ell 1 июл 2020. (поднята 1 июл 2020) 254 просмотра

  1. N1ell
    N1ell Автор темы 1 июл 2020 Дед инсайд :( 176 19 окт 2018
    Есть ли вариант ускорить отсеивание нерабочих ******, просто , допустим если я 20 добавляю и из них только 2 рабочие проверка идет минут 7, как по мне долговато получается :despair:

    Код
            string Get(string proxy)
    {
    HttpRequest request = new HttpRequest();
    request.KeepAlive = true;
    request.UserAgentRandomize();
    request.Proxy = ProxyClient.Parse(ProxyType.HTTP, proxy);
    try
    {
    string response = request.Get("https://vk.com").ToString();
    }
    catch (HttpException)
    {
    return null;
    }
    return "123";
    }
     
  2. DoplerVopler
    из листа их удаляй тупо и все
     
    1. Посмотреть предыдущие комментарии (1)
    2. N1ell Автор темы
      DoplerVopler, чел , я говорю что вот эта функция долго работает , а ты мне расскажываешь как со списками работать
    3. Cuupruum
      N1ell, у тебя не функция долго работает, а ответ долго к тебе плывет. Ставь тайм аут и радуйся жизни
    4. N1ell Автор темы
      Cuupruum, а не знаешь сколько лучше всего ставить , 5-10 сек ? :emm:
  3. Rahmat_inactive2177540
    Rahmat_inactive2177540 7 июл 2020 Заблокирован(а) 53 6 апр 2019
    Класс Thread, асинхроннное, распараллеливание
    Пример с потоками:
    Код
    class Program
    {
    static void Main(string[] args)
    {
    Thread thread = new Thread(() => Get(/*тут будут *******/));
    thread.Start();
    Console.ReadKey();
    }
    static string Get(string proxy)
    {
    try
    {
    WebProxy wp = new WebProxy(proxy, true);
    WebRequest wrq = WebRequest.Create("http://www.google.com");
    wrq.Proxy = wp;
    WebResponse wrs = wrq.GetResponse();
    Console.WriteLine("valid");
    return proxy;
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    return null;
    }
    }
    }
     
    7 июл 2020 Изменено
  4. impure
    impure 10 июл 2020 негр 71 6 май 2018
    N1ell,
    Код
    using System;
    using System.IO;
    using System.Threading.Tasks;
    using Leaf.xNet;
    private static void Main(string[] args)
    {
    const int threads = 1000;
    const string resultFile = "result.txt";
    const string proxyFile = "proxies.txt";

    var results = TextWriter.Synchronized(new StreamWriter(resultFile, false));
    var proxies = File.ReadAllText(proxyFile).Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

    Parallel.ForEach(proxies, new ParallelOptions { MaxDegreeOfParallelism = threads }, proxy => {
    HttpRequest req = null;

    try
    {
    req = new HttpRequest();
    req.Proxy = Leaf.xNet.HttpProxyClient.Parse(proxy);/*только для http-проксей, можно поменять на sock4proxyclient или socks5proxyclient*/
    string resp = req.Get("whoer.net").ToString();
    if (req.Response.IsOK())
    {
    results.WriteLine(proxy);
    }

    }
    catch (Exception ex)
    {
    string err = $"[ERROR]: {proxy}{Environment.NewLine}{ex.Message}";
    Console.WriteLine(err);
    Console.WriteLine();
    }
    finally
    {
    req?.Dispose();
    }
    });

    Console.WriteLine("Done!");
    Console.ReadKey();
    }
    xNet качаешь отсюда >> https://github.com/csharp-leaf/Leaf.xNet
    В nuget он тоже есть если че.
     
    1. N1ell Автор темы
      impure, это оно будет их параллельно проверять все ?
    2. impure
      N1ell, да, если я нигде не проебся запросы будут идти параллельно. Гуды будут в results.txt
    3. N1ell Автор темы
      impure, ахуенно , спасибо
Top
Загрузка...