Как я могу использовать инструмент командной строки, такой как Wget, для входа на сайт OpenID?

В частности, я хотел бы иметь возможность загружать определенные страницы из моего профиля пользователя на различных сайтах Stack Exchange. Я хотел бы, однако, сделать это автоматически (используя cron задание), из командной строки и в синтаксическом формате. Я предпочитаю использовать Linux для этого, но при необходимости могу получить доступ к компьютеру Mac или Windows.

В идеале я хотел бы использовать такой инструмент, как Wget или cURL, для извлечения страниц. Я не знаю, как пройти мимо входа в систему, хотя. Я видел предложения, в которых упоминается, что вы можете войти через Firefox, экспортировать соответствующий cookie и импортировать его в Wget через его --load-cookiesвариант. Например здесь и здесь. Хотя это работает, если я только что вошел, через некоторое время это не так. Я думаю, потому что идентификационный токен должен быть обновлен.

Итак, сразу после входа в SU и экспорта моих куки я могу сделать:

wget --load-cookies cookies.txt \
  https://superuser.com/users/151431/terdon?tab=responses

Через несколько минут я получаю сообщение об ошибке 404:

wget -O ~/stack/$(date +%s) --load-cookies ~/cookies.txt \
   https://superuser.com/users/151431/terdon?tab=responses

--2013-08-06 04:04:14--  https://superuser.com/users/151431/terdon?tab=responses
Resolving usersuper.ru (usersuper.ru)... 198.252.206.16
Connecting to usersuper.ru (usersuper.ru)|198.252.206.16|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2013-08-06 04:04:15 ERROR 404: Not Found.

Итак, как я могу автоматически войти на сайт с поддержкой OpenID из командной строки?


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

2 ответа

Вы не можете, потому что Cookies обновляются очень часто. Это в целях безопасности, единственный способ, которым вы могли бы это сделать, - это то, что вы уже сделали. по крайней мере, из моего понимания.

(Повторно) прочитайте справочную страницу для wget и посмотрите на описания для --user а также --password флаги.

Обратите внимание, что передача пароля в качестве аргумента командной строки не рекомендуется, так как любой, кто запускает ps могу видеть это. Лучше не хранить сырые пароли в любом месте, но лучше всего поместить их в файл, который может прочитать только владелец.

Другие вопросы по тегам