Войдите на сайт, войдя в аккаунт Google используя Python

Я делаю веб-сайт, который составляет графики количества людей, присутствующих в группах (с www.codecamy.com).

Для достижения этого я пришел с планом.

У меня будет сервер, который будет каждые 30 секунд опрашивать страницу групп CodeCademy ( http://www.codecademy.com/groups) и извлекать необходимую информацию из этого HTML-кода.

Затем, когда клиент подключается к моему веб-сайту, сервер сообщит ему эту информацию, а затем клиент будет использовать http://www.chartjs.org/docs/ или http://www.jqplot.com/ для рисования. график, основанный на этой информации.

Тем не менее, есть большая проблема. Если вы нажали на любую из ссылок с CodeCademy, то поняли, что вам нужна учетная запись, чтобы действительно увидеть веб-сайт. Это может быть учетная запись Facebook, учетная запись Google или Twitter.

Итак, короткая история, если я хочу получить доступ к странице с информацией о группах, мне нужно иметь учетную запись Bot для моего сервера, и я должен научить свой сервер входить в эту учетную запись.

Таким образом, я создал фиктивную учетную запись в gmail, которая называется codecademybot, и я хочу, чтобы мой сервер использовал эту учетную запись для входа в codecademy, чтобы он мог видеть содержимое этой страницы.

Следуя краткому руководству по Python, которое связывает меня с Google +, теперь у меня также есть код для взаимодействия с ним.

Однако, несмотря на все это, я до сих пор не имею ни малейшего представления о том, как взаимодействовать с сайтом. У меня есть следующие вопросы:

  1. Как я могу определить, вошел ли я в свою учетную запись Google?
  2. Как мне подключиться к этой учетной записи, чтобы я мог получить доступ к странице?
  3. Есть ли специальная ссылка для входа на этот сайт?

Я совершенно заблудился и был бы признателен за любую возможную помощь.

1 ответ

Не позволяйте всем образцам кода и инструкциям вводить вас в заблуждение. Они предназначены для более сложных случаев.

  • Это не авторизация oauth2, это аутентификация oauth2
  • Вы не клиент с clientID и секретом. Codecademy - это клиент с clientID и секретом. Ваша учетная запись codecademybot просто является пользователем.

Это означает, что вам нужно только автоматизировать то, что обычные пользователи делают при входе в codecademy. Воспроизведите то взаимодействие, которое в браузере пару раз прослушивает инструмент разработки (инструмент разработки IE, FireBug и т. Д.), И посмотрите на разговор HTTP-запросов.

Это то, что вы хотите подражать.

Из того, что я вижу,

  • Разговор начинается с отправки запроса на http://codecademy.com/auth/google_oauth2.
  • Запрос перенаправляется на URL-адрес https в Google.
  • Если я ранее вошел в Google, пара куки отправляется вместе, и я проходил проверку подлинности. Запрос отправляется обратно в codecademy redirect_url по адресу http://www.codecademy.com/auth/google_oauth2/callback с кодом аутентификации oauth2 в качестве параметра.
  • Предположительно, Codecademy и Google Chat, для этого требуется около трех секунд.
  • Они согласны, что я и два печенья (remember_user_token а также _session_id) установить в моем браузере, прежде чем я буду перенаправлен на http://www.codecademy.com/

Этот последний бит, я думаю, интересен. Как насчет того, чтобы вручную войти в систему с помощью браузера, прослушать разговор и скопировать эти два файла cookie в свой автоматический код. Посмотрите, достаточно ли они в качестве маркеров аутентификации и позволяют ли вы получать данные с веб-сайта.

Если нет, то я настоятельно рекомендую ответ @CrisBee21. Будем надеяться, что pyCurl сможет эмулировать браузер достаточно хорошо, чтобы сделать разговор за вас.

Еще одна вещь, когда я просматриваю сайт, я вижу один запрос API REST, а именно: http://www.codecademy.com/api/v1/notifications/userid/ unread_count? Authentication_token=некоторый токен

Переход на http://www.codecademy.com/api/v1/users/userid/? Authentication_token=токен дает мне больше информации о себе

http://www.codecademy.com/api/v1/users/userid/ groups? authentication_token=токен дает мне группы, в которых я нахожусь.

Если у вас есть больше документации по API REST кодекамы, вы можете попробовать и взять ее оттуда. Я не смог найти никакой документации, я делаю это по ходу дела.

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