¿Cuál es la mejor manera de eliminar la pantalla de un sitio protegido por contraseña en nombre de un tercero?

StackOverflow https://stackoverflow.com/questions/801115

Pregunta

Quiero escribir un programa que analice su equipo de béisbol de fantasía y le notifique las acciones recomendadas, posiblemente varias veces al día. El problema es que no estás jugando al béisbol de fantasía en mi sitio, estás jugando en yahoo, cbs, o espn, etc.

En la mayoría de estos sitios, los equipos de fantasía y las ligas no son públicos, por lo que debes iniciar sesión y ser miembro de la liga para ver a los equipos de la liga.

Todo lo que necesito es el html simple para la página del equipo en cada uno de esos sitios que se enviarán a mi servidor, donde luego puedo analizar y analizar el archivo y enviar notificaciones a los usuarios.

El problema es que necesito combinaciones de nombre de usuario / contraseña para llevar fácilmente estos datos a mi servidor cuando lo necesito, y creo que habrá muchas personas que no querrían confiar su contraseña de yahoo / espn / cbs para mí.

He encontrado varias formas posibles de resolver este problema:

  1. La forma más obvia es solicitar sus credenciales para el sitio en el que está alojado su equipo. Luego, simplemente podría iniciar sesión y solicitar los datos que necesito. Supongo que algunas personas se sentirían cómodas al darme sus credenciales, y otras no tanto.

  2. Escriba un cliente de escritorio, que luego el usuario descarga. El cliente requeriría sus credenciales, pero básicamente podría hacer exactamente lo mismo que haría la versión basada en servidor, iniciar sesión, solicitar la página y enviar la página de nuevo a mi servidor. La diferencia es que su contraseña nunca tendría que dejar su escritorio. Su computadora debería estar encendida, y este programa se ejecuta para que este método funcione.

  3. Escriba complementos para el navegador que naveguen hasta la página que necesito, use la cookie que se guardó de un inicio de sesión anterior para iniciar sesión en el sitio y envíe la página a mi servidor. Esto no requiere que mi software solicite nunca su contraseña, pero si la cookie caduca, tengo una conexión, y además no sé mucho sobre los complementos del navegador.

Estoy seguro de que hay otras opciones, pero estas son las que he encontrado hasta ahora.

Tengo dos preguntas: 1. ¿Cuáles son las otras posibilidades para este tipo de tareas? 2. ¿Estoy sobreestimando la renuencia de las personas a darme su contraseña de yahoo (por ejemplo)? ¿La opción (1) está por encima de la opción obvia?

En los comentarios se sugirió que probara yahoo pipe, y que parecía una sugerencia prometedora, así que lo exploré un poco. Habiendo visto ahora esto , no creo que esa sea una opción. Entonces, parece que voy a ir con la opción 1.

¿Fue útil?

Solución

Este es un problema al que me enfrenté hace un par de años cuando quería hacer lo mismo. Nuestro sitio es http://benchcoach.com y las opciones que estábamos considerando fueron las siguientes:

Original que consideramos obtener las credenciales del usuario y el inicio de sesión. Luego, iniciaríamos sesión y rasparíamos la información de su liga y equipo. El problema es que después de leer varios de los diversos términos de servicio, esto definitivamente estaría violando los términos de servicio. Además de esto, Yahoo! Definitivamente fue uno de los sitios que estábamos considerando y sus usuarios tienen correo electrónico (donde podríamos acceder a datos confidenciales), y Yahoo! billetera. Además, sería bastante trivial para Yahoo / ESPN / CBS bloquear nuestros inicios de sesión programáticos por dirección IP.

La solución en la que decidimos (no estamos 100% satisfechos pero parece funcionar) fue pedirles a nuestros usuarios que instalen un bookmarklet (como delicious, digg o reddit) que publicaría la página html actual en nuestros servidores, donde podríamos Analiza los datos y carga nuestra base de datos. Si aún estuvieran conectados a su cuenta de Yahoo / ESPN / CBS, los dirigiríamos directamente a las páginas, de lo contrario, esos sitios solicitarían la autenticación. Al hacer clic en el marcador una vez más, publicaremos la página en nuestros servidores.

Las ventajas de este enfoque fue que nunca recolectamos las credenciales de nadie, por lo que cualquier preocupación de seguridad se habría aliviado. En segundo lugar, haría imposible que Yahoo / ESPN / CBS bloquee el acceso a nuestro servicio, ya que nunca nos conectaríamos directamente a sus servidores, sino que el navegador del usuario publicaría el contenido de su navegador en nuestro servidor.

El problema con esto es que se necesitan 2 clics para publicar una página en nuestro sitio. Para las ligas de cabeza a cabeza, necesitábamos de 3 a 4 páginas, por lo que nuestros usuarios tendrían que hacer 6-8 clics para sincronizar su liga con nuestros servidores. Todavía estamos buscando opciones para esto.

Una nota importante es que me encontré con el gerente de producto del sitio de Yahoo Fantasy Football en una conferencia hace un año. Hablamos sobre cómo estábamos obteniendo los datos de Yahoo, y él confirmó que obtener credenciales violaría sus TOS y podrían detenernos. Si bien no creo que lo hubieran hecho, hubiera sido difícil invertir tiempo y energía para desarrollar esto solo para que bloqueen nuestro sitio y orinen a los usuarios al cerrar sus cuentas.

Otros consejos

Una respuesta potencialmente más complicada posiblemente podría hacerse con (por ejemplo) yahoo pipe.

Hipotéticamente, creas una canalización que solicita al usuario sus credenciales y les proporciona una URL que contiene sus datos raspados. Ingresan esta URL en su sitio y nunca tienen que proporcionar sus credenciales directamente. Aún mejor, para los preocupados por la seguridad, sería posible examinar lo que realmente estaba haciendo la tubería antes de ingresar cualquier información.

El inconveniente sería una mayor complejidad (además de tener que escribir y mantener la tubería). Dicho esto, puede proporcionar un enlace directamente a la canalización publicada desde su sitio, para facilitar las cosas lo mejor posible.

La opción 1 es la opción obvia. Las personas que confían en su sitio proporcionarán los detalles. No hay otra forma de iniciar sesión en otro sitio mientras se realiza el rastreo de pantalla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top