public HttpWebRequest CreateRequest(string url, string method) { EnforceRateLimit(); var prependDomain = !Uri.IsWellFormedUriString(url, UriKind.Absolute); HttpWebRequest request; if (prependDomain) { request = (HttpWebRequest)WebRequest.Create(String.Format("{0}://{1}{2}", Protocol, RootDomain, url)); } else { request = (HttpWebRequest)WebRequest.Create(url); } request.CookieContainer = Cookies; if (Type.GetType("Mono.Runtime") != null) { var cookieHeader = Cookies.GetCookieHeader(new Uri("http://reddit.com")); request.Headers.Set("Cookie", cookieHeader); } if (RootDomain == "oauth.reddit.com") // use OAuth { request.Headers.Set("Authorization", "bearer " + AccessToken); //Must be included in OAuth calls } request.Method = method; request.UserAgent = UserAgent + " - with RedditSharp by /u/sircmpwn"; return(request); }
protected internal HttpWebRequest CreateRequest(string url, string method, bool prependDomain = true) { while (EnableRateLimit && (DateTime.Now - lastRequest).TotalSeconds < 2) { ; // Rate limiting } lastRequest = DateTime.Now; HttpWebRequest request; if (prependDomain) { request = (HttpWebRequest)WebRequest.Create(string.Format("http://{0}{1}", RootDomain, url)); } else { request = (HttpWebRequest)WebRequest.Create(url); } request.CookieContainer = Cookies; if (Type.GetType("Mono.Runtime") != null) { var cookieHeader = Cookies.GetCookieHeader(new Uri("http://reddit.com")); request.Headers.Set("Cookie", cookieHeader); } request.Method = method; request.UserAgent = UserAgent + " - with RedditSharp by /u/sircmpwn"; return(request); }
public IEnumerator Send() { clock.Start(); var uri = new Uri(WebRequest.url); string cookieHeader = Cookies.GetCookieHeader(uri); if (!string.IsNullOrEmpty(cookieHeader)) { AddHeader("cookie", cookieHeader); } if (!hasSend) { hasSend = true; yield return(1); } while (!isDone) { yield return(WebRequest.Send()); isDone = true; } if (!WebRequest.isError && Cookies != null) { string cookieStr = WebRequest.GetResponseHeader("Set-Cookie"); if (!string.IsNullOrEmpty(cookieStr)) { Cookies.SetCookies(uri, cookieStr); } } responseTime = clock.ElapsedMilliseconds; clock.Reset(); LogResponse(); }
/// <summary> /// Sends a POST request to Checkmarx at the requestUri (e.g. auth/login) and containing the JSON given. /// </summary> /// <param name="requestUri">Request URI</param> /// <param name="json">JSON</param> /// <returns>Response from the server if the status code is 200</returns> async Task <HttpResponseMessage> Post(string requestUri, string json) { if (!requestUri.StartsWith(CX_REST_API)) { requestUri = String.Format("{0}{1}", CX_REST_API, requestUri); } StringContent content = new StringContent(json, Encoding.UTF8, "application/json"); Uri uri = new Uri(Client.BaseAddress, requestUri); Log.Debug(String.Format("Sending HTTP POST request to {0}: {1} bytes (application/json)", uri, Encoding.UTF8.GetByteCount(json))); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, uri); request.Content = content; request.Headers.Add("Cookie", Cookies.GetCookieHeader(Client.BaseAddress)); HttpResponseMessage response = await Client.SendAsync(request); response.EnsureSuccessStatusCode(); return(response); }
// Helpers getting network communication objects. They use an alternative authentication // because the standard HTTP authentication doesn't work with Office 365. protected override WebClient GetClient() { var client = new WebClient(); client.Headers.Add(HttpRequestHeader.Cookie, Cookies.GetCookieHeader(new Uri(Drive.WebUrl))); return(client); }
protected override WebRequest GetWebRequest(Uri address) { WebRequest request = null; if (Proxy.ProxyType != ProxyTypeEnum.Socks) { request = base.GetWebRequest(address); } else { request = SocksHttpWebRequest.Create(address); var br = base.GetWebRequest(address); request.Method = br.Method; request.ContentLength = br.ContentLength; request.ContentType = br.ContentType; } request.Headers.Add("Cookie", Cookies.GetCookieHeader(address)); request.Headers.Add("Accept-Language", AcceptLanguage); request.Headers.Add("Accept-Encoding", AcceptEncoding); if (CustomHeaders != null) { foreach (string key in CustomHeaders.AllKeys) { request.Headers.Add(key, CustomHeaders[key]); } } if (Proxy.ProxyType != ProxyTypeEnum.Socks) { var httpRequest = (request as HttpWebRequest); httpRequest.UserAgent = UserAgent; httpRequest.Accept = Accept; httpRequest.Referer = Referer; httpRequest.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; httpRequest.AllowAutoRedirect = AllowAutoRedirect; // TO IMPLEMANT IF REQUIRED httpRequest.RefuseOtherDomainRedirect = RefuseOtherDomainRedirect; } else if (Proxy.ProxyType == ProxyTypeEnum.Socks) { var socksRequest = (request as SocksHttpWebRequest); socksRequest.UserAgent = UserAgent; socksRequest.Accept = Accept; socksRequest.Referer = Referer; socksRequest.AllowAutoRedirect = AllowAutoRedirect; socksRequest.DnsResolvedBySocksProxy = DnsResolvedBySocksProxy; socksRequest.ValidateServerCertificateSocksProxy = ValidateServerCertificateSocksProxy; socksRequest.RefuseOtherDomainRedirect = RefuseOtherDomainRedirect; } request.Timeout = (int)Timeout.TotalMilliseconds; request.Proxy = Proxy.ProxyItem; return(request); }
private void AddCookies(RequestBuilder requestBuilder, Uri absoluteUrl) { var cookieHeader = Cookies.GetCookieHeader(absoluteUrl); if (!string.IsNullOrWhiteSpace(cookieHeader)) { requestBuilder.AddHeader(HeaderNames.Cookie, cookieHeader); } }
private HttpWebRequest CreateRequest(Uri uri, string method) { EnforceRateLimit(); var request = (HttpWebRequest)WebRequest.Create(uri); request.CookieContainer = Cookies; if (Type.GetType("Mono.Runtime") != null) { var cookieHeader = Cookies.GetCookieHeader(new Uri("http://reddit.com")); request.Headers.Set("Cookie", cookieHeader); } if (RootDomain == "oauth.reddit.com") // use OAuth { request.Headers.Set("Authorization", "bearer " + AccessToken); //Must be included in OAuth calls } request.Method = method; request.UserAgent = UserAgent + " - with RedditSharp by /u/sircmpwn"; return(request); }
protected override WebRequest GetWebRequest(Uri address) { WebRequest request = null; if (Proxy.ProxyType != ProxyTypeEnum.Socks) { request = base.GetWebRequest(address); } else { request = SocksHttpWebRequest.Create(address); request.Method = base.GetWebRequest(address).Method; request.ContentLength = base.GetWebRequest(address).ContentLength; request.ContentType = base.GetWebRequest(address).ContentType; } request.Headers.Add("Cookie", Cookies.GetCookieHeader(address)); request.Headers.Add("Accept-Language", AcceptLanguage); request.Headers.Add("Accept-Encoding", AcceptEncoding); if (Proxy.ProxyType != ProxyTypeEnum.Socks) { var httpRequest = (request as HttpWebRequest); httpRequest.UserAgent = UserAgent; httpRequest.Accept = Accept; httpRequest.Referer = Referer; httpRequest.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; } else if (Proxy.ProxyType == ProxyTypeEnum.Socks) { var socksRequest = (request as SocksHttpWebRequest); socksRequest.UserAgent = UserAgent; socksRequest.Accept = Accept; socksRequest.Referer = Referer; } request.Timeout = (int)Timeout.TotalMilliseconds; request.Proxy = Proxy.ProxyItem; return(request); }
/// <summary> /// Create a <see cref="HttpWebRequest"/> /// </summary> /// <param name="uri">target uri</param> /// <param name="method">http method</param> /// <returns></returns> protected virtual HttpWebRequest CreateRequest(Uri uri, string method) { EnforceRateLimit(); var request = (HttpWebRequest)WebRequest.Create(uri); request.CookieContainer = Cookies; if (Type.GetType("Mono.Runtime") != null) { var cookieHeader = Cookies.GetCookieHeader(new Uri("http://reddit.com")); request.Headers.Set("Cookie", cookieHeader); } if (IsOAuth() && uri.Host.ToLower() == "oauth.reddit.com") // use OAuth { request.Headers.Set("Authorization", "bearer " + AccessToken); //Must be included in OAuth calls } request.Method = method; request.UserAgent = UserAgent + " - with RedditSharp by /u/meepster23"; request = InjectProxy(request); return(request); }
/// <summary> /// Create a <see cref="HttpWebRequest"/> /// </summary> /// <param name="url">target uri</param> /// <param name="method">http method</param> /// <returns></returns> public virtual HttpWebRequest CreateRequest(string url, string method) { EnforceRateLimit(); bool prependDomain; // IsWellFormedUriString returns true on Mono for some reason when using a string like "/api/me" // additionally, doing this fixes an InvalidCastException if (Type.GetType("Mono.Runtime") != null) { prependDomain = !url.StartsWith("http://") && !url.StartsWith("https://"); } else { prependDomain = !Uri.IsWellFormedUriString(url, UriKind.Absolute); } HttpWebRequest request; if (prependDomain) { request = (HttpWebRequest)WebRequest.Create(string.Format("{0}://{1}{2}", Protocol, RootDomain, url)); } else { request = (HttpWebRequest)WebRequest.Create(url); } request.CookieContainer = Cookies; if (Type.GetType("Mono.Runtime") != null) { var cookieHeader = Cookies.GetCookieHeader(new Uri("http://reddit.com")); request.Headers.Set("Cookie", cookieHeader); } if (IsOAuth() && request.Host.ToLower() == "oauth.reddit.com") // use OAuth { request.Headers.Set("Authorization", "bearer " + AccessToken); //Must be included in OAuth calls } request.Method = method; request.UserAgent = UserAgent + " - with RedditSharp by /u/meepster23"; request = InjectProxy(request); return(request); }
/// <summary> /// Получить капчу, нужна для отправки HLR запроса /// </summary> /// <returns></returns> public static async Task <ReturnTypes.ResponseGetCaptcha> GetCaptchaAsync() { return(await Task.Run(() => { using (var request = new HttpRequest()) { Image captchaImage = null; if (!string.IsNullOrEmpty(ProxyAdress)) { request.Proxy = ProxyClient.Parse(ProxyTypeLeaf, ProxyAdress); } try { request.Get("https://smsc.ru/testhlr/").None(); } catch { return new ReturnTypes.ResponseGetCaptcha { RequestError = true, FailedConnected = !request.HttpIsConnected() }; } Cookies = request.Response.Cookies; request.Cookies = Cookies; try { captchaImage = Image.FromStream(request.Get("https://smsc.ru/sys/imgcode.php?1.1").ToMemoryStream()); } catch { return new ReturnTypes.ResponseGetCaptcha { RequestError = true, FailedConnected = !request.HttpIsConnected() }; } SECookie = Cookies.GetCookieHeader("https://smsc.ru/testhlr/").Replace("SE=", ""); return new ReturnTypes.ResponseGetCaptcha { Captcha = captchaImage }; } })); }
public HttpWebRequest CreateRequest(string url, string method) { EnforceRateLimit(); bool prependDomain; // IsWellFormedUriString returns true on Mono for some reason when using a string like "/api/me" if (Type.GetType("Mono.Runtime") != null) { prependDomain = !url.StartsWith("http://") && !url.StartsWith("https://"); } else { prependDomain = !Uri.IsWellFormedUriString(url, UriKind.Absolute); } HttpWebRequest request; if (prependDomain) { request = (HttpWebRequest)WebRequest.Create($"{Protocol}://{RootDomain}{url}"); } else { request = (HttpWebRequest)WebRequest.Create(url); } request.CookieContainer = Cookies; if (Type.GetType("Mono.Runtime") != null) { var cookieHeader = Cookies.GetCookieHeader(new Uri("http://reddit.com")); request.Headers.Set("Cookie", cookieHeader); } if (request.Address.Host.ToLower().Contains("oauth.reddit.com")) // use OAuth { request.Headers.Set("Authorization", "bearer " + AccessToken); //Must be included in OAuth calls } request.Method = method; request.UserAgent = UserAgent + " - with RedditSharp by /u/sircmpwn"; return(request); }
protected override WebRequest GetWebRequest(Uri address) { WebRequest request = null; if (Proxy.ProxyType != ProxyTypeEnum.Socks && Proxy.ProxyType != ProxyTypeEnum.Socks4) { request = base.GetWebRequest(address); request.ContentType = string.IsNullOrEmpty(ContentType) ? base.GetWebRequest(address).ContentType : ContentType; } else if (Proxy.ProxyType == ProxyTypeEnum.Socks) { request = SocksHttpWebRequest.Create(address, IsGetIPFromProxyServer); request.Method = base.GetWebRequest(address).Method; request.ContentLength = base.GetWebRequest(address).ContentLength; request.ContentType = string.IsNullOrEmpty(ContentType) ? base.GetWebRequest(address).ContentType : ContentType; } else if (Proxy.ProxyType == ProxyTypeEnum.Socks4) { request = Socks4HttpWebRequest.Create(address); request.Method = base.GetWebRequest(address).Method; request.ContentLength = base.GetWebRequest(address).ContentLength; request.ContentType = string.IsNullOrEmpty(ContentType) ? base.GetWebRequest(address).ContentType : ContentType; } request.Headers.Add("Cookie", Cookies.GetCookieHeader(address)); request.Headers.Add("Accept-Language", AcceptLanguage); request.Headers.Add("Accept-Encoding", AcceptEncoding); if (CustomHeaders != null) { foreach (string key in CustomHeaders.AllKeys) { request.Headers.Add(key, CustomHeaders[key]); } } if (Proxy.ProxyType != ProxyTypeEnum.Socks && Proxy.ProxyType != ProxyTypeEnum.Socks4) { var httpRequest = (request as HttpWebRequest); httpRequest.UserAgent = UserAgent; httpRequest.Accept = Accept; httpRequest.Referer = Referer; httpRequest.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; httpRequest.AllowAutoRedirect = AllowAutoRedirect; } else if (Proxy.ProxyType == ProxyTypeEnum.Socks) { var socksRequest = (request as SocksHttpWebRequest); socksRequest.UserAgent = UserAgent; socksRequest.Accept = Accept; socksRequest.Referer = Referer; socksRequest.AllowAutoRedirect = AllowAutoRedirect; } else if (Proxy.ProxyType == ProxyTypeEnum.Socks4) { var socks4Request = (request as Socks4HttpWebRequest); socks4Request.UserAgent = UserAgent; socks4Request.Accept = Accept; socks4Request.Referer = Referer; socks4Request.AllowAutoRedirect = AllowAutoRedirect; } request.Timeout = (int)Timeout.TotalMilliseconds; request.Proxy = Proxy.ProxyItem; return(request); }