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()); } }
/// <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); }
/// <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(); } }
/// <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(); } }
/// <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); }
/// <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); }
/// <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); }
/// <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(); } }
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(); } }
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(); } }
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; } }
/// <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(); } }
/// <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); }
// Загружает ответ и возвращает размер ответа в байтах. 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; }
/// <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; }