Некоторые разделы википедии отображаются по-другому, когда вы входите в систему. Я хотел бы создать пользовательские страницы wget, чтобы они выглядели так, как если бы я вошел в систему.
Есть ли способ, которым я могу создавать пользовательские страницы, подобные этому
Самый простой способ: войдите в систему с помощью своего браузера и передайте файлы cookie wget
Самый простой способ: в общем, вам нужно предоставить wget или локон с помощью (вошедших в систему) файлов cookie с определенного веб-сайта, чтобы они могли извлекать страницы как если бы вы вошли в систему.
Если вы используете Firefox, это легко сделать с помощью Экспорт файлов cookie дополнение. Установите дополнение и:
Идти к Инструменты...Экспорт файлов cookie, и сохранить cookies.txt файл (вы можете изменить имя файла/место назначения).
Откройте терминал и используйте wget с --load-cookies=FILENAME вариант, например
(Я постараюсь обновить этот ответ для пользователей Chrome / Chromium)
Трудный путь: используйте локон (предпочтительно) или wget для управления всем сеансом
Подробное руководство выходит за рамки этого ответа, но вы используете локон с --cookie-jar или wget с --save-cookies --keep-session-cookiesопции, наряду с методом HTTP/S PUT для входа на сайт, сохраняют файлы cookie для входа, а затем используют их для имитации браузера.
Излишне говорить, что для этого требуется пройти через исходный код HTML для страницы входа (получить имена полей ввода и т.д.), И часто бывает трудно заставить работать сайты, использующие что-либо, кроме простой аутентификации по логину / паролю.
Совет: если вы идете по этому пути, часто гораздо проще иметь дело с мобильный версию веб-сайта (если таковая имеется), по крайней мере, для этапа аутентификации.
С помощью 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 запрос с мерами аутентификации и т.д. одним щелчком мыши. Чтобы установить это расширение, выполните следующие действия:
Сообщение в блоге Wget с файлами cookie Firefox показывает, как получить доступ к файлу данных sqlite, в котором Firefox хранит свои файлы cookie. Таким образом, не нужно вручную экспортировать файлы cookie для использования с wget. Комментарий предполагает, что он не работает с сессионными файлами cookie, но он отлично работал на сайтах, с которыми я его пробовал.
Когда вы собираетесь загружать, в последнем диалоговом окне загрузки вы получаете возможность скопировать загрузку в виде командной строки curl в буфер обмена.
Для более сложных входов в систему на основе веб-сайта вам также следует рассмотреть возможность использования скрипта Python и некоторого модуля, имитирующего браузер, например http://wwwsearch.sourceforge.net/mechanize/ вместо curl или wget.
Таким образом, сеансовые файлы cookie обрабатываются автоматически, вы можете переходить по ссылкам и заполнять формы входа в систему, и таким образом "прописывать" себе процесс входа в систему, как если бы вы использовали свой веб-браузер.