Как мне использовать wget/curl для загрузки с сайта, на который я вошел?

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

Есть ли способ, которым я могу создавать пользовательские страницы, подобные этому

http://en.wikipedia.org/wiki/User:A

это страница входа в систему:

http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3

Самый простой способ: войдите в систему с помощью своего браузера и передайте файлы cookie wget

Самый простой способ: в общем, вам нужно предоставить wget или локон с помощью (вошедших в систему) файлов cookie с определенного веб-сайта, чтобы они могли извлекать страницы как если бы вы вошли в систему.

Если вы используете Firefox, это легко сделать с помощью Экспорт файлов cookie дополнение. Установите дополнение и:

  1. Идти к Инструменты...Экспорт файлов cookie, и сохранить cookies.txt файл (вы можете изменить имя файла/место назначения).
  2. Откройте терминал и используйте wget с --load-cookies=FILENAME вариант, например

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    • Для локон, это curl --cookie cookies.txt ...

(Я постараюсь обновить этот ответ для пользователей Chrome / Chromium)

Трудный путь: используйте локон (предпочтительно) или wget для управления всем сеансом

  • Подробное руководство выходит за рамки этого ответа, но вы используете локон с --cookie-jar или wget с --save-cookies --keep-session-cookiesопции, наряду с методом HTTP/S PUT для входа на сайт, сохраняют файлы cookie для входа, а затем используют их для имитации браузера.
  • Излишне говорить, что для этого требуется пройти через исходный код HTML для страницы входа (получить имена полей ввода и т.д.), И часто бывает трудно заставить работать сайты, использующие что-либо, кроме простой аутентификации по логину / паролю.
  • Совет: если вы идете по этому пути, часто гораздо проще иметь дело с мобильный версию веб-сайта (если таковая имеется), по крайней мере, для этапа аутентификации.

Еще одно простое решение, которое сработало для меня без установки чего-либо дополнительного:

Это даст вам команду, которую вы можете вставить непосредственно в свою оболочку, содержащую все ваши учетные данные для файлов cookie, например

curl 'https://mysite.test/my-secure-dir/picture1.jpg' \ -H 'User-Agent: Mozilla/5.0 ...' \-H 'Cookie: SESSIONID=abcdef1234567890'

Затем вы можете изменить URL-адрес в команде, чтобы получить все, что вам нужно.

С помощью cURL действительно легко обрабатывать печенье обоими способами.

curl www.target-url.com -c cookie.txt затем сохранит файл с именем cookie.txt . Но вам нужно войти в систему, поэтому нужно использовать --data с такими аргументами, как: curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt.Как только вы получите зарегистрированный файл cookie, вы можете отправить его с помощью: curl www.target-url.com/?user-page.php -b cookie.txt

Просто используйте -c (--cookie) или -b (--cookie-jar) для сохранения и отправки.

Примечание 1: Использование cURL CLI намного проще, чем PHP, и, возможно, быстрее ;)

Для сохранения окончательного содержимого вы можете легко добавить > filename.html к вашей команде cURL, затем сохраните полный html-код.

Примечание 2 о "полном": Вы не можете отображать javascript с помощью cURL, просто получите исходный код.

Для тех, кто все еще интересуется этим вопросом, есть очень полезное расширение Chrome под названием CurlWGet это позволяет вам генерировать wget / curl запрос с мерами аутентификации и т.д. одним щелчком мыши. Чтобы установить это расширение, выполните следующие действия:

  1. Установите расширение из Интернет-магазин Chrome.
  2. Перейдите на веб-страницу, которую вы хотели бы загрузить.
  3. Начните загрузку.
  4. Расширение сгенерирует для вас ссылку.

Наслаждайтесь!

Сообщение в блоге Wget с файлами cookie Firefox показывает, как получить доступ к файлу данных sqlite, в котором Firefox хранит свои файлы cookie. Таким образом, не нужно вручную экспортировать файлы cookie для использования с wget. Комментарий предполагает, что он не работает с сессионными файлами cookie, но он отлично работал на сайтах, с которыми я его пробовал.

взгляните на клигет для Firefox.

Когда вы собираетесь загружать, в последнем диалоговом окне загрузки вы получаете возможность скопировать загрузку в виде командной строки curl в буфер обмена.

Вы пробовали это сделать?

wget --user=username --password=password http://en.wikipedia.org/wiki/User:A

Попробуйте что-то вроде:

wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/

Смотрите также эту ссылку:

Как загрузить эту веб-страницу с помощью wget?

Для более сложных входов в систему на основе веб-сайта вам также следует рассмотреть возможность использования скрипта Python и некоторого модуля, имитирующего браузер, например http://wwwsearch.sourceforge.net/mechanize/ вместо curl или wget.

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

По теме: Как загрузить эту веб-страницу с помощью Wget? и Использование wget для загрузки изображений в разговорах на facebook

Видишь bash - How do I copy cookies from Chrome? - Stack Overflow для простого решения используйте Google Chrome + cURL