Witam,
Napisałem aplikację w selenium + c# która wchodzi na stronę allegro i pobiera sprzedaż towaru. Niestety allegro od pewnego czasu od razu wykrywa mi boota i nie przepuszcza dalej. Nie miałem wiele zapytań na minutę, góra jedno. Zmieniam IP przez VPN, ale od razu też mnie wyłapują. Testowałem na różnych przeglądarkach i zmieniałem headery. Jak się loguje przez normalną przeglądarkę to działa strona poprawnie...
Macie jakiś pomysł jak to obejść?
Dzięki
0
0
Dzięki. Zmiana w pliku chrome (jak w linku), plus dodanie:
ChromeOptions options = new ChromeOptions();//Wersja 99.0.4844.84
options.AddArgument(@"--profile-directory=Profile 1");
options.AddArgument(@"--disable-blink-features=AutomationControlled"); //navigator.webdriver daje na false
options.AddArgument(@"--user-data-dir=C:\Users\Komp\AppData\Local\Google\Chrome\User Data");
options.AddExcludedArguments(new List<string>() { "enable-automation" });
// options.AddArguments(@"user-data-dir=" + Application.StartupPath + "\\profile")
IWebDriver driver = new ChromeDriver(options);
IDevTools devTools = driver as IDevTools;
DevToolsSession session = devTools.GetDevToolsSession();
var domains = session.GetVersionSpecificDomains<DevToolsSessionDomains>();
domains.Page.Enable(new OpenQA.Selenium.DevTools.V96.Page.EnableCommandSettings());
domains.Page.AddScriptToEvaluateOnNewDocument(new AddScriptToEvaluateOnNewDocumentCommandSettings()
{
Source = "Object.defineProperty(navigator, 'webdriver', { get: () => undefined })"
});
driver.Manage().Window.Position = new System.Drawing.Point(8, 39);
driver.Manage().Window.Size = new System.Drawing.Size(1100, 700);
driver.Manage().Timeouts().ImplicitWait = System.TimeSpan.FromSeconds(5);
driver.Manage().Timeouts().PageLoad = System.TimeSpan.FromSeconds(6);
driver.Navigate().GoToUrl("https://www.wp.pl");
Plus nagłówki:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.DevTools;
using OpenQA.Selenium.Firefox;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.Text.RegularExpressions;
using OpenQA.Selenium.DevTools.V96.Page;
using Network = OpenQA.Selenium.DevTools.V96.Network;
using DevToolsSessionDomains = OpenQA.Selenium.DevTools.V96.DevToolsSessionDomains;
Na razie działa. Oczywiście losowo z zakresu 1-2 minut pobieram jedną aukcję.
0
I jak zadziałało ?
hansikkk napisał(a):
Dzięki. Zmiana w pliku chrome (jak w linku), plus dodanie:
ChromeOptions options = new ChromeOptions();//Wersja 99.0.4844.84 options.AddArgument(@"--profile-directory=Profile 1"); options.AddArgument(@"--disable-blink-features=AutomationControlled"); //navigator.webdriver daje na false options.AddArgument(@"--user-data-dir=C:\Users\Komp\AppData\Local\Google\Chrome\User Data"); options.AddExcludedArguments(new List<string>() { "enable-automation" }); // options.AddArguments(@"user-data-dir=" + Application.StartupPath + "\\profile") IWebDriver driver = new ChromeDriver(options); IDevTools devTools = driver as IDevTools; DevToolsSession session = devTools.GetDevToolsSession(); var domains = session.GetVersionSpecificDomains<DevToolsSessionDomains>(); domains.Page.Enable(new OpenQA.Selenium.DevTools.V96.Page.EnableCommandSettings()); domains.Page.AddScriptToEvaluateOnNewDocument(new AddScriptToEvaluateOnNewDocumentCommandSettings() { Source = "Object.defineProperty(navigator, 'webdriver', { get: () => undefined })" }); driver.Manage().Window.Position = new System.Drawing.Point(8, 39); driver.Manage().Window.Size = new System.Drawing.Size(1100, 700); driver.Manage().Timeouts().ImplicitWait = System.TimeSpan.FromSeconds(5); driver.Manage().Timeouts().PageLoad = System.TimeSpan.FromSeconds(6); driver.Navigate().GoToUrl("https://www.wp.pl"); Plus nagłówki:
using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.DevTools; using OpenQA.Selenium.Firefox; using System.Collections.Generic; using System.Globalization; using System.Text; using System.Text.RegularExpressions; using OpenQA.Selenium.DevTools.V96.Page; using Network = OpenQA.Selenium.DevTools.V96.Network; using DevToolsSessionDomains = OpenQA.Selenium.DevTools.V96.DevToolsSessionDomains;
Na razie działa. Oczywiście losowo z zakresu 1-2 minut pobieram jedną aukcję.