[SOLUCIONADO] Javascript no detectado usando python

Iniciado por DtxdF, Noviembre 30, 2018, 03:39:20 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 30, 2018, 03:39:20 AM Ultima modificación: Diciembre 06, 2018, 12:36:53 PM por Gabriela
Cuando trato de ingresar a ciertas páginas web e incluso a las direcciones de las páginas de mi cuenta de hosting me tira el siguiente mensaje o uno parecido: "This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support", que básicamente me indica que mi navegador no soporta o no tiene instalado Javascript.

Mi pregunta es: Como hago para usar Javascript en python, que haga creer que tenga instalado/habilitado Javascript en la página a la que trato de acceder o algo parecido.
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Hola DtxdF,

Pues ejecutar Javascript en Python se puede, deben existir muchos transpiladores que ejecuten codigo Javascript a Python. Sin embargo, ese codigo de Javscript esta hecho para que se ejecute dentro de un navegador, con lo cual se perdería todo el contexto.

Por ejemplo, el codigo javascript te lanzara un monton de errores porque no va a encontrar el DOM que provee un navegador, es decir el <html>, el <body>, etc ... Al final de cuentas, tendrías que desarrollar un navegador aparte.

Esto suena un poco desalentador y más si se tiene en cuenta que muchas paginas de internet en la actualidad estan hechas 100% en Javascript. Pero todo lo que hace javascript para autenticar usuario o acceder a un sitio es enviar una petición HTTP al servidor y es el servidor el verdadero encargado de otorgar acceso al sistema.

Así que si uno desea acceder a un sitio web sin un navegador, tiene que averiguar la ruta (también conocido como el endpoint), y enviar la petición HTTP con las credenciales correctas. El servidor generalmente respondera con una cookie para reconocer si cierto usuario esta autenticado o no.

No se si esto halla contestado tu pregunta. Si tienes mas dudas me comentas.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Gracias por tu respuesta.

Mi pregunta ahora es, como hacen los navegadores hacen que las páginas web detecten que tienen Javascript instalado?

No me refiero al código JS, Eh visto los encabezados de los navegadores más usados (Chrome, opera, Mozilla, etc) y no encontré nada que le indique a la página web sobre el tema, eh intentado cambiar el agente de usuario a uno de los navegadores antes mencionados pero ya tenía en mente que no funcionaría.

Lo que si note leyendo el código HTML de mi hosting cuando trato de acceder a mi página web con la URL, me tira otro código en vez de el que yo escribí, entre ese código llevaba una etiqueta noscript, además en esa etiqueta esta el mensaje que indique en el comentario anterior.
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Gracias por tu respuesta.

Mi pregunta ahora es, como hacen los navegadores hacen que las páginas web detecten que tienen Javascript instalado?

No me refiero al código JS, Eh visto los encabezados de los navegadores más usados (Chrome, opera, Mozilla, etc) y no encontré nada que le indique a la página web sobre el tema, eh intentado cambiar el agente de usuario a uno de los navegadores antes mencionados pero ya tenía en mente que no funcionaría.

Lo que si note leyendo el código HTML de mi hosting cuando trato de acceder a mi página web con la URL, me tira otro código en vez de el que yo escribí, entre ese código llevaba una etiqueta noscript, además en esa etiqueta esta el mensaje que indique en el comentario anterior.
Las paginas web no tienen nada instalado, por si solas no hacen nada, estas solo estan compuestas de arhivos planos: archivos html, css, javascript, imagenes, etc. Es el navegador el encargado de interpretar estos archivos y transformarlos en botones, menus y la manera con la que se comunica con el servidor. El navegador ya tiene "instalado" un interprete de javascript, es una pieza fundamental de todo navegador de la actualidad, este interprete se le conoce como un motor de javascript. Chrome tiene al famoso V8 (usado también en mongo y en nodejs) y Firefox tiene a SpiderMonkey.

Cuando el navegador recibe cualquier javascript de una pagina, este lo intentara ejecutarlo a menos que el usuario tenga deshabilitado javascript en el navegador (es una opción de configuración y es muy poco común que se encuentre deshabilitado).
El mensaje dentro del tag <noscript>  se muestra sí esta deshabilitado javascript en el navegador. Es muy probable que el hosting agregara eso.

Aún sigo sin entender cual es tu objetivo de obtener una pagina web usando python, podrias explicar eso un poco más

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

CitarLas paginas web no tienen nada instalado, por si solas no hacen nada, estas solo estan compuestas de arhivos planos: archivos html, css, javascript, imagenes, etc. Es el navegador el encargado de interpretar estos archivos y transformarlos en botones, menus y la manera con la que se comunica con el servidor.

Lo se amigo se como funciona esto, pero es por eso que se generó mi duda: Si yo utilizo python, creo mi script de python usando por ejemplo el módulo urllib y intento acceder a mi página web No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, se supone que me tendría que mostrar el código Index de esa página, en este caso (por ejemplo) index.html, siendo este archivo el que yo mismo escribí, porque me aparece otro código que yo estoy seguro que es del administrador del hosting, detectando que no tengo instalado/habilitado Javascript y no me quejo de que lo haya puesto porque así no tendría de esta duda y no estaría preguntando.

