elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Obtener noticias desde Google Reader con NodeJs
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener noticias desde Google Reader con NodeJs  (Leído 2,066 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Obtener noticias desde Google Reader con NodeJs
« en: 26 Noviembre 2012, 16:53 pm »

Estaba terminando un pequeño Script en mis ratos libres para obtener noticias desde google reader con un simple Script hecho en javascript con node, envía las cabeceras de autentificación de forma automática, espero que a mas de alguno les sirva:

Código
  1. /* Google Reader in NodeJS by WHK */
  2.  
  3. var http = require("http");
  4. var https = require("https");
  5.  
  6. /* Configuración */
  7. var sesion = {
  8. SID : '',
  9. LSID : '',
  10. Auth : '',
  11. token : ''
  12. };
  13. var bufferIO = '';
  14. var obNoticias = {};
  15.  
  16. var loginData = {
  17. mail : 'correo@gmail.com',
  18. pass : '**********'
  19. };
  20.  
  21. console.log(' - Conectando al servidor de Google Reader ...');
  22.  
  23. https.get('https://www.google.com/accounts/ClientLogin?service=reader&source=reader&Email=' + escape(loginData.mail) + '&Passwd=' + escape(loginData.pass),
  24. function(res){
  25.  
  26. /* esperando un HTTP 200 */
  27. if(res.statusCode == 200){
  28. console.log(' - Obteniendo llaves de acceso ...');
  29.  
  30. /* Procesa el contenido */
  31. res.on('data', function(chunk){
  32. bufferIO += chunk.toString() + '';
  33. }).on('end', function(){
  34.  
  35. bufferIO = bufferIO.trim(); /* Limpia el buffer de cualquier basura extra */
  36.  
  37. /* Autentificado? */
  38. if(bufferIO == 'Error=BadAuthentication'){
  39. console.log(' - Clave de acceso erronea.');
  40. return false;
  41. }
  42.  
  43. var partes = bufferIO.split('\n');
  44. if(!partes.length){
  45. console.log(' - Imposible ingresar, google no ha respondido correctamente.');
  46. return false;
  47. }
  48. bufferIO = ''; /* Limpia la memoria */
  49.  
  50. var linea;
  51. for(_id in partes){
  52. linea = partes[_id].trim().split('=');
  53. if((linea[0] == 'SID') || (linea[0] == 'LSID') || (linea[0] == 'Auth')){
  54. sesion[linea[0]] = linea[1];
  55. }
  56. }
  57.  
  58. console.log(' - Obteniendo token de seguridad ...');
  59. http.get({
  60. host : 'www.google.com',
  61. port : 80,
  62. path : '/reader/api/0/token',
  63. headers: {
  64.                'Authorization': 'GoogleLogin auth=' + sesion['Auth']
  65.            }
  66.  
  67. }, function(res2){
  68.  
  69. /* esperando un HTTP 200 */
  70. if(res2.statusCode == 200){
  71.  
  72. /* Procesa el contenido */
  73. res2.on('data', function(chunk2){
  74. bufferIO += chunk2.toString() + '';
  75. }).on('end', function(){
  76. sesion['token'] = bufferIO;
  77. console.log(' - Acceso concedido!');
  78.  
  79. bufferIO = ''; /* Limpia la memoria */
  80.  
  81. console.log(' - Obteniendo temas ...');
  82. /* ############################ Obtiene las noticias ############################ */
  83. http.get({
  84. host : 'www.google.com',
  85. port : 80,
  86. path : '/reader/api/0/stream/contents/user/-/state/com.google/reading-list?ck=' + Math.floor(new Date().getTime() / 1000),
  87. headers: {
  88.            'Authorization': 'GoogleLogin auth=' + sesion['Auth']
  89.        }
  90.  
  91. }, function(res3){
  92. /* esperando un HTTP 200 */
  93. if(res3.statusCode == 200){
  94.  
  95. bufferIO = '';
  96. /* Procesa el contenido */
  97. res3.on('data', function(chunk3){
  98. bufferIO += chunk3.toString() + '';
  99. }).on('end', function(){
  100. try{
  101. eval('obNoticias = ' + bufferIO + ';'); /* Procesa el Json entregado por Google */
  102.  
  103. for(_id in obNoticias.items){
  104. console.log('  [' + parseInt((parseInt(_id) + 1)) + '] ' + obNoticias.items[_id].title.trim().substr(0, 67) + ' ...');
  105. }
  106. console.log(' - ' + parseInt((parseInt(_id) + 1)) + ' Items obtenidos.');
  107.  
  108. return true;
  109.  
  110. }catch(e){
  111. console.log(' - Error en el servidor de Google Reader : Json corrupto.');
  112. return false;
  113. }
  114. });
  115.  
  116. }else{
  117. console.log(' - Error en el servidor de Google Reader : ' + res3.statusCode);
  118. return false;
  119. }
  120.  
  121. }).on('error', function(e){
  122. console.log(' - Imposible conectar al servidor de Google Reader.');
  123. return false;
  124. });
  125.  
  126. });
  127.  
  128. }else{
  129. console.log(' - Error en el servidor de Google Reader : ' + res2.statusCode);
  130. return false;
  131. }
  132.  
  133. }).on('error', function(e){
  134. console.log(' - Imposible conectar al servidor de Google Reader.');
  135. return false;
  136. });
  137. });
  138.  
  139. }else{
  140. console.log(' - Error en el servidor de cuentas de Google : ' + res.statusCode);
  141. return false;
  142. }
  143.  
  144. }
  145. ).on('error', function(e){
  146. console.log(' - Imposible conectar al servidor de cuentas de Google.');
  147. return false;
  148. });
  149.  
  150.  
  151. return true;

Código
  1. whk@packardbell $ node bot.js
  2. - Conectando al servidor de Google Reader ...
  3. - Obteniendo llaves de acceso ...
  4. - Obteniendo token de seguridad ...
  5. - Acceso concedido!
  6. - Obteniendo temas ...
  7.  [1] Cómo prueba Samsung la resistencia de sus dispositivos: los Stress  ...
  8.  [2] El sitio web de la Policía de Lituania ha sido hackeado y modificad ...
  9.  [3] Mozilla estudia lanzar Firefox 17.0.1 para corregir un problema con ...
  10.  [4] Logran regenerar cartílagos gracias a una impresora 3D ...
  11.  [5] La web avanza a un ritmo trepidante... pero el vídeo sigue como sie ...
  12.  [6] El 34% de los españoles ha encontrado empleo a través de las redes  ...
  13.  [7] ICO Reino Unido publica el código de buenas prácticas para la anoni ...
  14.  [8] Detenido un adolescente por abusar de otros menores a los que su ma ...
  15.  [9] Big News te ofrece tus feeds con estilo y con widget de lockscreen ...
  16.  [10] Sony patenta un stylus con retroalimentación háptica ...
  17.  [11] Skobbler lanza una aplicación de Mapas online/offline para demostra ...
  18.  [12] "e-Bottle", conectando el mundo de forma diferente ...
  19.  [13] Vulnerabilidades en Novell File Reporter ...
  20.  [14] Un iPhone libre de 200 euros amenazará a Android en el año 2014 ...
  21.  [15] El servicio de atención al cliente de los operadores sigue siendo m ...
  22.  [16] Confirmados cuatro años de soporte para la Surface con Windows RT ...
  23.  [17] El extraño comportamiento del fuego en el espacio ...
  24.  [18] Cracking con OllyDbg ...
  25.  [19] Descubre qué está drenando y gastando tu batería con Battery Stats  ...
  26.  [20] El mercado negro de teléfonos móviles ...
  27. - 20 Items procesados.
  28. whk@packardbell $

Lo entretenido es que funciona en cualquier sistema operativo compatible con node, mac, linux, windows, etc.

:)


« Última modificación: 26 Noviembre 2012, 16:58 pm por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Google Reader falla publicando noticias de actualidad antiguas
Noticias
wolfbcn 0 1,862 Último mensaje 11 Febrero 2013, 14:20 pm
por wolfbcn
Google controla desde las noticias que leemos hasta las políticas de Barack ...
Noticias
wolfbcn 0 1,120 Último mensaje 31 Marzo 2015, 14:16 pm
por wolfbcn
nodejs | obtener lista de archivos y directorios
Desarrollo Web
patilanz 1 4,641 Último mensaje 9 Diciembre 2017, 21:22 pm
por patilanz
Google News Reader, cliente no oficial de noticias para Windows 10
Noticias
wolfbcn 0 2,343 Último mensaje 17 Diciembre 2017, 02:20 am
por wolfbcn
NODEJS (Obtener acceso a la cam, getUserMedia ) AYUDA
Scripting
Tonics 1 2,285 Último mensaje 30 Octubre 2019, 17:07 pm
por Tonics
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines