2013-11-24 41 views
5

Tôi đang tạo một trang web tạo biểu đồ về số người hiện diện trong nhóm (từ www.codecamy.com).Nhập trang web bằng cách đăng nhập vào Tài khoản Google bằng cách sử dụng Python

Để đạt được điều này, tôi đã có kế hoạch.

Tôi sẽ có một máy chủ sẽ thăm dò ý kiến ​​trang nhóm CodeCademy (http://www.codecademy.com/groups) sau mỗi 30 giây và truy xuất thông tin cần thiết từ HTML đó.

enter image description here

Sau đó, khi một khách hàng kết nối với trang web của tôi, máy chủ sẽ cung cấp cho khách hàng những thông tin và sau đó khách hàng sẽ sử dụng một trong hai http://www.chartjs.org/docs/ hoặc http://www.jqplot.com/ để vẽ đồ thị dựa trên thông tin đó.

enter image description here

Tuy nhiên, có một vấn đề lớn. Nếu bạn đã nhấp vào bất kỳ liên kết nào từ CodeCademy, thì bạn nhận ra rằng bạn cần có một tài khoản để thực sự xem trang web. Đây có thể là tài khoản facebook, tài khoản google hoặc tài khoản twitter.

enter image description here

Vì vậy, truyện ngắn, nếu tôi muốn truy cập trang web với các thông tin về các nhóm, tôi cần phải có một tài khoản Bot cho máy chủ của tôi và tôi cần phải dạy cho máy chủ của tôi để đăng nhập vào tài khoản đó .

Vì vậy, tôi đã tạo tài khoản giả tại gmail, được gọi là codecademybot và tôi muốn máy chủ của mình sử dụng tài khoản này để đăng nhập vào codecademy để nó có thể xem nội dung của trang đó.

Bằng cách theo dõi quickstart python tutorial that connects me to google+ Tôi hiện cũng có mã tương tác với nó.

Tuy nhiên, mặc dù vậy, tôi vẫn không có ý tưởng nhỏ nhất về cách tương tác với trang web. Tôi có các câu hỏi sau:

  1. Làm cách nào để phát hiện nếu tôi đăng nhập vào tài khoản google của mình?
  2. Làm cách nào để kết nối chính mình với tài khoản đó để tôi có thể truy cập trang?
  3. Có liên kết đặc biệt nào để đăng nhập vào trang web đó không?

Tôi khá lạc hậu và sẽ đánh giá cao mọi sự trợ giúp có thể.

+1

https://developers.google.com/api-client-library/python/guide/aaa_oauth điều này có thể hữu ích –

+0

Tôi đã ở đó, nhưng tôi cảm thấy hoàn toàn mất! Đó là một loạt các thông tin và chưa có gì giúp tôi đạt được mục tiêu của mình: S –

+1

http://stackoverflow.com/questions/10271110/python-oauth2-login-with-google này có thể là .. phần trả lời –

Trả lời

4

Đừng để tất cả các mẫu mã và khách hàng tiềm năng của bạn dẫn đường như thế nào. Chúng được dành cho các trường hợp phức tạp hơn.

  • Đây không phải là OAuth2 ủy quyền, chứng thực OAuth2 nó
  • Bạn không phải là khách hàng với ClientId và bí mật. Codecademy là khách hàng với clientID và bí mật. Tài khoản codecademybot của bạn chỉ đơn giản là người dùng.

Điều này có nghĩa là bạn chỉ cần tự động hóa những gì người dùng bình thường làm khi đăng nhập vào codecademy. Chơi tương tác mà trong trình duyệt một vài lần với một công cụ dev nghe (công cụ phát triển IE, FireBug, bất cứ điều gì) và nhìn vào cuộc trò chuyện của các yêu cầu HTTP.

Đây là những gì bạn muốn mô phỏng.

Từ những gì tôi có thể thấy,

  • thoại bắt đầu bằng cách gửi một yêu cầu đến http://codecademy.com/auth/google_oauth2.
  • Yêu cầu được chuyển tiếp đến url https tại google
  • Nếu trước đây tôi đã đăng nhập tại google, một vài cookie sẽ được gửi cùng và tôi được xác thực. Yêu cầu được gửi trở lại codecademy redirect_url theo số http://www.codecademy.com/auth/google_oauth2/callback bằng mã xác thực oauth2 làm thông số.
  • Giả sử codecademy và trò chuyện trên google, điều này mất khoảng ba giây.
  • Họ đồng ý rằng tôi là tôi và hai cookie (remember_user_token_session_id) được thiết lập trong trình duyệt của tôi trước khi tôi được chuyển tiếp đến http://www.codecademy.com/

Đó chút cuối cùng, tôi nghĩ, là thú vị. Bạn đăng nhập bằng cách sử dụng trình duyệt của mình như thế nào, hãy lắng nghe cuộc trò chuyện và sao chép hai cookie này vào mã tự động của bạn. Xem họ có đủ mã thông báo xác thực không và cho phép bạn tìm nạp dữ liệu từ trang web.

Nếu không, sau đó tôi nhiệt liệt khuyên bạn nên @ CrisBee21 s câu trả lời. Hãy hy vọng pyCurl có thể mô phỏng trình duyệt đủ tốt để thực hiện cuộc trò chuyện cho bạn. điều

Một hơn, khi tôi duyệt xung quanh trang web, tôi thấy một yêu cầu REST api, cụ thể là http://www.codecademy.com/api/v1/notifications/userid/UNREAD_COUNT? authentication_token = một số dấu hiệu

Lướt sóng để http://www.codecademy.com/api/v1/users/userid /? authentication_token = token mang lại cho tôi biết thêm về bản thân mình

http://www.codecademy.com/api/v1/users/userid/groups? Authentication_token = mã thông báo cung cấp cho tôi các nhóm tôi đang ở.

Nếu bạn có thêm tài liệu về codecademy REST api, bạn có thể thử và mang nó từ đó. Tôi không thể tìm thấy bất kỳ tài liệu nào, tôi đang làm điều này khi tôi đi cùng.

+0

Vâng, tôi cũng biết rằng liên kết, tôi cũng tìm thấy nó ... nhưng làm cách nào để mô phỏng hành vi đã nói này? –

+0

Tôi đã nghe trong cuộc trò chuyện và thêm suy nghĩ của mình. Tôi thấy hai cookie quan tâm mà chỉ có thể làm các trick. – flup

+0

Tôi gặp sự cố thực sự khi hiểu điều này, vì vậy tôi hiện đang thử một cách tiếp cận khác: http://stackoverflow.com/questions/20270106/how-to-login-to-codecademy-using-pycurl Và vâng, từ những gì tôi có thể thấy, pycurl xử lý cookie, nhưng tôi vẫn đang cố gắng tìm ra cách mọi thứ hoạt động: S –

Các vấn đề liên quan