private async Task _RefreshSettingsAsync(CancellationToken token = default) { async Task refresh(DomainProvider domain, CancellationToken t) { var cookie = CookieManager.GetCookies(domain.RootUri).SingleOrDefault(c => c.Name == CookieNames.SettingsKey); if (cookie != null) { CookieManager.DeleteCookie(cookie); } try { await domain.Settings.FetchAsync(t); await domain.Settings.SendAsync(t); } catch { if (cookie != null) { CookieManager.SetCookie(cookie); } throw; } } await Task.WhenAll(refresh(DomainProvider.Eh, token), refresh(DomainProvider.Ex, token)); }
public void ClearLogOnInfo() { foreach (var item in CookieManager.GetCookies(DomainProvider.Eh.RootUri) .Concat(CookieManager.GetCookies(DomainProvider.Ex.RootUri))) { CookieManager.DeleteCookie(item); } setDefaultCookies(); }
private void runOneEmailOneKey() { //int count = this.cookies.Count; IWebDriver chrome = null; foreach (string cookieStr in cookies.GetCookies()) { try { chrome = createChrome(); HeaderModifier.GenerateOAuth2Token(chrome, cookieStr); if (!TestLogged(chrome, cookieStr)) { continue; } int delayDuration = int.Parse(delayField.Text); chrome.GetVideoAndComment(this.keys[KeyIndex++], this.comments, delayDuration, checkBoxFilter.Checked ? "CAMSBAgCEAE%253D" : "CAASBAgBEAE%253D", int.Parse(numVideo.Text)); if (KeyIndex == keys.Count) { KeyIndex = 0; } chrome.Quit(); } catch (Exception ex) { if (ex.Message.Contains("remote")) { CloseAllChrome(); chrome = createChrome(); } else { Console.WriteLine("Error at running one email: " + ex.Message + " " + ex.StackTrace); } } // this.labelCountCookies.Text = count--.ToString(); } }
public Form1() { this.InitializeComponent(); this.webDrivers = new List <IWebDriver>(); this.keys = this.readKeys(); this.comments = this.readComments(); this.cookies = new CookieManager("cookie.txt"); this.labelCountCookies.Text = cookies.GetCookies().Length.ToString(); this.labelCountKeys.Text = this.keys.Count.ToString(); this.labelCountComments.Text = this.comments.Count.ToString(); }
internal async Task ResetExCookieAsync() { foreach (var item in CookieManager.GetCookies(DomainProvider.Ex.RootUri)) { CookieManager.DeleteCookie(item); } await HttpClient.GetAsync(DomainProvider.Ex.RootUri, HttpCompletionOption.ResponseHeadersRead, true); _CopyCookie(CookieNames.SettingsKey); _CopyCookie(CookieNames.HathPerks); _SetDefaultCookies(); }
private async Task refreshHathPerks() { var cookie = CookieManager.GetCookies(DomainProvider.Eh.RootUri).SingleOrDefault(c => c.Name == CookieNames.HathPerks); if (cookie != null) { CookieManager.DeleteCookie(cookie); } await HttpClient.GetAsync(hathperksUri, HttpCompletionOption.ResponseHeadersRead, true); CheckLogOn(); ResetExCookie(); }
/// <summary> /// 获取cookie解密信息 /// </summary> /// <returns></returns> public static string GetSSO() { try { //SsoAuthUser._Log.Debug((object)"获得Cookie值:GetSSO"); string cipherText = CookieManager.GetCookies("SSOAuth"); return(string.IsNullOrEmpty(cipherText) ? string.Empty : AESEncryption.DecryptString(cipherText, OnlyAuthenticationConfig.SSOConfig.AES.Key, OnlyAuthenticationConfig.SSOConfig.AES.IV)); } catch (Exception ex) { //SsoAuthUser._Log.ErrorFormat("GetSSO 获得Cookie 失败:{0}", (object)JsonConvert.SerializeObject((object)ex)); return(string.Empty); } }
private async Task refreshCookieAndSettings() { foreach (var item in CookieManager.GetCookies(DomainProvider.Eh.RootUri).Where(c => !isKeyCookie(c))) { CookieManager.DeleteCookie(item); } ResetExCookie(); var f1 = DomainProvider.Eh.Settings.FetchAsync(); var f2 = DomainProvider.Ex.Settings.FetchAsync(); await f1; await f2; var a1 = DomainProvider.Eh.Settings.SendAsync(); var a2 = DomainProvider.Ex.Settings.SendAsync(); await a1; await a2; }
internal void ResetExCookie() { foreach (var item in CookieManager.GetCookies(DomainProvider.Ex.RootUri)) { CookieManager.DeleteCookie(item); } foreach (var item in CookieManager.GetCookies(DomainProvider.Eh.RootUri).Where(isImportantCookie)) { var cookie = new HttpCookie(item.Name, Domains.Ex, "/") { Expires = item.Expires, Value = item.Value }; CookieManager.SetCookie(cookie); } setDefaultCookies(); }
private bool _CopyCookie(string name) { var cookie = CookieManager.GetCookies(DomainProvider.Eh.RootUri).SingleOrDefault(c => c.Name == name); if (cookie is null) { return(false); } cookie = new HttpCookie(cookie.Name, Domains.Ex, "/") { Expires = cookie.Expires, HttpOnly = cookie.HttpOnly, Secure = cookie.Secure, Value = cookie.Value }; CookieManager.SetCookie(cookie); return(true); }
public virtual string GetCookies() { return(CookieManager.GetCookies(this.httpRequest)); }
/// <summary> /// Gets the web response. /// </summary> /// <param name = "absoluteUri">The absolute URI.</param> /// <param name = "method">The method.</param> /// <param name = "referer">The referer.</param> /// <returns></returns> private HttpWebResponse GetHttpWebResponse(string absoluteUri, string method, string referer, bool retryAfterHeadException, CredentialCache credentialCache, CookieContainer cookieContainer, IWebProxy webProxy) { if (HttpWebRequest != null) { HttpWebRequest.Abort(); HttpWebRequest = null; } HttpWebResponse = null; HttpWebRequest = (HttpWebRequest)WebRequest.Create(absoluteUri); //HttpWebRequest.Headers.Add("Proxy-Requesting-Process", Process.GetCurrentProcess().ProcessName); if (!string.IsNullOrEmpty(_applicationSettings.Accept)) { HttpWebRequest.Accept = _applicationSettings.Accept; } if (!string.IsNullOrEmpty(_applicationSettings.AcceptEncoding)) { HttpWebRequest.Headers.Add("Accept-Encoding", _applicationSettings.AcceptEncoding); } HttpWebRequest.AllowAutoRedirect = _applicationSettings.AllowAutoRedirect; HttpWebRequest.CachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache); if (_applicationSettings.ProcessCookies) { _cookieManager.GetCookies(absoluteUri, cookieContainer); } HttpWebRequest.CookieContainer = cookieContainer; if (credentialCache != null) { HttpWebRequest.Credentials = credentialCache; } else { //HttpWebRequest.UseDefaultCredentials = true; } HttpWebRequest.KeepAlive = false; HttpWebRequest.MaximumAutomaticRedirections = _applicationSettings.MaximumNumberOfAutoRedirects; HttpWebRequest.Method = method; //set as not setting reduces the crawl rate by 90%... HttpWebRequest.Proxy = _proxyManager.GetNextProxy(); HttpWebRequest.ReadWriteTimeout = (int)(_applicationSettings.CrawlRequestTimeoutInMinutes * 60000); if (!string.IsNullOrEmpty(referer) && absoluteUri != referer) { HttpWebRequest.Referer = referer; } HttpWebRequest.Timeout = (int)(_applicationSettings.CrawlRequestTimeoutInMinutes * 60000); HttpWebRequest.UserAgent = _applicationSettings.UserAgent; try { //_stopwatch.Start(); WebException = null; //old, serialized, which may wait longer than anticipated on DNS lookups... //HttpWebResponse = (HttpWebResponse) HttpWebRequest.GetResponse(); _didTheWebRequestTimeOut = false; _didTheWebRequestThrowAnException = false; _httpWebResponseCallbackResetEvent.Reset(); //new, semi-serialized, which will not wait longer than anticipated on DNS lookups... IAsyncResult result = HttpWebRequest.BeginGetResponse(GetHttpWebResponseCallback, HttpWebRequest); result.AsyncWaitHandle.WaitOne((int)(_applicationSettings.CrawlRequestTimeoutInMinutes * 60000), false); if (!result.IsCompleted) { _didTheWebRequestTimeOut = true; throw new WebException("The operation timed out.", WebExceptionStatus.Timeout); } if (_didTheWebRequestThrowAnException) { if (WebException != null) { throw WebException; } } _httpWebResponseCallbackResetEvent.WaitOne(); } catch (WebException webException) { if (webException.Response != null) { HttpWebResponse = (HttpWebResponse)webException.Response; //some webservers don't allow the HEAD method... if (HttpWebResponse.StatusCode == HttpStatusCode.MethodNotAllowed || HttpWebResponse.StatusCode == HttpStatusCode.NotAcceptable) { if (method == "HEAD" && retryAfterHeadException) { GetHttpWebResponse(absoluteUri, "GET", referer, false, credentialCache, cookieContainer, webProxy); return(HttpWebResponse); } } } //If you encounter exception after exception here, see here: http://arachnode.net/forums/p/321/10290.aspx //Also, look up turning off 'Just My Code' - this is a Visual Studio option. WebException = webException; if (webException.Response != null) { HttpWebResponse = (HttpWebResponse)webException.Response; } throw new WebException(webException.Message, webException); } finally { //_stopwatch.Reset(); } if (HttpWebResponse == null) { if (WebException != null) { if (WebException.Response != null) { HttpWebResponse = (HttpWebResponse)WebException.Response; //some webservers don't allow the HEAD method... if (HttpWebResponse.StatusCode == HttpStatusCode.MethodNotAllowed || HttpWebResponse.StatusCode == HttpStatusCode.NotAcceptable) { if (method == "HEAD" && retryAfterHeadException) { GetHttpWebResponse(absoluteUri, "GET", referer, false, credentialCache, cookieContainer, webProxy); return(HttpWebResponse); } } } } } return(HttpWebResponse); }
// TODO: Still have to check this function, if is working as intended public void Run() { postRequest = new PostForm(); getRequest = new GetForm(); postRequest.EndHttp += new ResponseCallbackDelegate(httpResponse_EndHttp); getRequest.EndHttp += new ResponseCallbackDelegate(httpResponse_EndHttp); reports = new ArrayList(); UnitTestSession session = this.CurrentUnitTestSession; int availableTests = session.AvailableTests(); bool lastItem = false; // get tests count for (int i=0;i<session.UnitTestForms.Count;i++) { UnitTestItem testItem = session.UnitTestForms.GetByIndex(i); HtmlFormTag form = testItem.Form; #region Run each test in UnitTestItem // run each test in Form foreach (DictionaryEntry de in testItem.Tests) { Test test = (Test)de.Value; // apply test to form HtmlFormTag filledForm = ApplyTestToForm(test,form.CloneTag()); // set current test index testItem.SelectedTestIndex = testItem.Tests.IndexOfValue(test); // get reponse uri Uri uri = (Uri)this.CurrentUnitTestSession.SessionData.ResponseHeaderCollection["Response Uri"]; // resolve uri string url = UriResolver.ResolveUrl(uri,filledForm.Action); // process special fields // filledForm = parser.ProcessSpecialFields(filledForm); // convert to array list ArrayList al = parser.ConvertToArrayList(filledForm); // set posted data StringBuilder postDataBuffer = new StringBuilder(); postDataBuffer.Append("?"); for (int k=0;k<al.Count;k++) { postDataBuffer.Append(al[k]); postDataBuffer.Append("&"); } test.Arguments.PostData = postDataBuffer.ToString(); // set last item flag if ( availableTests == 1) { lastItem = true; } CookieManager cookieManager = new CookieManager(); CookieCollection cookies = cookieManager.GetCookies(new Uri(url)); if ( filledForm.Method.ToLower(System.Globalization.CultureInfo.InvariantCulture) == "get" ) { getRequest.StartAsyncHttpGet( url, this.ProtocolProperties, al, cookies, testItem.Clone(), lastItem); } else { postRequest.StartAsyncHttpPost( url, this.ProtocolProperties, al, cookies, testItem.Clone(), lastItem); } availableTests--; } #endregion } }