Seleniumbase не проходит обнаружение в LinuxPython

Программы на Python
Ответить
Anonymous
 Seleniumbase не проходит обнаружение в Linux

Сообщение Anonymous »

Мне не удается успешно загрузить страницу, когда я использую скрипт в Linux. Я пробовал использовать Ubuntu 23.10 и Alpine 3.18.
На моем Mac, используя pycharm + selenium (или seleniumbase) + undetected-chromedriver, я могу успешно загрузить страницу и выполнить автоматизацию.
Я пробовал на машине с Windows 11, и сценарий тоже сработал.
Так что я схожу с ума, пытаясь понять, почему на установка Linux не работает должным образом.
Я использую venv, некоторые ключевые сведения о версии:

Код: Выделить всё

    Python 3.11.6
selenium             4.16.0
seleniumbase         4.22.0

chromedriver --version
ChromeDriver 120.0.6099.71 (9729082fe6174c0a371fc66501f5efc5d69d3d2b-refs/branch-    heads/6099_56@{#13})

google-chrome --version
Google Chrome 120.0.6099.71

Я использую send_keys для ввода имени пользователя и пароля при входе в систему.
  • Следующая страница — рабочая = страница сведений об учетной записи или вызов MFA
  • Следующая страница — не работает = что-то пошло не так
Самый простой из тестов, которые я пробовал:
Мой предпочтительный способ:

Код: Выделить всё

    from seleniumbase import Driver
driver = Driver(uc=True, headless2=True)
driver.get("https://www.originenergy.com.au/my")
print("UA= ", driver.get_user_agent())

driver.type('//*[@id="login_username"]', "email_address")
driver.type('//*[@id="password"]', "password")
driver.click('//*[@id="root"]/div/div/div/div/div/div[2]/form/div/button')
Также пробовал:

Код: Выделить всё

    from seleniumbase import SB

with SB(uc=True, headless=True, xvfb=True) as sb:
sb.open("https://www.originenergy.com.au/my")
print("UA: ", sb.get_user_agent())
print("\npage source\n", sb.get_page_source())
sb.type('//*[@id="login_username"]', "email_address")
sb.type('//*[@id="password"]', "password")
print("\nUsername and Password entered\n")
sb.click('//*[@id="root"]/div/div/div/div/div/div[2]/form/div/button')
sb.sleep(10)
Еще одна попытка убедиться, что файлы cookie не являются проблемой. Я попробовал использовать профиль пользователя и включил все сторонние файлы cookie:

Код: Выделить всё

    driver = Driver(uc=True, headless2=True, user_data_dir="/script/datadir")

Если я смотрю на Linux-машину с виртуальным дисплеем и head=True - сразу после нажатия кнопки входа в систему, кажется, появляются некоторые js-скрипты (комментарии undetected-chromedriver 1337!", но сайт ловит меня на ошибке 429 и проблеме с идентификатором. На машинах Mac и Windows я также получил 429, однако вход в систему все еще возможен.
Любой совет или указание будет круто. Я действительно не хочу запускать виртуальную машину Windows только для запуска этого сценария.
=== Редактировать и обновлять ===
Я перестроил среду Linux, используя только самое необходимое:
Python3.11, venv, pip, seleniumbase
x11vnc, xvfb
google-chrome
Ran мой скрипт использовал метод «из драйвера импорта seleniumbase» и был изменен на head = true:

Код: Выделить всё

from seleniumbase import Driver
driver = Driver(uc=True, headed=True, user_data_dir=/script/newdir)
driver.get("https://www.originenergy.com.au/my")
print("UA= ", driver.get_user_agent())

driver.type('//*[@id="login_username"]', "email_address")
driver.type('//*[@id="password"]', "password")
driver.click('//*[@id="root"]/div/div/div/div/div/div[2]/form/div/button')
Первый вывод консоли показывает:

Код: Выделить всё

** chromedriver to download = 120.0.6099.71 (Latest Stable)

Downloading chromedriver-linux64.zip from:
https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/120.0.6099.71/linux64/chromedriver-linux64.zip ...
Download Complete!

Extracting ['chromedriver'] from chromedriver-linux64.zip ...
Unzip Complete!

The file [uc_driver] was saved to:
/script/venv/lib/python3.11/site-packages/seleniumbase/drivers/uc_driver

Making [uc_driver 120.0.6099.71] executable ...
[uc_driver 120.0.6099.71] is now ready for use!
Мой пользовательский агент не отображается как обезглавленный:

Код: Выделить всё

Mozilla/5.0 (X11;  Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Поэтому я предполагаю, что отсюда все работает так, как хотелось.
Я вижу, как открывается вкладка Chrome, вводятся имя пользователя и пароль, на этот раз в консоли devtools нет сообщений «1337», но я все равно получаю тот же результат на странице «Что-то пошло не так».
Я получаю следующие ошибки консоли devtools:

Код: Выделить всё

Failed to load resource: the server responded with a status of 429 () - /149e9513-01fa-4fb0-â¦x-kpsdk-v=j-0.0.0:1
Это похоже на SDK для нажатия клавиш kasada — они появляются перед вводом любого текста с помощью send_keys().
Я позволяю странице загружаться с помощью таймера сна, а также засыпаю перед нажатием кнопки входа в систему.
Напротив, эти же ошибки регистрируются как на моем Mac, так и на Windows, поэтому я не знаю, является ли это отвлекающим маневром или законной проблемой для адрес
Последняя ошибка, которая появляется при перенаправлении меня на страницу «что-то пошло не так»:

Код: Выделить всё

[error] handleError invoked myemail@gmail.com with errorCode: 429 and uniqueId: N/A Error: myemail@gmail.com:  errorCode: 429, uniqueId: N/A
at Ue (LoginErrorHandler.ts:15:7)
at r.handleError (withLogin.tsx:104:61)
at withLogin.tsx:140:14
at s (runtime.js:63:15)
at Generator._invoke (runtime.js:293:1)
at Generator.throw (runtime.js:118:1)
at i (asyncToGenerator.js:5:1)
at u (asyncToGenerator.js:31:1)
at nrWrapper (login?state=hKFo2SBTâ¦Mi4yIn0%3D:56:18441)
r   @   fs.js:4
p   @   sumoLogger.js:10
error   @   index.js:2
Ue  @   LoginErrorHandler.ts:13
(anonymous) @   withLogin.tsx:104
(anonymous) @   withLogin.tsx:140
s   @   runtime.js:63
(anonymous) @   runtime.js:293
(anonymous) @   runtime.js:118
i   @   asyncToGenerator.js:5
u   @   asyncToGenerator.js:31
nrWrapper   @   login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
Promise.then (async)
nrWrapper   @   login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
i   @   asyncToGenerator.js:15
c   @   asyncToGenerator.js:27
(anonymous) @   asyncToGenerator.js:34
nrWrapper   @   login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
r   @   login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
t   @   _export.js:36
(anonymous) @   asyncToGenerator.js:23
(anonymous) @   withLogin.tsx:21
m   @   react-dom.production.min.js:15
w   @   react-dom.production.min.js:15
(anonymous) @   react-dom.production.min.js:16
S   @   react-dom.production.min.js:16
C   @   react-dom.production.min.js:17
k   @   react-dom.production.min.js:17
N   @   react-dom.production.min.js:17
Rn  @   react-dom.production.min.js:85
Fn  @   react-dom.production.min.js:87
t.unstable_runWithPriority  @   scheduler.production.min.js:20
ho  @   react-dom.production.min.js:113
yc  @   react-dom.production.min.js:207
Dn  @   react-dom.production.min.js:86
nrWrapper   @   login?state=hKFo2SBTâ¦oiOS4xMi4yIn0%3D:56
Скриншот DevTools, поскольку я пока не могу встроить

Подробнее здесь: https://stackoverflow.com/questions/776 ... n-on-linux
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»