Exemple #1
0
        public YandexParser(string name)
        {
            Name = name;

            CookieDictionary cookie = new CookieDictionary();
            request  = new HttpRequest();
            request.Cookies = cookie;
            urlPoisk = @"http://yandex.ru/yandsearch?text=";
            urlCheckCaptcha = @"http://yandex.ru/checkcaptcha";

            request.UserAgent = HttpHelper.OperaUserAgent();
        }
        /// <summary>
        /// Отправляет GET-запрос HTTP-серверу.
        /// </summary>
        /// <param name="address">Адрес интернет-ресурса.</param>
        /// <param name="urlParams">Параметры URL-адреса, или значение <see langword="null"/>.</param>
        /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
        /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
        /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
        /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> является пустой строкой.</exception>
        /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
        public static void Get(string address, RequestParams urlParams = null, CookieDictionary cookies = null, ProxyClient proxy = null)
        {
            using (var request = new HttpRequest())
            {
                if (cookies == null)
                {
                    request.Cookies = new CookieDictionary();
                }
                else
                {
                    request.Cookies = cookies;
                }

                request.Proxy     = proxy;
                request.KeepAlive = false;
                request.UserAgent = HttpHelper.ChromeUserAgent();

                request.Get(address, urlParams).None();
            }
        }
        /// <summary>
        /// Отправляет POST-запрос HTTP-серверу. Загружает тело сообщения и возвращает его в виде строки.
        /// </summary>
        /// <param name="address">Адрес интернет-ресурса.</param>
        /// <param name="content">Контент, отправляемый HTTP-серверу.</param>
        /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
        /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
        /// <returns>Если тело сообщения отсутствует, то будет возвращена пустая строка.</returns>
        /// <exception cref="System.ArgumentNullException">
        /// Значение параметра <paramref name="address"/> равно <see langword="null"/>.
        /// -или-
        /// Значение параметра <paramref name="content"/> равно <see langword="null"/>.
        /// </exception>
        /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
        public static string Post(Uri address, HttpContent content, CookieDictionary cookies = null, ProxyClient proxy = null)
        {
            using (var request = new HttpRequest())
            {
                if (cookies == null)
                {
                    request.Cookies = new CookieDictionary();
                }
                else
                {
                    request.Cookies = cookies;
                }

                request.Proxy     = proxy;
                request.KeepAlive = false;
                request.UserAgent = HttpHelper.ChromeUserAgent();

                return(request.Post(address, content).ToString());
            }
        }
        /// <summary>
        /// Отправляет GET-запрос HTTP-серверу. Загружает тело сообщения и возвращает его в виде текста.
        /// </summary>
        /// <param name="address">Адрес интернет-ресурса.</param>
        /// <param name="urlParams">Параметры URL-адреса, или значение <see langword="null"/>.</param>
        /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
        /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
        /// <returns>Если тело сообщения отсутствует, то будет возвращён пустой массив байтов.</returns>
        /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
        /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
        public static byte[] GetBytes(Uri address, RequestParams urlParams = null, CookieDictionary cookies = null, ProxyClient proxy = null)
        {
            using (var request = new HttpRequest())
            {
                if (cookies == null)
                {
                    request.Cookies = new CookieDictionary();
                }
                else
                {
                    request.Cookies = cookies;
                }

                request.Proxy     = proxy;
                request.KeepAlive = false;
                request.UserAgent = HttpHelper.ChromeUserAgent();

                return(request.Get(address, urlParams).ToBytes());
            }
        }
Exemple #5
0
 /// <summary>
 /// Отправляет GET-запрос HTTP-серверу.
 /// </summary>
 /// <param name="address">Адрес интернет-ресурса.</param>
 /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
 /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
 /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
 /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> является пустой строкой.</exception>
 /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
 /// <exception cref="xNet.Net.ProxyException">Ошибка при работе с прокси-сервером.</exception>
 public static void Get(string address, CookieDictionary cookies = null, ProxyClient proxy = null)
 {
     Get(address, null, cookies, proxy);
 }
Exemple #6
0
        /// <summary>
        /// Отправляет POST-запрос HTTP-серверу. Загружает тело сообщения и возвращает его в виде текста.
        /// </summary>
        /// <param name="address">Адрес интернет-ресурса.</param>
        /// <param name="messageBody">Тело сообщения, отправляемое HTTP-серверу.</param>
        /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
        /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
        /// <returns>Если тело сообщения отсутствует, то будет возвращена пустая строка.</returns>
        /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
        /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> является пустой строкой.</exception>
        /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="messageBody"/> равно <see langword="null"/>.</exception>
        /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
        /// <exception cref="xNet.Net.ProxyException">Ошибка при работе с прокси-сервером.</exception>
        /// <remarks>Если значение заголовка 'Content-Type' не задано, то отправляется значение 'Content-Type: application/x-www-form-urlencoded'.</remarks>
        public static string Post(string address, byte[] messageBody, CookieDictionary cookies = null, ProxyClient proxy = null)
        {
            using (HttpRequest request = new HttpRequest())
            {
                if (cookies == null)
                {
                    request.Cookies = new CookieDictionary();
                }
                else
                {
                    request.Cookies = cookies;
                }

                request.Proxy = proxy;
                request.KeepAlive = false;

                if (string.IsNullOrEmpty(HttpRequest.GlobalUserAgent))
                {
                    request.UserAgent = HttpHelper.RandomUserAgent();
                }

                return request.Post(address, messageBody).ToText();
            }
        }
Exemple #7
0
        /// <summary>
        /// Отправляет HEAD-запрос HTTP-серверу.
        /// </summary>
        /// <param name="address">Адрес интернет-ресурса.</param>
        /// <param name="reqParams">Параметры запроса, отправляемые HTTP-серверу.</param>
        /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
        /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
        /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
        /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> не является абсолютным URI.</exception>
        /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
        /// <exception cref="xNet.Net.ProxyException">Ошибка при работе с прокси-сервером.</exception>
        public static void Head(Uri address, StringDictionary reqParams, CookieDictionary cookies = null, ProxyClient proxy = null)
        {
            using (HttpRequest request = new HttpRequest())
            {
                if (cookies == null)
                {
                    request.Cookies = new CookieDictionary();
                }
                else
                {
                    request.Cookies = cookies;
                }

                request.Proxy = proxy;
                request.KeepAlive = false;

                if (string.IsNullOrEmpty(HttpRequest.GlobalUserAgent))
                {
                    request.UserAgent = HttpHelper.RandomUserAgent();
                }

                request.Head(address, reqParams).None();
            }
        }
Exemple #8
0
 /// <summary>
 /// Отправляет HEAD-запрос HTTP-серверу.
 /// </summary>
 /// <param name="address">Адрес интернет-ресурса.</param>
 /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
 /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
 /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
 /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> не является абсолютным URI.</exception>
 /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
 /// <exception cref="xNet.Net.ProxyException">Ошибка при работе с прокси-сервером.</exception>
 public static void Head(Uri address, CookieDictionary cookies = null, ProxyClient proxy = null)
 {
     Head(address, null, cookies, proxy);
 }
Exemple #9
0
 /// <summary>
 /// Отправляет GET-запрос HTTP-серверу. Загружает тело сообщения и возвращает его в виде байтов.
 /// </summary>
 /// <param name="address">Адрес интернет-ресурса.</param>
 /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
 /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
 /// <returns>Если тело сообщения отсутствует, то будет возвращена пустая строка.</returns>
 /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
 /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> не является абсолютным URI.</exception>
 /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
 /// <exception cref="xNet.Net.ProxyException">Ошибка при работе с прокси-сервером.</exception>
 public static string GetText(Uri address, CookieDictionary cookies = null, ProxyClient proxy = null)
 {
     return GetText(address, null, cookies, proxy);
 }
