LINUX.ORG.RU

аналог selenium python для других языков

 , , , си++


0

2

Раньше считал, что через браузер работают ленивые идиоты, если всё можно сделать через сокеты.
Сейчас, в связи с борьбой с роботами, и вездесущим CDN, браузер становится тяжелой, но необходимой прослойкой.
selenium + python это рабочий вариант, но не любимый.
Существуют подобные библиотеки для следующих языков: Си, Си++, Rust?

★★★

Последнее исправление: s-warus (всего исправлений: 2)

В данное время Selenium для таких целей уже не используют (он больше предназначен для нагрузочного тестирования). А вообще есть два активно поддерживаемых проекта:

Но они, естественно, идут мимо Си, Си++, Rust. Так что копай в сторону прямого использования DevTools Protocol - может найдется какая-нибудь удобная библиотечка и для твоих языков. Глянь к примеру:

vinvlad ★★
()
Последнее исправление: vinvlad (всего исправлений: 1)
Ответ на: комментарий от ac130kz

Спасибо, то что надо. Как раз мечтал освоить Rust, эта задача как раз подходит.
Раньше всё на Си писали, а потом в Python, в java и в остальное перетекало, сейчас такого не происходит, или из-за меньшего количества Си-шников, или из-за отсутствия такого гибкого стандартного инструментария типа ООП.

s-warus ★★★
() автор топика
Ответ на: комментарий от vinvlad

он больше предназначен для нагрузочного тестирования

программа для создания нагрузки (браузер) нагружает машину, в порядки раз больше чем созданная ей нагрузка 😳. (веб-сервер может занимать несколько мегобайт, а браузеру 8гб мало) Для меня ab (ApacheBench) не заменимый инструмент.

s-warus ★★★
() автор топика
Ответ на: комментарий от s-warus

программа для создания нагрузки (браузер) нагружает машину, в порядки раз больше чем созданная ей нагрузка …

Под «нагрузочным тестированием» я здесь подразумевал запуск где-то в облаке кучи контейнеров с веб-обозревателями и натравливание их на конкретный сайт. В Selenium для этого есть поддержка - hub-режим. Это на случай, если ApacheBench не подходит.

vinvlad ★★
()

ты браузер запускаешь в режиме отладки, а потом по вебсокетам ему команды шлешь… селениум - это уже мертвый проект, который состоит из завалов говна, но по всей видимости и вся java-среда чуть менее чем полностью из такого полуразложившегося добра

rtxtxtrx
()
Ответ на: комментарий от rtxtxtrx

Я обычный планктон, вначале спросил, сейчас смотря на проделанную за меня работу гугления, испытываю стыд.
Итого 3 пути:
1) селениум+python, быстро молодёжно сразу работает;
2) rust + мозиловские библиотеки быстро + rust освою;
3) си + googlовский DevTools Protocol + сокеты осчастливить мир ещё одним велосипедом на сокетах

s-warus ★★★
() автор топика
Ответ на: комментарий от s-warus

Ну вообще самый надёжный вариант - браузер+плагин к нему на том же богомерзком жабаскрипте или на чём их там пишут нынче. Потому как и селениум можно детектить если сильно упарываться. Я не про юзерагент, а про специфичные для движков браузеров штуки, вроде рендеринга странички.

peregrine ★★★★★
()
Ответ на: комментарий от s-warus
  1. си + googlовский DevTools Protocol + сокеты осчастливить мир ещё одним велосипедом на сокетах

Классикой, вообще говоря, является nodejs + puppeteer. Тк JS будет нужен так и так (иногда приходится пробрасывать свою функцию на страничку и исполнять ее в контексте страницы).

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

node.js как правило везде стоит на него многие инструменты вроде scss завязаны, но меня динамически изменяемые подгружаемые версии библиотек, в питоне и node.js злят, обновился питон или node.js и получай не рабочую версию, понятно через pip или npm можно всё обновить-заново поставить, но зачем, я на си через webapi напишу, будет работать пока webapi DevTools не изменится.
Легкость разработки селениум+python подкупает, хотя сука selenium на версию urllib3 жалуется, но работает.

s-warus ★★★
() автор топика
Ответ на: комментарий от Norgat

понятно есть окружение (evm), инструменты для этого, в крайнем случае докер.
Но я столько раз сталкивался с ситуацией, что вроде всё ок, а оно не работает как надо (внешне багов нет и версии что надо), из за смены окружения разработки и продакшена.
А для домашнего использования где обновы часто происходят, это головная боль.

s-warus ★★★
() автор топика
Ответ на: комментарий от s-warus

… но меня динамически изменяемые подгружаемые версии библиотек, в питоне и node.js злят, обновился питон или node.js и получай не рабочую версию, …. вроде всё ок, а оно не работает как надо (внешне багов нет и версии что надо), из за смены окружения разработки и продакшена.

У меня уже много лет все лежит в контейнерах - соответственно, никаких проблем. Так гораздо удобнее и практичнее. Версии runtime-среды разработки и прод-сборки не меняются по нескольку лет)

vinvlad ★★
()
Ответ на: комментарий от s-warus

твоё приложение в контейнере, а браузер с которым оно работает нет и обновляется периодически

Насколько я понимаю, речь идет о весьма специфических приложениях - а не о тех, что устанавливают себе обычные юзера. Браузер для таких приложений тоже устанавливается в контейнере - там может лежать любая подходящая (фиксированная) версия. В проектах типа Puppeteer конкретная версия браузера идет в комплекте с API, хотя можно подсунуть и свой «родной». Здесь гораздо важнее, чтобы ваш собственный код, который работает с API-шкой, был постоянно совместим с этой API-шкой.

У меня, например, на Puppeteer крутятся два приложения - одно в Kubernetes, в контейнере, а другое просто в облачной виртуалке. Проблем с браузером особо не возникало - а вот апгрейд версии API и NodeJS проблемы вызывал. Сборка фронтовых приложений тоже всегда делается на фиксированных версиях NodeJS и пакетов (которые лежат в node_modules)

vinvlad ★★
()
Последнее исправление: vinvlad (всего исправлений: 1)

использую связку selenium + python для поисковых запросов к поисковым системам типа гугла и яндекса
никогда не приходила мысль заменить питон на другой язык
как тут говорят - модно, молодежно, оперативно
памяти оно конечно жрет, но если у тебя на виртуалке 100 гигов, то это покрывает все расходы
проца оно тоже жрет, но если у тебя 24 ядра, этого за глаза хватает

kto_tama ★★★★★
()
Ответ на: комментарий от kto_tama

Самая большая тяжесть, это браузер, и его не выкинуть иначе инфу не дадут, будут считать роботом, питон или nodejs это камешек рядом с горой.
Сложность в том что питон и nodejs требуют к себе постоянного внимания и ухода в отличие от Си и Rust.
Cчитаю что бомжи с 10000гб требующие 10000 ядер чтобы получить 20 байт из поисковой выдачи пускай живут в созданной ими помойке и не выползают из неё.

s-warus ★★★
() автор топика
Последнее исправление: s-warus (всего исправлений: 1)