¿Puede Python emular perfectamente un navegador?

Si y no. ¿Pero por qué? Para engañar a algún sitio web, es decir, el servidor? ¿O para mostrar realmente la página web? Esa es una pregunta diferente , que no estoy respondiendo, pero ¿por qué necesitarías eso? [Posiblemente tengas raspado de pantalla en mente]

El servidor web solo ve la solicitud del archivo .html [s]. Quizás solo para ese archivo.

Emular esa solicitud ( pero no mostrar el resultado; incluso esa parte con solo texto y sin CSS no es trivial) es trivial.

Sin embargo, por lo general, la página tiene una imagen JPEG incrustada, lo que significa otra solicitud (ya que no es realmente una imagen, solo una url). O más de uno, si la página “incluye” más contenido.

Creo que el orden de las solicitudes (y el tiempo exacto no está definido) pero Firefox lo haría en algún orden (¿podría depender incluso de la computadora en la que se está ejecutando?). Obtener ese orden (para cualquier página posible) no sería trivial. No estoy seguro de si algunas páginas lo usan, por ejemplo, con fines anti-adblock. Pero pediste emular perfectamente, supongo que a pocos les importa el lado del servidor (al software del servidor no le importaría a menos que esté programado para detectar alguna desviación de un patrón esperado).

La parte más difícil es cuando incluye JavaScript, entonces realmente tendría que emularlo en Python (teóricamente posible, prácticamente no es posible al menos no más rápido; JavaScript, sin embargo, en teoría podría ordenar un motor JavaScript como V8 para ejecutar el código JavaScript) . De nuevo, esto solo importaría si JavaScript ordenara algunas solicitudes adicionales.

Como su computadora podría ser lenta / antigua, no es posible decir que las solicitudes provienen de Firefox emulado con Python o una computadora antigua / lenta que ejecuta Firefox.

Dado que Firefox fue (creo) escrito en C, que es un lenguaje Turing Complete, eso significa que cualquier otro lenguaje Turing Complete también podría usarse para escribir el mismo programa (aunque, por supuesto, el rendimiento puede variar).

Python también es un lenguaje Turing Complete, por lo que puede hacer lo que un programa C puede hacer, cualquiera que sea el programa C que elija. Sin embargo, es casi seguro que el rendimiento del navegador Python será mucho más lento, y con un navegador notará la diferencia de rendimiento.

Si se preguntaba: Turing Completeness es un término en ciencias de la computación para ‘describir’ un lenguaje que con suficiente memoria y tiempo podría completar los mismos cálculos que una máquina de Turing ideal (Alan Turing fue una invención del pensamiento de Alan Turing, donde demostró que esta máquina ideal podría completar cualquier actividad informática, y que mientras los lenguajes de programación contuvieran un conjunto conocido de instrucciones, podrían emular esa máquina ideal). La mayoría de los lenguajes de programación de computadoras principales están completos. Lo que significa que cualquiera de ellos puede hacer lo que el resto puede hacer en términos de hacer y completar cálculos. La integridad de Turing no dice nada sobre la velocidad de ejecución o la memoria que tomará el programa.

More Interesting

¿Qué libros debo leer sobre cómo desarrollar sitios web / aplicaciones desde cero?

Cómo enviar un correo de activación de usuario a un correo electrónico después de enviar un formulario de registro personalizado

¿Qué tan bueno es YUI como una biblioteca JavaScript de código abierto, en comparación con las alternativas actuales (2014)?

¿Por qué debería usar Haskell para crear una aplicación web? Las aplicaciones web comunes toman texto de un cuadro, lo colocan en una base de datos y luego lo colocan dentro de otro cuadro. ¿Por qué elegiría un idioma que intente evitar los efectos secundarios?

¿Cuál es el mejor proveedor de alojamiento web para micrositios de alto perfil y alto tráfico para una startup?

En la programación orientada a objetos (específicamente desarrollo web: Laravel), ¿existe una convención en la que tenga un método singular para múltiples acciones?

¿AngularJS sería estable después de 5 años?

¿Debo pasar del desarrollo de pila .NET al desarrollo de pila MEAN?

¿Cuáles son los mejores temas multipropósito de OpenCart con muchas funciones?

¿Cuál es el mejor instituto de formación de diseño web en Ludhiana?

¿Existe un complemento integrable que pueda usar para crear un cuestionario en mi sitio web donde el usuario debe ingresar su correo electrónico para recibir los resultados?

¿Sabes PHP?

Cómo eliminar extensiones de PHP, HTML y HTM con .htaccess en todas las páginas si PHP nos da una página de error

¿Cuán eficientes eran las personas para aprender a programar antes de que Internet fuera una fuente disponible para ayudarlos? ¿Aceleró Internet el aprendizaje de códigos?

¿Cuándo y por qué se requieren servlets, jsp y restful? ¿Cuál es la alternativa para estos?