@Delta101

Сайт фиксирует работу selenium, как скрыть selenium от браузера?

Всем привет, пишу парсер для ozon seller на selenium, сайт каким-то образом определяет работу selenium. Нужно входить в личный кабинет ozon seller по номеру телефона, но когда есть какой-то код selenium, форма не отправляется "Произошла ошибка. Попробуйте ещё раз"

1. Добавил

await Options.excludeSwitches("enable-logging");

  await Options.addArguments("Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion") 

  await Options.addArguments("--disable-blink-features");

  await Options.addArguments("--disable-blink-features=AutomationControlled");


2. Сделал размер экрана максимальным

await driver.manage().window().maximize();
3. Добавил

await driver.executeScript("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")


И такой

const cdpConnection = await driver.createCDPConnection('page');

  await cdpConnection.execute(
    'Page.addScriptToEvaluateOnNewDocument', {
      source: `
          const newProto = navigator.__proto__;
          delete newProto.webdriver;
          navigator.__proto__ = newProto;
      `
  }
  );

4. Поменял название переменной $cdc_ в chromedriver.exe

https://stackoverflow.com/questions/33225947/can-a...

5. Добавил задержку на каждое действие

6. Пробовал использовать различные user-agent

7. Использовал proxy, но ozon seller тогда вообще не давал доступ


Мне нужно входить в личный кабинет ozon seller, собирать отзывы о товарах и автоматически на них отвечать. У ozon seller есть api, но у него нет функционала работы с отзывами
const {Builder, Browser, By, Key, until, Capabilities } = require('selenium-webdriver');
const Chrome = require('selenium-webdriver/chrome');

(async function example() {
  const Options = await new Chrome.Options();
  await Options.excludeSwitches("enable-logging");
  await Options.addArguments("Chrome/113.0.0.0 ") 
  await Options.addArguments("--disable-blink-features");
  await Options.addArguments("--disable-blink-features=AutomationControlled");
  
  
  let driver = await new Builder().forBrowser('chrome').setChromeOptions(Options).build();

  await driver.manage().window().maximize();

  await driver.executeScript("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

  const cdpConnection = await driver.createCDPConnection('page');
  await cdpConnection.execute(
    'Page.addScriptToEvaluateOnNewDocument', {
      source: `
          const newProto = navigator.__proto__;
          delete newProto.webdriver;
          navigator.__proto__ = newProto;
      `
    }
  );

  try {
    await driver.get("https://seller.ozon.ru/app/registration/signin?auth=1");
    await driver.sleep(200)
    await driver.wait(until.elementLocated(By.css('input[type="tel"]')), 2000).sendKeys('9183464580');
    await driver.sleep(200)
    await driver.findElement(By.css('button[type="submit"]')).click();
  }
  catch(err) {
    console.log(err)
  }
})();
  • Вопрос задан
  • 1181 просмотр
Пригласить эксперта
Ответы на вопрос 1
@sobra2222
Используйте selenium-stealth. Должен помочь. Учтите, он работает только с Chrome.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы