LINUX.ORG.RU

Как заставить Firefox выполнить скрипт для каждой вкладки поочерёдно?

 ,


0

2

Даже не знаю, в какой форум писать, для Talks-ов недостаточно безумно, а в Job мне незачем, сам буду делать, просто спрашиваю направление, поэтому в General.

Кхм.

Я вас категорически приветствую.

Значится, нарисовалась проблема: надо скачать много файлов с одного сайта (какого – не скажу, ещё не хватало, чтоб и ЛОР ещё погряз в этом дерьме). И когда я говорю "много", я имею в виду "ДОХРЕНА И ТРОШКИ" – вкладки со ссылками на эти файлы пооткрывал, так Firefox отожрал 27 гигабайт ОЗУ!

Очевидно, что делать – curl-ом по списку прошёлся, и всё. Но не тут-то было! Их сервер меня отшивает, зато на самом сайте эти достопочтенные укурки настойчиво предлагают VIP-аккаунт! Иначе – минуту ждать, чтобы скачать один-единственный несчастный файл. Я бы уже и рад даже этот VIP-аккаунт прикупить, против всех своих пиратских принципов, дак они деньги из Украины не принимают, в рот его наоборот!

Я решил поступить по-другому: сымитировать наличие пользователя, жмакающего кнопочки и смиренно ждущего ссылки на скачивание, средствами самого браузера. Тем более, что сидеть постоянно дома я не могу, а тащить с собой на своём горбу туда-сюда здоровенную гробину с 32 гигабайтами памяти – я ещё не настолько сошёл с ума, знаете ли. Казалось бы, напиши скрипт, и заставь работать, а сам сиди и попивай чаёк с печеньками…

А как его заставить-то? С одной стороны, есть Greasemonkey и подобные ему запускалки пользовательских скриптов, только они отрабатывают совершенно не то (или я дурак, не разобравшийся в перипетиях их работы), ещё и с каждой страницей одновременно. Ещё есть Selenium IDE, оно даже позволяет мышевозным путём указать, что делать – да только для одной-единственной страницы, причём "захардкоженной".

Сразу объясню, что я хочу, чтобы непоняток не было:

  1. Перейти на первую или следующую по списку из открытых вкладку (и чтобы фокус на ней всё время был, таймеры там хитрые).

  2. "Нажать" на кнопку.

  3. Подождать секунд 20-30 для надёжности, после чего нажать на ещё одну кнопку.

  4. Ещё подождать секунд 20, после чего закрыть вкладку.

Предупреждаю сразу – мне не нужен скрипт, скрипт я сам напишу. Мне нужно знать, чем его запускать. Вдвойне буду благодарен, если ещё и укажете на возможные "подводные камни".

UPDATE: Как заставить Firefox выполнить скрипт для каждой вкладки поочерёдно? (комментарий).

★★★★★

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

Под Windows я бы такое решал через: https://www.autohotkey.com/

Вероятно, под Linux есть аналоги. Если верить этому сайту, их даже несколько: https://alternativeto.net/software/autohotkey/?platform=linux

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 2)
Ответ на: комментарий от Vsevolod-linuxoid

https://www.autohotkey.com/

Как бы очевидное решение – сделать system-wide-макрос. Но, думаю, воспользуюсь таким в последнюю очередь, всё же хочется, чтобы чисто с браузером работало.

Korchevatel ★★★★★
() автор топика

Похожая задача бывает на тестировании, когда надо скриптом сайт протыкать. Поищи фреймворки на эту тему, их вагоны.

Для себя такую хрень делали: https://github.com/nodeca/navit, нынче через electron. Но вариантов вообще масса.

Vit ★★★★★
()

Посмотри в эту сторону. df взят просто как пример подходящий под описание.

ПыСы: Тексты для книг скачивать собрался?

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

какого – не скажу

Теперь ты нас заинтриговал.

Их сервер меня отшивает

А если юзверьагент curl’у задать?

sudopacman ★★★★★
()

Посмотри урлы, с которых в итоге идёт скачивание, может можно их тупо перебрать curl’ом с нужной кукой.

t184256 ★★★★★
()

Selenium IDE

Может не про то подумал, на питоне делал управление вкладками.

Правильно понял, что прямая ссылка на файл только во вкладке открывается?

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

Теперь ты нас заинтриговал.

Меньше знаешь – крепче спишь.

А если юзверьагент curl’у задать?

Прикол в том, что точную ссылку на файл невозможно узнать, не пройдя "круги ада" с ожиданием и тремя переходами по ссылкам. Так что даже с UA здесь ловить нечего.

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

Правильно понял, что прямая ссылка на файл только во вкладке открывается?

Да, и самое паршивое, что её можно узнать только после ожидания и переходов по ссылкам.

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

Тексты для книг скачивать собрался?

Не-а. Если бы мне надо были книги, я бы или в специальных Telegram-каналах поискал, или же на Рутрекере с Флибустой.

Korchevatel ★★★★★
() автор топика

Так, update!

Сумел сделать, что хотел, с помощью Autohotkey (увы, по нескольким причинам дело под "оффтопиком", а "корчинг" своего аддона или возня с Puppeteer заняла бы гораздо дольше, чем поиск ответов на вопросы по AHK). До завтрашнего вечера должно закончить (там под две тысячи файлов, вот это я Плюшкин!), как раз и код выложу.

Небольшой тизер: куча sleep-ов, симуляция жамканья кнопок через исполнение JS в консоли разработчика, плюс пришлось проредить вкладки на предмет нестандартных страниц (лишняя кнопка, доп. файлы, вот это всё). Ах да, как оказалось, AHK не сразу обновляет название окна, отсюда ещё sleep-ы.

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

Меньше знаешь – крепче спишь.

Лучше бы «придумал» что-то похожее на правду, чтобы интригу не создавать.

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

Лучше бы «придумал» что-то похожее на правду, чтобы интригу не создавать.

И не подумаю! Я честный человек!

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

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

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

По ссылке то ходил? Тпм правда на автоите пытаются с дф загоузку автоматизировать, наверняка на что нить натолкнет

julixs ★★★
()

не вникал, но в таких ситуациях возможно пригодится brotab

s-o
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.