Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: MA40 en 14 Noviembre 2016, 07:57 am



Título: [Python] Ejecutar script de forma oculta.
Publicado por: MA40 en 14 Noviembre 2016, 07:57 am
Hola.

Supongamos que tengo una página web HTML con diferentes javascripts que muestran la página en diferentes estados. En un momento, o estado determinado, quiero llamar a un script programado en Python para que haga una acción determinada, por ejemplo actualizar una base de datos, pero no quiero que se muestre ni se pierda nada de lo que tengo en pantalla, o sea, quiero que se ejecute el script Python, digamos, en modo oculto, para luego continuar con la página en la misma situación que se encontraba antes de ejecutar el script Python. ¿Se puede hacer eso? ¿Cómo?

Un saludo.


Título: Re: [Python] Ejecutar script de forma oculta.
Publicado por: engel lex en 14 Noviembre 2016, 08:13 am
Quieres que una web ejecute un script armado en python?


Título: Re: [Python] Ejecutar script de forma oculta.
Publicado por: MA40 en 14 Noviembre 2016, 08:36 am
Quieres que una web ejecute un script armado en python?

Correcto, eso es.

Pero quiero que al ejecutarlo, haga la acción que deba hacer el script, pero sin modificar lo que hay en la pantalla del cliente, o sea, digamos en modo oculto, para luego continuar trabajando con la web.

Un saludo.


Título: Re: [Python] Ejecutar script de forma oculta.
Publicado por: engel lex en 14 Noviembre 2016, 08:44 am
No creo que ningún navegador tenga implantado como standard la ejecución de scripts en python, tal vez si solicitas al usuario que instale python y alguna extensión que permita la ejecución de scripts de python desde el navegador, pueda hacer esto

Es de esta manera debido a que python normalmente tiene acceso al sistema, para evitar que una página maliciosa robe datos o tome el control de un equipo, el único lenguaje de script standard es javascript que está limitado dentro del navegador (no puede escapar de el)


Título: Re: [Python] Ejecutar script de forma oculta.
Publicado por: MA40 en 14 Noviembre 2016, 09:07 am
Perdón, creo que no me he explicado correctamente, pido disculpas.

A ver…

Tengo un programa en Python alojado en un servidor que al ejecutarlo genera una página web en HTML y javascript en el ordenador del cliente. Hasta ahí correcto ¿no?

Bien, en un momento determinado y con una página cargada en el ordenador del cliente, quiero que se ejecute otro programa en Python alojado en el servidor, por ejemplo para hacer un cálculo complejo o actualizar una base de datos. Para ello, se llama desde el ordenador del cliente por ejemplo con la instrucción javascript:

Código
  1. document.location.href = "programa_2_en_python.py?var_a=123”;

al otro programa alojado en el servidor que se debe ejecutar en el servidor (actualizar una base de datos alojada en el mismo servidor o cálculo complejo) pero sin modificar lo que hay en la web del cliente. Hace lo que deba hacer y el cliente continua interactuando con la web que tiene en su pantalla.

No sé si he conseguido explicarme esta vez. :P

Un saludo.

Edito: Sé que eso se podría hacer desde el primer programa en Python (sin utilizar el segundo) pero es que eso me complica mucho la programación, de esta otra forma sería mucho más sencillo.


Título: Re: [Python] Ejecutar script de forma oculta.
Publicado por: engel lex en 14 Noviembre 2016, 15:34 pm
ya, lo que quieres se llama una llamada asincrona... la tecnica en jscript para esto se llama ajax


al principio te puedes enredar un poco... pero si usas jquery tiene metodos bastante simples


http://api.jquery.com/load/ (http://api.jquery.com/load/)

Código
  1. $( "#sección" ).load( "pagina.html", function() {
  2.  alert( "Load was performed." );
  3. });

con ese codigo cuando se ejecute, cargará pagina.html, y si devuelve datos, lo meterá dentro de la etiqueta con ID sección


Título: Re: [Python] Ejecutar script de forma oculta.
Publicado por: Poyoncio en 14 Noviembre 2016, 15:45 pm
Estas usando django para la pagima web?? Si usas django creo que hay una libreria que es muy parecida a ajax


Título: Re: [Python] Ejecutar script de forma oculta.
Publicado por: engel lex en 14 Noviembre 2016, 15:49 pm
Estas usando django para la pagima web?? Si usas django creo que hay una libreria que es muy parecida a ajax

??? ajax es un asunto ejecutado por jscript del lado del cliente... en tal caso la librería sería para controlar las solicitudes asincronas entrantes


Título: Re: [Python] Ejecutar script de forma oculta.
Publicado por: Poyoncio en 14 Noviembre 2016, 17:54 pm
No acabo de entender porque creas la pagina web y le incrustas python, seria mejor hacerlo en python y incrustarle javascript, no se mucho de web que digamos y tampoco termino de entender como funciona lo que quieres hacer pero por si te sirve de ayuda: https://code.djangoproject.com/wiki/AJAX


Título: Re: [Python] Ejecutar script de forma oculta.
Publicado por: MA40 en 14 Noviembre 2016, 18:44 pm
Hola de nuevo.

En primer lugar quiero agradeceros la ayuda que me estáis prestando, especialmente a ti engel lex, y también, sobre todo, vuestra paciencia.

Salta a la vista que llevo una carga elevada de desconocimiento (por no decir ignorancia) pero soy tan cabezota que quiero aprenderlo todo, llegar a todo, sé que eso no se puede, pero aun así, sigo adelante. Creo que sé lo que quiero hacer, lo que no sé muy bien es cómo se debe hacer y con qué herramientas.

Bueno, a lo que iba…, quizás os estáis preguntando qué es lo que quiero hacer. Pues bien, aún el proyecto está en una fase muy inmadura, pero ya puedo enseñar algo.

Quiero terminar esta web: http://www.chessfaucet.com (http://www.chessfaucet.com)

Se trata de un “Faucet” que regala bitcoins (satoshis) a cambio de que el usuario vea la publicidad. Para ello se presenta un tablero de ajedrez en el que se ha de jugar una partida contra el ordenador, si el usuario gana, se le dan 100 satoshis, si hace tablas, 50, y si pierde, ninguno; cada un número determinado de jugadas, se refresca la pantalla para que salga publicidad nueva. Y eso es todo, seguramente a vosotros os parecerá algo sencillo, pero por lo que os comentaba de mi falta de conocimientos, a mí me está costando, uffff…, mucho.

Una aclaración: el motor de análisis de ajedrez, no lo he hecho yo, por supuesto, es uno ya programado en javascript de dominio público. Lo demás está programado en Python, eso es lo que estoy haciendo yo, el programa en Python. De ahí mis dudas en los dos campos, el javascript, también he tenido que modificarlo algo.

Pues nada más.

Si queréis hacer cualquier comentario/sugerencia/crítica…

Bueno, un saludo a todos.