2013-11-24 11 views
5

グループに所属する人数のグラフを作成するウェブサイトを作成しています(www.codecamy.comから)。Pythonを使用してGoogleアカウントにログインしてウェブサイトを入力してください

これを達成するために、私は計画を立てました。

私は30秒ごとにCodeCademyグループページ(http://www.codecademy.com/groups)をポーリングし、その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

だから、私はグループに関する情報のページにアクセスする場合は、短い物語は、私は私のサーバー用のボットアカウントを持っている必要があり、私はそのアカウントにログインして自分のサーバーを教える必要があります。

このように、私はcodecademybotと呼ばれるgmailにダミーのアカウントを作成しました。私のサーバーはこのアカウントを使ってcodecademyにログインし、そのページのコンテンツを見ることができます。

quickstart python tutorial that connects me to google+に従うことで、これとやり取りするコードも作成できるようになりました。

しかし、これにもかかわらず、私はまだウェブサイトとやり取りする方法についてはほとんど考えていません。次の質問があります。

  1. Googleアカウントにログインしているかどうかを検出するにはどうすればよいですか?
  2. 私はそのアカウントに自分自身を接続して、そのページにアクセスできますか?
  3. そのWebサイトにログインするための特別なリンクはありますか?

私はかなり迷っており、助けていただけるとありがたいです。

+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

コードサンプルとハウツーの鉛をすべて迷わせてはいけません。より複雑なケースを対象としています。

  • これは、あなたがクライアントIDと秘密とクライアントじゃないのOAuth2認証、そののOAuth2認証
  • ではありません。 Codecademyは、クライアントIDと秘密のクライアントです。あなたのcodecademybotアカウントは単にユーザーです。

これは、codecademyにログインするときに通常のユーザーの操作を自動化するだけでよいことを意味します。そのインタラクションをブラウザで数回、devツール(IEの開発ツール、FireBugなど)でリッスンし、HTTPリクエストの会話を見てください。

これはエミュレートするものです。

私が見ることができるものから、

  • 会話がhttp://codecademy.com/auth/google_oauth2にリクエストを送信することにより開始します。
  • リクエストはGoogleのhttps URLに転送されます
  • 以前にGoogleにログインしていた場合、カップルのクッキーが送信され、認証されます。この要求は、oauth2認証コードをパラメータとしてcodecademy redirect_url http://www.codecademy.com/auth/google_oauth2/callbackに送信されます。
  • おそらくcodecademyとGoogleチャットがこれには約3秒かかります。
  • 彼らは私が私だと私は最後のビットは、私が思うに、面白いとhttp://www.codecademy.com/

に転送されます前に、2つのクッキー(remember_user_token_session_idが)私のブラウザに設定されますことに同意します。ブラウザーを使用して手動でログインし、会話に耳を傾け、これらの2つのCookieを自動コードにコピーしてください。認証トークンとして十分であるかどうかを確認し、ウェブサイトからデータを取得できるようにします。

そうでなければ、@ CrisBee21の回答をお勧めします。 pyCurlがブラウザを十分にエミュレートして会話をすることができるようにしましょう。

もう一つ、私がサイトを中心に参照するとき、私は、1つのREST API要求を参照してくださいつまりhttp://www.codecademy.com/api/v1/notifications/ユーザーID/UNREAD_COUNT?authentication_token = いくつかのトークン

サーフィンhttp://www.codecademy.com/api/v1/users/ユーザーID /?authentication_token =へトークン は私に自分自身についての詳細情報を提供します

http://www.codecademy.com/api/v1/users/ユーザーID/groups?authentication_token = トークンは私のグループを教えてくれます。

codecademy REST APIについての詳細は、こちらから試してみてください。私はドキュメンテーションを見つけることができませんでした。

+0

はい、私もそのリンクを知っている、私もそれを見つけた...しかし、どのように私はこれを言った動作をエミュレートしますか? –

+0

私は会話を聞いて、自分の考えを加えました。私はちょうどそのトリックを行うかもしれない興味の2つのクッキーを参照してください。 – flup

+0

これを理解するのが本当に困っているので、今私は別の方法を試しています:http://stackoverflow.com/questions/20270106/how-to-login-to-codecademy-using-pycurl そして、見ることができる、pycurlは、クッキーを処理しますが、私はまだすべての仕組みを理解しようとしています:S –

関連する問題