Exemple #10
0
 /// <summary>
 /// Отправляет GET-запрос HTTP-серверу. Загружает тело сообщения и сохраняет его в новый файл по указанному пути. Если файл уже существует, то он будет перезаписан.
 /// </summary>
 /// <param name="address">Адрес интернет-ресурса.</param>
 /// <param name="path">Путь к файлу, в котором будет сохранено тело сообщения.</param>
 /// <param name="reqParams">Параметры запроса, отправляемые HTTP-серверу.</param>
 /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
 /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
 /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
 /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> не является абсолютным URI.</exception>
 /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="path"/> равно <see langword="null"/>.</exception>
 /// <exception cref="System.ArgumentException">Значение параметра <paramref name="path"/> является пустой строкой, содержит только пробелы или содержит недопустимые символы.</exception>
 /// <exception cref="System.IO.PathTooLongException">Указанный путь, имя файла или и то и другое превышает наибольшую возможную длину, определенную системой. Например, для платформ на основе Windows длина пути не должна превышать 248 знаков, а имена файлов не должны содержать более 260 знаков.</exception>
 /// <exception cref="System.IO.FileNotFoundException">Значение параметра <paramref name="path"/> указывает на несуществующий файл.</exception>
 /// <exception cref="System.IO.DirectoryNotFoundException">Значение параметра <paramref name="path"/> указывает на недопустимый путь.</exception>
 /// <exception cref="System.IO.IOException">При открытии файла возникла ошибка ввода-вывода.</exception>
 /// <exception cref="System.Security.SecurityException">Вызывающий оператор не имеет необходимого разрешения.</exception>
 /// <exception cref="System.UnauthorizedAccessException">Операция чтения файла не поддерживается на текущей платформе.</exception>
 /// <exception cref="System.UnauthorizedAccessException">Значение параметра <paramref name="path"/> определяет каталог.</exception>
 /// <exception cref="System.UnauthorizedAccessException">Вызывающий оператор не имеет необходимого разрешения.</exception>
 /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
 /// <exception cref="xNet.Net.ProxyException">Ошибка при работе с прокси-сервером.</exception>
 public static void GetFile(Uri address, string path, CookieDictionary cookies = null, ProxyClient proxy = null)
 {
     GetFile(address, path, null, cookies, proxy);
 }
Exemple #11
0
        /// <summary>
        /// Отправляет GET-запрос HTTP-серверу. Загружает тело сообщения и возвращает его в виде байтов.
        /// </summary>
        /// <param name="address">Адрес интернет-ресурса.</param>
        /// <param name="urlParams">Параметры URL-адреса, или значение <see langword="null"/>.</param>
        /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
        /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
        /// <returns>Если тело сообщения отсутствует, то будет возвращена пустая строка.</returns>
        /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
        /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> не является абсолютным URI.</exception>
        /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
        /// <exception cref="xNet.Net.ProxyException">Ошибка при работе с прокси-сервером.</exception>
        public static string GetText(Uri address, StringDictionary urlParams, CookieDictionary cookies = null, ProxyClient proxy = null)
        {
            using (var request = new HttpRequest())
            {
                if (cookies == null)
                {
                    request.Cookies = new CookieDictionary();
                }
                else
                {
                    request.Cookies = cookies;
                }

                request.Proxy = proxy;
                request.KeepAlive = false;

                if (string.IsNullOrEmpty(HttpRequest.GlobalUserAgent))
                {
                    request.UserAgent = HttpHelper.RandomUserAgent();
                }

                return request.Get(address, urlParams).ToString();
            }
        }
