- wget и авторизация
- Что делаю не так?
- 403 Forbiiden?
- Авторизация через wget на форуме с https
- IT Блог Reset Button
- Блог Reset Button обо всем на свете
- Скачиваем через wget с ftp с авторизацией
- Качать wget’ом с сайтов, требующих авторизацию
- Команда Wget в Linux с примерами
- Wget Command in Linux with Examples
- В этом руководстве мы покажем вам, как использовать команду Wget, на практических примерах и подробных объяснениях наиболее распространенных параметров Wget.
- Установка Wget
- Установка Wget на Ubuntu и Debian
- Установка Wget на CentOS и Fedora
- Синтаксис команды Wget
- Как скачать файл с помощью Wget
- Использование команды Wget для сохранения загруженного файла под другим именем
- Использование команды Wget для загрузки файла в определенный каталог
- Как ограничить скорость загрузки с помощью Wget
- Как возобновить загрузку с помощью Wget
- Как скачать в фоновом режиме с Wget
- Как изменить Wget User-Agent от Wget
- Как скачать несколько файлов с помощью Wget
- Использование команды Wget для загрузки через FTP
- Использование команды Wget для создания зеркала сайта
- Как пропустить проверку сертификата с помощью Wget
- Как скачать в стандартный вывод с помощью Wget
- Вывод
wget и авторизация
Ранее качал этим монстром с ресурсов, на которых авторизация была примитивна: http-user&http-password, но теперь всё не так — сайт принудительно требует предварительной авторизации для просмотра/скачивания страниц. Добывать куки я не умею (ранее никогда с необходимостью этого не сталкивался) и плохо понимаю принципы web-авторизации. Научите анализировать и работать с кукисами/хидерами/пост-запросами и помогите освоить эти новые для меня знания. За информацию, советы и ссылки заранее говорю СПАСИБО.
—load-cookies=ФАЙЛ загрузить кукисы из ФАЙЛА перед сеансом.
-save-cookies=ФАЙЛ сохранить кукисы в ФАЙЛ после сеанса.
—keep-session-cookies загрузить и сохранить кукисы сеанса
Если использовать cookies взятый из браузера (так часто делают)то придется и user agent изменять.
Это я и сам смог найти. Гугл рулит! Но нигде нет точной или последовательной инструкции с объяснениями как и что делать, а, главное, почему именно так.
Что делаю не так?
Результат второго запроса: «вы должны авторизироваться».
в первом запросе вместо —user=login —password=’pass’ надо сделать что-то вроде —post-data=’login=login&password=password’ и запрос отправлять туда же, куда отправляется из формы логина.
Мне кажется, такие вещи удобнее делать c http://search.cpan.org/
jesse/WWW-Mechanize-1.72/lib/WWW/Mechanize.pm, тем же под ruby или другими схожими инструментами.
403 Forbiiden?
No. Мне выдаётся именно страница с сообщением что «данный контент доступен пользователям только после логина. Просьба войти под своими логином и раролем.»
Я и так то же пробовал: пост-дата(экшн=логин&имя=имя&пасс=пасс), Пробовал и без «экшн=логин» — каждый раз одно и то же: Пожалуйста, войдите под своим логин/паролем.
Да, понимаю, что лучше руби, питон, пхп или нечто подобное, но у меня доступены только знания баш, и то без хорошего знания sed и awk.
Wget редиректит на html-страницу?
Ну так залогинься (или зарегистрируйся сначала) и потом wget.
так ты возьми firebug какой-нибудь, да погляди, что и как отправляет твой браузер при нормальном логине и повтори тот же POST-запрос в своём вгете, сохраняя куки, после чего уже подключая имеющиеся куки качай нужный контент.
рекомендую чуточку помучаться и воспользоваться curl — когда припёрло работать с куками и пост-запросами он оказался удобнее, чем wget.
Это всё уже сделано. Есть имя и пароль. Могу зайти на сайт, и ссылки работают (в браузере). А вот с wget договориться никак не могу. То-ли он не принимает мою идентификацию, то-ли сервер ведёт лог и не впускает, переправляя на страницу с просьбой залогиниться.
Я не работал с кукисами ранее и потому не знаю как это делается правильно. Возможно, я просто не правильно задаю какой-то параметр.
Параметры нужно передавать через POST-строку и скрипту, который отвечает за авторизацию. Названия переменных можно посмотреть в коде формы авторизации на сайте
Проблема в том что мой английский не так хорош, чтобы я изучил и понял доки по CURL, а обучаться на частных примерах из сети. Думаю, понятно. Если есть ссылки на русскую доку по этой программе — очень прошу поделиться ссылкой.
Я уже писал о том что крайне плохо понимаю механизмы взаимодействия в web. Так что я очень далёк от навыков составления пост-запросов. Если можете научить — прошу помощи. )
К примеру, форма может выглядеть так:
На ЛОРе есть CSRF, если на вашем ресурсе оно тоже есть — необходимо предварительно получать этот код из формы, сохраняя куки, и передавать вместе с логином-паролем
Если так, как в примере выше, то логин будет выглядеть примерно так:
по сути без разницы будет, каким инструментом пользоваться. главное — это выяснить, что ожидает получить сайт для «логина». с этим очень здорово помогает firebug, который, вроде как, должен быть в любом нормальном браузере.
- ты приходишь на сайт, он даёт тебе куки,
- ты посылаешь сайту куки вместе со специально составленным post-запросом, от чего сайт запоминает, что вот эти куки — они у дяди с таким-то логином.
- ты запрашиваешь свой контент у сайта, присылая ему имеющиеся куки, на что он видит, что да, ты дядя правильный, тебе можно выдать контент, а не отфутболить каким-нибудь образом.
Тогда запрос нужен, по идее, такой:
wget http://site/takelogin.php —post-data=«username=$user&password=$password» —save-cookies=file
А потом, как подключать кукисы? Так, как я писал выше?
Источник
Авторизация через wget на форуме с https
Как сделать сие из консоли?
Метод Дамп сайта и авторизация через wget я или не понял, или он не работает..
SSL/TLS здесь не имеет и не может иметь никакого значения.
Спасибо. Но это не ответ. У меня пока никак не получилось залогиниться.
Авторизация разная может быть. Если там какой-нибудь Nginx Basic Auth то достаточно ключей —username и —password (с соответствующими значениями) при вызове wget. Если форум авторизует тебя путем присваивания какой-нибудь куки после отправления заполненной формы с логином и паролем — нужно определить что отправляется на сервер и что возвращается, воспроизвести все это через wget и потом постоянно слать в запросе куку с указанием сессии (или что там после авторизации присваивается). Если авторизация через какой-нибудь OAuth-провайдер идет — дополняется еще и заход на сторонний сайт (в простейшем случае, а то еще и урл придется вытягивать из запроса к основному сайту). В общем ответа однозначного нет, все зависит от того где нужно авторизоваться и как там эта авторизация устроена.
Возьми Firefox, открой консоль разработчика, посмотри в вкладке с сетевыми запросами нужные тебе POST и скопируй их в формате curl, например. А там уже и wget заюзать будет намного проще.
В «Разработка» «консоль разработчика» нет. Вебконсоль, отладчик, инспектор — не очень понимаю в каком инструментарии и как посмотреть( Но метод заинтересовал, буду пробовать подскажите только где эта консоль)
Источник
IT Блог Reset Button
Блог Reset Button обо всем на свете
Скачиваем через wget с ftp с авторизацией
Недавно мне понадобилось скачать сайт с кучей мелких файлов. Как обычно я запустил mc, подключился к серверу и стал скачивать.
Но по какой то непонятной причине коннект постоянно рвался, да и сканировал mc структуру папок довольно долго.
Сначала я хотел попробовать консольным FTP, но никак не мог найти команду для рекурсивного скачивания, при этом я постоянно натыкался на рекомендации сделать это через wget, что я и решил попробовать
Синтаксис команды предельно прост
wget -r ftp://LOGIN:PASSWORD@FTP_SERVER_IP_OR_HOSTNAME:PORT
Ключ -r означает ходить по папкам рекурсивно, всё остальное я думаю понятно 🙂
Поставив скачиваться сайт, я пошел налить чаю, а когда вернулся, то увидел что экран больше не скроллится. Я конечно сразу подумал, что опять произошел дисконнет, однако последняя надпись гласила
FINISHED —2017-09-11 20:34:28—
Total wall clock time: 9m 7s
Downloaded: 3460 files, 753M in 2m 3s (6.13 MB/s)
Что меня, к слову, изрядно удивило в плане скорости — оказалось что скачивать wget ftp с авторизацией и просто и, что важнее, намного быстрее чем через mc. Единственный момент — файлы закачиваются не туда, где запущен wget, а сначала создается папка с именем FTP_SERVER_IP_OR_HOSTNAME и в нее уже сохраняется структура. Искать где это отключить мне было влом, и я просто скопировал файлы на уровень выше.
UPDATE
Оказалось что wget скачал не всё, по причине того что дефолтная глубина при рекусивном скачивании = 5.
Правильный синтаксис такой
wget -r -l inf ftp://LOGIN:PASSWORD@FTP_SERVER_IP_OR_HOSTNAME:PORT
или
wget -m ftp://LOGIN:PASSWORD@FTP_SERVER_IP_OR_HOSTNAME:PORT
Во втором варианте сохраняется time-stamp файлов, т.е.
Источник
Качать wget’ом с сайтов, требующих авторизацию
например для скачивания музыки\видео с каких-нибудь ресурсов типа VK прямо из консоли (bash-скриптом)
где-то читал, что надо отправить запрос с логином\паролем, но как?
Сам разберёшься или на пальцах объяснить?
wget http://vk.com/login.php -oO /dev/null –post-data “email=$login&pass=$password”.
но например wget http://vk.com/gsearch.php?section=audio итд. не получаетса. заного просит авторизацию..
wget –http-user=username –http-pass=password DownloadURL1 DownloadURL2 DownloadURL…
Некоторые сайты настроены и требуют не –http-pass ,а –http-password
но зато йа уже знаю как получать аудиозаписи со своей страницы, и уже работает –
Тогда покури маны к curl
Вот то,чем я пользовался:
itworks! ^_^
© 2006-2021, Русскоязычное сообщество Arch Linux.
Название и логотип Arch Linux ™ являются признанными торговыми марками.
Linux ® — зарегистрированная торговая марка Linus Torvalds и LMI.
Источник
Команда Wget в Linux с примерами
Wget Command in Linux with Examples
В этом руководстве мы покажем вам, как использовать команду Wget, на практических примерах и подробных объяснениях наиболее распространенных параметров Wget.
Установка Wget
Пакет wget уже предустановлен в большинстве дистрибутивов Linux.
Чтобы проверить, установлен ли пакет Wget в вашей системе, откройте консоль, введите wget и нажмите клавишу ввода. Если у вас установлен wget, система напечатает wget: missing URL , в противном случае он будет печатать wget command not found .
Если wget не установлен, вы можете легко установить его с помощью менеджера пакетов вашего дистрибутива.
Установка Wget на Ubuntu и Debian
Установка Wget на CentOS и Fedora
Синтаксис команды Wget
Прежде чем перейти к использованию wget команды, давайте начнем с обзора основного синтаксиса.
В wget полезности выражение принимает следующий вид:
- options — варианты Wget
- url — URL файла или каталога, который вы хотите скачать или синхронизировать.
Как скачать файл с помощью Wget
В простейшей форме, когда используется без какой-либо опции, wget загрузит ресурс, указанный в [url], в текущий каталог.
В следующем примере мы загружаем tar-архив ядра Linux:
Как видно из рисунка выше, Wget начинает с разрешения IP-адреса домена, затем подключается к удаленному серверу и начинает передачу.
Во время загрузки Wget показывает индикатор выполнения наряду с именем файла, размером файла, скоростью загрузки и предполагаемым временем завершения загрузки. После завершения загрузки вы можете найти загруженный файл в текущем рабочем каталоге .
Чтобы отключить вывод Wget, используйте -q опцию.
Если файл уже существует, Wget добавит .N (число) в конце имени файла.
Использование команды Wget для сохранения загруженного файла под другим именем
Чтобы сохранить загруженный файл под другим именем, передайте -O опцию, а затем выбранное имя:
Команда выше сохранит последнюю файл hugo zip из GitHub latest-hugo.zip вместо его исходного имени.
Использование команды Wget для загрузки файла в определенный каталог
По умолчанию Wget сохраняет загруженный файл в текущем рабочем каталоге. Чтобы сохранить файл в определенном месте, используйте -P параметр:
С помощью приведенной выше команды мы сообщаем Wget сохранить ISO-файл CentOS 7 в /mnt/iso каталог.
Как ограничить скорость загрузки с помощью Wget
Чтобы ограничить скорость загрузки, используйте —limit-rate опцию. По умолчанию скорость измеряется в байтах / секунду. Добавить k за килобайт, m за мегабайты и g за гигабайты.
Следующая команда загрузит двоичный файл Go и ограничит скорость загрузки до 1 Мб:
Эта опция полезна, когда вы не хотите, чтобы wget использовал всю доступную пропускную способность.
Как возобновить загрузку с помощью Wget
Вы можете возобновить загрузку, используя -c опцию. Это полезно, если ваше соединение разрывается во время загрузки большого файла, и вместо того, чтобы начать загрузку с нуля, вы можете продолжить предыдущую.
В следующем примере мы возобновляем загрузку iso-файла Ubuntu 18.04:
Если удаленный сервер не поддерживает возобновление загрузки, Wget начнет загрузку с начала и перезапишет существующий файл.
Как скачать в фоновом режиме с Wget
Для загрузки в фоновом режиме используйте -b опцию. В следующем примере мы загружаем iso-файл OpenSuse в фоновом режиме:
По умолчанию выходные данные перенаправляются в wget-log файл в текущем каталоге. Чтобы посмотреть статус загрузки, используйте tail команду:
Как изменить Wget User-Agent от Wget
Иногда при загрузке файла удаленный сервер может быть настроен на блокировку Wget User-Agent. В подобных ситуациях для эмуляции другого браузера передайте -U опцию.
Приведенная выше команда будет эмулировать Firefox 60, запрашивающий страницу у wget-forbidden.com
Как скачать несколько файлов с помощью Wget
Если вы хотите загрузить несколько файлов одновременно, используйте -i параметр, после которого укажите путь к локальному или внешнему файлу, содержащему список URL-адресов для загрузки. Каждый URL должен быть в отдельной строке.
В следующем примере мы загружаем iso файлы Arch Linux, Debian и Fedora с URL-адресами, указанными в linux-distros.txt файле:
Если вы укажете — имя файла, URL будут считаны из стандартного ввода.
Использование команды Wget для загрузки через FTP
Чтобы загрузить файл с FTP-сервера, защищенного паролем, укажите имя пользователя и пароль, как показано ниже:
Использование команды Wget для создания зеркала сайта
Чтобы создать зеркало сайта с помощью Wget, используйте -m опцию. Это создаст полную локальную копию веб-сайта, перейдя и загрузив все внутренние ссылки, а также ресурсы веб-сайта (JavaScript, CSS, изображения).
Если вы хотите использовать загруженный веб-сайт для локального просмотра, вам нужно будет передать несколько дополнительных аргументов команде выше.
Эта -k опция заставит Wget конвертировать ссылки в загруженных документах, чтобы сделать их пригодными для локального просмотра. -p Опция покажет Wget , чтобы загрузить все необходимые файлы для отображения страницы HTML.
Как пропустить проверку сертификата с помощью Wget
Если вы хотите загрузить файл через HTTPS с хоста, имеющего недействительный сертификат SSL, используйте —no-check-certificate параметр:
Как скачать в стандартный вывод с помощью Wget
В следующем примере Wget тихо (пометит -q ) загрузит и выведет последнюю версию WordPress в stdout (пометит -O — ) и tar передаст ее утилите, которая извлечет архив в /var/www каталог.
Вывод
С помощью Wget вы можете загружать несколько файлов, возобновлять частичную загрузку, зеркалировать веб-сайты и комбинировать параметры Wget в соответствии с вашими потребностями.
Источник