Загрузка...

Делаем GET/POST запрос с рандомным User Agent'ом из масива. xNet

Тема в разделе C# создана пользователем RocsLab 4 мар 2017. 3226 просмотров

Загрузка...
  1. RocsLab
    RocsLab Автор темы 4 мар 2017 Заблокирован(а) 356 9 май 2016
    using xNet;
    Код

    string[] Agents;
    Agents = new string[]{
    "Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
    "Mozilla/5.0 (Linux; U; Android 4.0.3; de-ch; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
    "Mozilla/5.0 (Linux; U; Android 2.3; en-us) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9",
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/4.0.1 Safari/530.18",
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.197 Safari/532.0",
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0",
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0",
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.0 Safari/532.0",
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.3 Safari/531.21.10",
    };
    Масив с нашими юзер агентами.

    Код

    using (var request = new HttpRequest())
    {
    {
    request.UserAgent = arrUA[new Random().Next(0, arrUA.Length)];
    выбираем рандомный юзер агент для запроса
    request.IgnoreProtocolErrors = false;
    request.EnableEncodingContent = false;
    string str = request.Get("http://ваш сайт", null).ToString(); Это Get запрос
    var urlParams = new RequestParams();
    urlParams["Параметр"] = "Его значение";
    string str5 = request.Post("http://ваш сайт", urlParams).ToString(); Это Post запрос
    Далее обрабатываете свои запросы как вам нужно.
    }
    }
     
  2. _GOD_
    _GOD_ 4 мар 2017 C# PHP JS NodeJS Python MongoDb 305 8 янв 2017
    а не проще использовать request.UserAgent = Http.ChromeUserAgent(); // (FirefoxUserAgent, OperaUserAgent, etc)
     
    4 мар 2017 Изменено
  3. RocsLab
    RocsLab Автор темы 4 мар 2017 Заблокирован(а) 356 9 май 2016
    У каждого свои принципы работы, да и возможно нужны будут юзер агенты определенного типа.
     
  4. RaysMorgan
    Я не знаю, как на самом деле работает компилятор у C#, что он умеет, но я бы отказался от такой конструкции:
    Код
    new Random()

    Это означает, что при каждом запросе в каждом потоке будет создаваться экземпляр класса Random, я бы создал его в основном классе:
    Код
    Random rnd = new Random()

    Далее можешь использовать его в потоках:
    Код
    request.UserAgent = arrUA[rnd.Next(0, arrUA.Length)];
     
  5. RaysMorgan
    _GOD_, речь идёт про случайный юзер агент, а не конкретный
     
  6. RaysMorgan
    Также отказываемся от массивов, используем листы. В своём проекте список юзер агентов содержался в txt файле, который подгружался при запуске программы в List<string>
     
  7. _GOD_
    _GOD_ 4 мар 2017 C# PHP JS NodeJS Python MongoDb 305 8 янв 2017
  8. RaysMorgan
    _GOD_, что ты хотел этим сказать? Посмотри название темы
     
  9. Hangover_inactive59523
    Во-первых
    Код

    request.IgnoreProtocolErrors = false;
    request.EnableEncodingContent = false;
    Это по дэфолту false в xnet и не нужно лишний раз мусорить в коде.

    Во-вторых
    Есть вот такой замечательный класс, который работает с любой коллекцией реализующей IEnumerable
    Код
     internal static class ListHelper
    {
    public static T PickRandom<T>(this IEnumerable<T> source)
    {
    return source.PickRandom(1).Single();
    }

    public static IEnumerable<T> PickRandom<T>(this IEnumerable<T> source, int count)
    {
    return source.Shuffle().Take(count);
    }

    public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source)
    {
    return source.OrderBy(x => Guid.NewGuid());
    }
    }
    После добавления данной вещи в программу, остаётся лишь создать List с вашими юзерагентами и вызывать на нём метод PickRandom(), что будет выглядеть в коде лучше.
     
  10. Serega_666
    Serega_666 6 апр 2017 Заблокирован(а) 10 5 апр 2017
    Мда массив с юзер агентами чето новенькое, не старлей ли научил??? D

    Request.UserAgent = HttpHelper.RandomIEUserAgent();

    И все на каждый запрос рандомный юзер агент, можно хоть мазилу крутить, хоть оперу.
     
Top