Exemple #12
0
        private string postRequest(string url, string refer, string form_data)
        {
            try
            {
                using (var request = new HttpRequest())
                {
                    //form_key=uS3HD9QaXL8srTob&login%5Busername%5D=hasanqusay%40yahoo.com&login%5Bpassword%5D=3124681122Bh&send=
                    //var multipartContent = new MultipartContent() {
                    //    {new StringContent("form_key"), form_data},
                    //    {new StringContent("login%5Busername%5D"), "hasanqusay%40yahoo.com"},
                    //    {new StringContent("login%5Bpassword%5D"), "3124681122Bh"},
                    //    {new StringContent("send"), " "}
                    //};

                    string content;
                    request.UserAgent = HttpHelper.ChromeUserAgent();
                    request.Referer = refer;

                    request.AddParam("form_key", form_data)
                        .AddParam("login%5Busername%5D", "*****@*****.**")
                        .AddParam("login%5Bpassword%5D", "3124681122Bh")
                        .AddParam("send", "");

                    request.AllowAutoRedirect = true;
                    request.Cookies = cookies;

                    HttpResponse response = request.Post(url);

                    var status = response.StatusCode.ToString();
                    using (var responseStream = response.ToStream())
                    {
                        cookies = response.Cookies;
                    }

                    content = response.ToString();

                    return content;

                }
            }
            catch (WebException we)
            {
                var wRespStatusCode = ((HttpWebResponse)we.Response).StatusCode;
                return wRespStatusCode.ToString();
            }
        }
Exemple #13
0
        private string getRequest(string url, string refer)
        {
            try
            {

                using (var request = new HttpRequest())
                {
                    string content;
                    request.UserAgent = HttpHelper.ChromeUserAgent();
                    request.Referer = refer;
                    request.AllowAutoRedirect = true;
                    request.Cookies = cookies;

                    HttpResponse response = request.Get(url);

                    var status = response.StatusCode.ToString();
                    using (var responseStream = response.ToStream())
                    {
                        cookies = response.Cookies;
                    }

                    content = response.ToString();

                    return content;

                }
            }
            catch (WebException we)
            {
                var wRespStatusCode = ((HttpWebResponse)we.Response).StatusCode;
                return wRespStatusCode.ToString();
            }
        }
Exemple #14
0
        internal void LoadResponse(HttpMethod method)
        {
            HasError = false;
            Address = _request.Address;
            Method = method;

            MessageBodyLoaded = false;

            _receiverHelper = new ReceiverHelper(
                _request.ClientStream, _request.TcpClient.ReceiveBufferSize);

            try
            {
                ReceiveStartingLine();

                _headers.Clear();

                if (_request.Cookies != null && !_request.Cookies.IsLocked)
                {
                    Cookies = _request.Cookies;
                }
                else
                {
                    Cookies = new CookieDictionary();
                }

                ReceiveHeaders();

                CharacterSet = GetCharacterSet();
                ContentLength = GetContentLength();
                ContentType = GetContentType();
            }
            catch (Exception ex)
            {
                HasError = true;

                if (ex is IOException)
                {
                    throw NewHttpException(
                        Resources.HttpException_FailedReceiveResponse, ex);
                }

                throw;
            }

            // Если пришёл ответ без тела сообщения.
            if (Method == HttpMethod.HEAD || StatusCode == HttpStatusCode.Continue ||
                StatusCode == HttpStatusCode.NoContent || StatusCode == HttpStatusCode.NotModified)
            {
                MessageBodyLoaded = true;
            }
        }
Exemple #15
0
        /// <summary>
        /// Отправляет POST-запрос с Multipart/form данными. Загружает тело сообщения и возвращает его в виде текста.
        /// </summary>
        /// <param name="address">Адрес интернет-ресурса.</param>
        /// <param name="multipartData">Multipart/form данные, отправляемые HTTP-серверу.</param>
        /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
        /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
        /// <returns>Если тело сообщения отсутствует, то будет возвращена пустая строка.</returns>
        /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
        /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> не является абсолютным URI.</exception>
        /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="multipartData"/> равно <see langword="null"/>.</exception>
        /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
        /// <exception cref="xNet.Net.ProxyException">Ошибка при работе с прокси-сервером.</exception>
        public static string Post(Uri address, MultipartDataCollection multipartData, CookieDictionary cookies = null, ProxyClient proxy = null)
        {
            using (HttpRequest request = new HttpRequest())
            {
                if (cookies == null)
                {
                    request.Cookies = new CookieDictionary();
                }
                else
                {
                    request.Cookies = cookies;
                }

                request.Proxy = proxy;
                request.KeepAlive = false;

                if (string.IsNullOrEmpty(HttpRequest.GlobalUserAgent))
                {
                    request.UserAgent = HttpHelper.RandomUserAgent();
                }

                return request.Post(address, multipartData).ToText();
            }
        }