CitarEl mensaje dentro del tag <noscript>  se muestra sí esta deshabilitado javascript en el navegador. Es muy probable que el hosting agregara eso

Se que el administrador del hosting lo agregará, pero yo comparo mi código ingresando con el navegador (Chrome, Mozilla, etc) y con python, siendo el primero no mostrándome ningún mensaje interpretado por el navegador o en el código HTML, a cambio que con python me muestra la etiqueta y el mensaje, es completamente ilógico o por lo menos en mi caso sin explicación todavía.

CitarAún sigo sin entender cual es tu objetivo de obtener una pagina web usando python, podrias explicar eso un poco más

Yo no trato de acceder/hackear si es que se piensa eso (OJO: no se a que te referiste con acceder) solo trato de hacer una simple petición a la página para ver el código HTML.
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Se que el administrador del hosting lo agregará, pero yo comparo mi código ingresando con el navegador (Chrome, Mozilla, etc) y con python, siendo el primero no mostrándome ningún mensaje interpretado por el navegador o en el código HTML, a cambio que con python me muestra la etiqueta y el mensaje, es completamente ilógico o por lo menos en mi caso sin explicación todavía.

Ok ya veo, es muy probable que esto ocurra a un redirección, habría dos situaciones que se me ocurren en este momento:


  • Un redirect por HTTP, el servidor responde con un codigo 3XX, move temporally, y la verdadera dirección se encuentre en el header location de la respuesta
  • Que la redirección sea hecha por javascript, la misma pagina con el noscript la obtiene el navegador, pero el ejecuta el script que te redirige a tu pagina por medio de las funciones window.location.href o window.location.replace. Si es así, pueda que te sirva las implementaciones de los motores de javascript para python No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, lo veo muy complicado ya que hay que simular el DOM.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Claro amigo, eso si es posible que puedan reedirigirme a otra página, pero en este caso porque ocurre?, Se supone que la forma de reedirigir con HTML será usar <meta http-equiv="refresh" contento="tiempo;url=pagina_a_reedirigir" />, pero esto tiene que ser interpretado por el Dom (por supuesto), eso si yo uso un navegador que lo interprete o con mi aplicación emular el Dom, cosa que no estoy haciendo y por eso no debería pasar.

En PHP con header("Location: página"); pero se supone que yo uso el mismo agente de usuario que usa un navegador como los que ya mencioné (para no redundar, no los nombró), porque lo mencionó?, Ya que la mayoría de scripts en cualquier lenguaje, detectan el agente de usuario y si es uno que usen los bots por ejemplo el de python "Python-urllib/2.6" o también usando el módulo mechanize que emula un navegador por líneas de comandos, este respeta el archivo robots.txt.

Mi pregunta es, si yo usando el módulo urllib, cambiando mi agente de usuario y este no emula ser un navegador o algo por el estilo, porque me reedirige a una página en vez de ingresar en la que yo estoy accediendo?.

Por cierto eh probado con más modulos, usando los mismos parámetros por defecto que me brindan estos, etc y me da la misma respuesta.

Los módulos son: requests, urllib/2, mechanize, requestsocks.

Gracias por ser tan colaborativo
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Hola DtxdF,

Es dificil saber, detras de ese servidor, pueden existir infinidad de proxies, firewall y balanceadores que pueden redireccionar basicamente con cualquier header o cualquier regla. Mi apuesta es que el redireccionamiento se hace por javascript y que el header User Agent no es tan importante. ¿Podria conocer la url a la cual estas realizando la petición?.

Oye gracias @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, El agente de usuario, va dependiendo como ya dije, hay paginas web que detectan el agente de usuario que este registrado (En su base de datos por ejemplo), con el fin de saber si es un script de fuerza bruta o algo por el estilo.

CitarEs dificil saber, detras de ese servidor, pueden existir infinidad de proxies, firewall y balanceadores que pueden redireccionar basicamente con cualquier header o cualquier regla.

Si esto fuera posible con los navegadores Chrome, Mozilla, IExplorer, etc, igualmente me redirigiera a él html con el mensaje ya mencionado.

Citar¿Podria conocer la url a la cual estas realizando la petición?

No porque es de un compañero y el no desea compartirlo con nadie (En excepción mía, xD), pero lo que si te puedo decir es el hosting donde esta alojada: bytehost
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

si usas requests en vez de urllib tambien te da ese mismo mensaje?


Efectivamente compañero @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, como ya mencioné:

CitarLos módulos son: requests, urllib/2, mechanize, requestsocks.
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Efectivamente compañero @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, como ya mencioné:

CitarLos módulos son: requests, urllib/2, mechanize, requestsocks.
chanfles! Perdón, se me paso esa linea :/

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Gracias @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta por la ayuda, escuche y use solo una vez de prueba selenium (Muy buen módulo por cierto), Claro estarías conduciendo el navegador con operaciones que tu le indiques usando selenium no estarías realizando una solicitud desde cero por decirlo así como se hace con los módulos que anteriormente mencióne. Igualmente aprenderé selenium porque se ve muy interesante.

Gracias a todos por aportar la ayuda necesaria, puedo dar este tema solucionado  ;D
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF