Примечание: я еще не заставил это работать, но подумал, что подход стоит рассмотреть. Я постараюсь вернуться и либо улучшить, либо удалить его.
Возможно, вы сможете сделать что-то подобное в инструментах разработчика браузера. Для этого вам придется отключить блокировку всплывающих окон. Это не совсем работает для меня, потому что кнопка загрузки начала вызывать диалог регистрации учетной записи. Я подозреваю, что они могут сделать это после некоторого количества загрузок, но вам, возможно, повезет больше, если у вас есть аккаунт и вы вошли в систему.
Перейдите на страницу загрузчика, откройте инструменты разработчика браузера, вставьте приведенный ниже код и нажмите Enter.
function go () {
// get all the links from the grid on the current page
const hrefs = Array.from(document.querySelectorAll('.ez-resource-grid a[href]')).map(a => a.href);
// start the loading
next(hrefs);
}
function next ([current, ...remaining]) {
// open a new tab/window with the current href;
const w = window.open(current, '_blank');
// function to find the download button and "click" it.
function triggerDownload () {
try {
w.querySelector('#download-button').click();
}
catch (e) {
// something went wrong.
}
// if we haven't consumed all the links yet, start the next one.
if (remaining.length) {
next(remaining);
// I tried adding a delay here thinking the account signup dialog
// might be triggered by too many rapid requests, but it didn't
// seem to matter.
// setTimeout(() => next(remaining), 6000);
}
}
// give the page a few seconds to load before attempting
// to trigger the download. This should be replaced with
// a ready event listener instead of a fixed delay, something
// like:
// w.document.addEventListener('readystatechange', triggerDownload)
// but i'm tired and my first attempt didn't appear to work so i'm
// throwing in this static delay hack instead.
setTimeout(triggerDownload, 5000);
}
// kick it off
go();