Exemple #16
0
 /// <summary>
 /// Отправляет GET-запрос HTTP-серверу. Загружает тело сообщения и возвращает его в виде текста.
 /// </summary>
 /// <param name="address">Адрес интернет-ресурса.</param>
 /// <param name="cookies">Кукисы, отправляемые HTTP-серверу, или значение <see langword="null"/>.</param>
 /// <param name="proxy">Прокси-клиент, используемый для запроса, или значение <see langword="null"/>.</param>
 /// <returns>Если тело сообщения отсутствует, то будет возвращён пустой массив байтов.</returns>
 /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="address"/> равно <see langword="null"/>.</exception>
 /// <exception cref="System.ArgumentException">Значение параметра <paramref name="address"/> не является абсолютным URI.</exception>
 /// <exception cref="xNet.Net.HttpException">Ошибка при работе с HTTP-протоколом.</exception>
 /// <exception cref="xNet.Net.ProxyException">Ошибка при работе с прокси-сервером.</exception>
 public static byte[] GetBytes(Uri address, CookieDictionary cookies = null, ProxyClient proxy = null)
 {
     return GetBytes(address, null, cookies, proxy);
 }
Exemple #17
0
        // Загружает ответ и возвращает размер ответа в байтах.
        internal long LoadResponse(HttpMethod method)
        {
            Method = method;
            Address = _request.Address;

            HasError = false;
            MessageBodyLoaded = false;

            _headers.Clear();
            _rawCookies.Clear();

            if (_request.Cookies != null && !_request.Cookies.IsLocked)
            {
                Cookies = _request.Cookies;
            }
            else
            {
                Cookies = new CookieDictionary();
            }

            if (_receiverHelper == null)
            {
                _receiverHelper = new ReceiverHelper(
                    _request.TcpClient.ReceiveBufferSize);
            }

             _receiverHelper.Init(_request.ClientStream);

            try
            {
                ReceiveStartingLine();

                ReceiveHeaders();

                RedirectAddress = GetLocation();
                CharacterSet = GetCharacterSet();
                ContentLength = GetContentLength();
                ContentType = GetContentType();
            }
            catch (Exception ex)
            {
                HasError = true;

                if (ex is IOException)
                {
                    throw NewHttpException(Resources.HttpException_FailedReceiveResponse, ex);
                }

                throw;
            }

            // Если пришёл ответ без тела сообщения.
            if (ContentLength == 0 ||
                Method == HttpMethod.HEAD || Method == HttpMethod.DELETE ||
                StatusCode == HttpStatusCode.Continue || StatusCode == HttpStatusCode.NoContent ||
                StatusCode == HttpStatusCode.NotModified)
            {
                MessageBodyLoaded = true;
            }

            long responseSize = _receiverHelper.Position;

            if (ContentLength > 0)
            {
                responseSize += ContentLength;
            }

            return responseSize;
        }
Exemple #18
0
        /// <summary>
        /// Отправляет Post запрос на сайт белтелекома с параметрами <paramref name="parametrs"/>/>
        /// </summary>
        /// <param name="parametrs">Параметры запроса</param>
        /// <returns>html страницу</returns>
        private string GetHtmlContent(RequestParams parametrs)
        {
            string htmlContent = "";
            using (var request = new HttpRequest())
            {
                request.UserAgent = HttpHelper.ChromeUserAgent();
                request.EnableAdditionalHeaders = true;
                request.EnableEncodingContent = true;

                try
                {
                    request.Cookies = _cookies;
                    htmlContent = request.Post(Consts._BELTELECOM_URL, parametrs).ToString();
                    _cookies = request.Cookies;
                }
                catch (Exception ex)
                {
                    _log.Error(ex.Message);
                    ErrorMessage = ex.Message;
                }
            }
            return htmlContent;
        }