Exemple #1
0
        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));
        }
Exemple #2
0
 public void ClearLogOnInfo()
 {
     foreach (var item in CookieManager.GetCookies(DomainProvider.Eh.RootUri)
              .Concat(CookieManager.GetCookies(DomainProvider.Ex.RootUri)))
     {
         CookieManager.DeleteCookie(item);
     }
     setDefaultCookies();
 }
Exemple #3
0
        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();
            }
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
        }
Exemple #6
0
        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();
        }
Exemple #7
0
        /// <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);
            }
        }
Exemple #8
0
        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;
        }
Exemple #9
0
        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();
        }
Exemple #10
0
        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));
 }
Exemple #12
0
        /// <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
            }
        }