Comments 11
Что, если:
wget --mirror --convert-links --no-parent --no-clobber --execute robots=off --no-check-certificate --accept=nuget --reject=html --recursive --level=inf --domains=nuget.org --span-hosts --follow-tags=a https://www.nuget.org
ну или lftp ну или ещё с полдюжины похожего
Конечно, это все файлы с расширением nuget, как в заголовке заметки. Если есть желание только определённые версии -- это другой вопрос.
Существуют страницы для каждого пакета, но не на каждую такую страницу есть ссылка.
Плюс, цель была - не привлекать внимание санитаров. Если сайт долбить запросами, сайт вам скоро отвечать станет неохотно.
https://www.nuget.org/packages
все тут.
Не привлекать внимания -- не поможет, хотя меня терзают смутные сомнения, что MS режет траффик там.
Самое правильное -- это настроить какой jfrog (ну или что там сейчас стильно-модно-молодёжно) проксей.
https://www.nuget.org/packages?page=1501&sortBy=relevance - попробуйте нажать next. Посчитайте, сколько вы перечислите таким образом.
Кроме того, пакеты можно скрывать. На скрытые пакеты ссылок нет в принципе и в коде соответствующих страниц указаны инструкции поисковикам игнорировать их.
А в рейт-лимиты можно просто в браузере вляпаться, если слишком активно бегать по сайту:

Меня вот что удивляет: разве клиент nuget — не опенсорсное решение? А если да, то почему в его коде не посмотреть, как он пакеты выкачивает или хотя бы ищет?
У клиента нет задачи перечислить все пакеты, кода, который это делает там просто не существует. Он пользуется RegistrationsBaseUrl/3.6.0
для получения метаданных пакетов, указанных как зависимости по идентификатору и версии пакета.
Клиент работает используя документированный протокол, изучаеть его код стоит разве что для более полного понимания, что конкретно он делает.
Неужели в нём нет параметра типа --list
— перечислить все пакеты? Я почему-то думал, что он входит в джентельменский набор менеджера пакетов.
Пакетов сотни тысяч (не считая индивидуальных версий, с ними - миллионы). Какой use case у этой команды был бы? У какого пакетного менеджера она есть?
Pacman -Ss и дальше можно подставлять буквы алфавита a-z
Выдаст все пакеты где есть эта буква
Ну это же все же эксплуатация функции поиска (не предназначенного для перечисления пакетов). При наличии локальной базы всех пакетов и уверенности, что эта база действительно содержит все пакеты оно даже наверно как-то сработает. Если поиск возвращает действительно все результаты.
Но в нугете нет локальной базы. Поиск есть (Web API), но так же есть скрытые пакеты, которые поиском найти нельзя, и у результатов есть ограничение по глубине. Кроме того, в нугете есть пакеты, название которых состоит из одних цифр. В идентификаторах пакетов можно использовать практически любые Unicode символы. Ну и поиск там не по регэкспу. Замучаетесь придумывать поисковые запросы, которые покроют действительно все.
Как скопировать все пакеты с nuget.org