2013-11-24 2 views
5

Я делаю сайт, на котором отображаются графики количества людей, присутствующих в группах (с www.codecamy.com).Войдите на сайт, зарегистрировавшись в учетной записи Google, используя Python

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

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

enter image description here

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

enter image description here

Однако есть большая проблема. Если вы нажали какую-либо ссылку из CodeCademy, тогда вы поняли, что вам нужно иметь учетную запись, чтобы на самом деле увидеть веб-сайт. Это может быть учетная запись facebook, учетная запись google или учетная запись twitter.

enter image description here

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

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

Следуя за quickstart python tutorial that connects me to google+ У меня теперь есть код для взаимодействия с ним.

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

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

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

+1

https://developers.google.com/api-client-library/python/guide/aaa_oauth это может быть полезно –

+0

Я был там, но я чувствую себя полностью потерянным !!! Это куча информации, и все же ничто не помогает мне достичь моей цели: S –

+1

http://stackoverflow.com/questions/10271110/python-oauth2-login-with-google это может быть .. раздел ответа –

ответ

4

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

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

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

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

Из того, что я могу видеть,

  • Разговор начинается с отправки запроса на http://codecademy.com/auth/google_oauth2.
  • Запрос отправляется на https-url в 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 s ответ. Будем надеяться, что pyCurl может эмулировать браузер достаточно хорошо, чтобы сделать разговор для вас. более

Одна вещь, когда я просматриваю вокруг места, я вижу один запрос REST API, а именно http://www.codecademy.com/api/v1/notifications/Идентификатор_пользователя/UNREAD_COUNT? authentication_token = некоторые лексема

Серфинг в http://www.codecademy.com/api/v1/users/Идентификатор_пользователя /? authentication_token = маркер дает мне больше информации о себе

http://www.codecademy.com/api/v1/users/Идентификатор_пользователя/группы? Authentication_token = маркер дает мне группы я в деле.

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

+0

Да, я также знаю эту ссылку, я также нашел ее ... но как мне подражать этому сказанному поведению? –

+0

Я слушал разговор и добавил свои мысли. Я вижу два куки-файла, которые могут заинтересовать вас. – flup

+0

У меня возникли проблемы с пониманием этого, поэтому я сейчас пытаюсь использовать другой подход: http://stackoverflow.com/questions/20270106/how-to-login-to-codecademy-using-pycurl И да, от чего я может видеть, pycurl обрабатывает файлы cookie, но я все еще пытаюсь выяснить, как все работает: S –

Смежные вопросы