Jak ukryć selenium tak, żebym mógł zalogować się na stronie. C#

0

Cześć,
Pisze w C# na selenium bota, który ma zalogować się na strone i zrobić to co tam dalej chce, ale nie wiem co zrobić, żeby strona puściła mnie przez strone logowania. Zawsze wywala mi błąd i blokada. W XHR na czerwono. Mam użyte rotating proxy i reszte rzeczy, które powinny ukryć to, że lece na automacie. Prosze pomóżcie, siedze nad kodem już trzy dni i trzy dni próbuje coś zrobić ale nic nie działa.

screenshot-20210517211443.png

2

Co prawda nie pisałem w CiSzarp ale próbowałem coś kodzić w Javie i wiem, że np. przy stronach zrobionych na Angularach można mieć problemy pomimo istnienia ngWebDriver.

Btw, IWebDriver driver = new ChromeDriver - nie rób tak ;] Od tego jest WebDriverManager ;]

Zawsze wywala mi błąd i blokada

Ale jaki błąd? :/ Bo pokazałeś kwałek kodu...

Btw, poczytaj o tzw wzorcu POM - Page Object Model. W skrócie, tworzysz klasę na każdą stronę a do testu oddzielną i w nim sobie robisz instancję tej strony.

0

Szukałeś przyczyny błędu w googlach i na SO?

0

@.andy: Wywala coś takiego. image0.png Ktoś mi powiedział, że blokują mnie CORSY. Dzisiaj próbowałem bawić się znowu dodając jakieś argumenty, które były podane na stocku pod tym samym problemem, ale nic. W chromedriver podmieniłem $cdc na jakąś inną wartość bo przeczytałem, że niektórym po tym działało. Czyli mówisz, że jak zastąpić to "IWebDriver driver = new ChromeDriver".

ChromeOptions options = new ChromeOptions();
           options.EnableMobileEmulation("iPhone X");
           options.AddArgument("--user-agent=Mozilla/5.0 (Linux; Android 6.0; U10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36");
           options.AddArgument("--disable-blink-features=AutomationControlled");
           options.AddArgument("--disable-blink-features");
           options.AddArgument("--useAutomationExtension:False");
           options.AddExcludedArgument("--enable-automation");
           //options.AddArguments("--incognito");
           options.AddArguments("--disable-infobars");
           options.AddArgument("--start-maximized");
           options.AddArguments("--excludeSwitches");
           options.AddArgument("--disable-extensions");
           options.AddArgument("--proxy-server=proxyyyy");
           IWebDriver driver = new ChromeDriver("C:/Users/adria/source/repos/SNKRS-bot/SNKRS-bot/bin/Debug", options);
           driver.Manage().Cookies.DeleteAllCookies();
           WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
           //driver.Navigate().GoToUrl(guna2TextBox3.Text);
           driver.Navigate().GoToUrl("https://www.nike.com/pl/launch");
           IWebElement accept_cookies = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//button[@class='ncss-btn-primary-dark']")));
           accept_cookies.Click();
           IWebElement click_menu = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//button[@class='bg-transparent d-sm-ib va-sm-m menu-button']")));
           click_menu.Click();
           Thread.Sleep(2000);
           IWebElement click_login = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//button[@class='ncss-brand text-color-grey pt6-sm pb6-sm d-sm-b u-uppercase fs19-sm fs22-md fs16-lg 
 bg-transparent']")));
           click_login.Click();
           Thread.Sleep(3000);
           IWebElement email = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@placeholder='Adres e-mail']")));
           email.Clear();
           email.SendKeys("mojmail");
           Thread.Sleep(4000);
           IWebElement password = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@placeholder='Hasło']")));
           password.Clear();
           password.SendKeys("mojehaslo");
           Thread.Sleep(1000);
           IWebElement log_in = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//input[@value='ZALOGUJ SIĘ']")));
           log_in.Click();
0

Czyli mówisz, że jak zastąpić to "IWebDriver driver = new ChromeDriver".

Chodzi o to aby samemu tego nie konstruować ale żeby to zrobił manager za nas ;) Na sam problem to raczej wpływu nie ma.

Co do samego problemu to mi się wydaję, że nie chodzi o CORS ale o to że strona wykrywa, że ją "klikasz" z selenium i blokuje.

Jeżeli bardzo zależy Ci na takim łażeniu po tej stronie i nie rozwiążesz tego problemu, to spróbuj oprogramowania klasy RPA np. UiPath. Można tworzyć automaty do klikania po elementach strony czy aplikacji desktopowej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1