¿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.