Влезте в уебсайт, като влезете в Google акаунт с помощта на Python [затворено]

Правя уебсайт, който прави графики на броя на хората, присъстващи в групи (от www.codecamy.com).

За да постигна това, дойдох с план.

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

въведете описание на изображението тук

След това, когато клиент се свърже с моя уебсайт, сървърът ще даде на клиента тази информация и след това клиентът ще използва или http://www.chartjs.org/docs/ или http://www.jqplot.com/ за да начертаете графиката въз основа на тази информация.

въведете описание на изображението тук

Има обаче един голям проблем. Ако сте кликнали върху някоя от връзките от CodeCademy, тогава сте осъзнали, че трябва да имате акаунт, за да видите действително уебсайта. Това може да бъде акаунт във facebook, акаунт в Google или акаунт в Twitter.

въведете описание на изображението тук

И така, накратко, ако искам да получа достъп до страницата с информация за групите, трябва да имам Bot акаунт за моя сървър и трябва да науча сървъра си да влиза в този акаунт.

По този начин създадох фиктивен акаунт в gmail, наречен codecademybot, и искам сървърът ми да използва този акаунт за влизане в codecademy, за да може да вижда съдържанието на тази страница.

Следвайки урок за бърз старт на python, който ме свързва с google+, вече разполагам и с кода за взаимодействие с него.

Но въпреки всичко това, все още нямам ни най-малка идея как да взаимодействам с уебсайта. Имам следните въпроси:

  1. Как да разбера дали съм влязъл в акаунта си в Google?
  2. Как да се свържа с този акаунт, за да имам достъп до страницата?
  3. Има ли специална връзка за влизане в този уебсайт?

Доста съм изгубен и ще бъда благодарен за всяка възможна помощ.


person Flame_Phoenix    schedule 24.11.2013    source източник
comment
developers.google.com/api-client-library/python/guide/ aaa_oauth това може да е полезно   -  person Nikhil Rupanawar    schedule 24.11.2013
comment
Бил съм там, но се чувствам напълно изгубен !!! Това е куп информация и въпреки това нищо не ми помага да постигна целта си :S   -  person Flame_Phoenix    schedule 24.11.2013
comment
stackoverflow.com/questions/10271110/ това може да бъде .. секцията с отговори   -  person Nikhil Rupanawar    schedule 24.11.2013
comment
Не използвам Django, но със сигурност ще проверя тази информация!   -  person Flame_Phoenix    schedule 24.11.2013
comment
Въпросите относно проблеми с написан от вас код трябва да описват конкретния проблем — и да включват валиден код за възпроизвеждането му — в самия въпрос.   -  person tereško    schedule 28.11.2013
comment
Това е проблемът, нямам код!! Нямам идея как да започна!   -  person Flame_Phoenix    schedule 30.11.2013
comment
Това е впечатляващо добре обяснен въпрос.   -  person trevorKirkby    schedule 03.12.2013


Отговори (1)


Не позволявайте на всички примерни кодове и инструкции да ви подведат. Предназначени са за по-сложни случаи.

  • Това не е oauth2 оторизация, а нейното oauth2 удостоверяване
  • Вие не сте клиентът с clientID и тайната. Codecademy е клиентът с clientID и тайната. Вашият акаунт в codecademybot е просто потребителят.

Това означава, че трябва само да автоматизирате това, което правят обикновените потребители, когато влизат в codecademy. Пуснете това взаимодействие в браузъра няколко пъти с инструмент за разработка, който слуша (IE dev tool, 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/

Мисля, че последната част е интересна. Какво ще кажете ръчно да влезете с вашия браузър, да слушате разговора и да копирате тези две бисквитки във вашия автоматизиран код. Вижте дали те са достатъчни като токени за удостоверяване и ви позволяват да извличате данните от уебсайта.

Ако не, горещо препоръчвам отговора на @CrisBee21. Да се ​​надяваме, че pyCurl може да емулира браузъра достатъчно добре, за да проведе разговора вместо вас.

Още нещо, когато разглеждам сайта, виждам една REST api заявка, а именно 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=токенът ми дава групите, в които съм.

Ако имате повече документация за codecademy REST api, можете да опитате да я вземете от там. Не можах да намеря никаква документация, измислям това, докато вървя.

person flup    schedule 28.11.2013
comment
Да, знам и тази връзка, също я намерих... но как да емулирам това поведение? - person Flame_Phoenix; 28.11.2013
comment
Слушах разговора и добавих мислите си. Виждам две интересни бисквитки, които може да свършат работа. - person flup; 29.11.2013
comment
Имам сериозни проблеми с разбирането на това, така че сега опитвам друг подход: stackoverflow.com/questions/20270106/ И да, от това, което виждам, pycurl обработва бисквитки, но все още се опитвам да разбера как работи всичко :S - person Flame_Phoenix; 30.11.2013