¿Cómo puedo hacer que el HTML del correo electrónico sea seguro para mostrar en el navegador web con Python?

Cualquier referencia externa no debe seguirse cuando se muestra. En otras palabras, todo el contenido mostrado debe provenir del correo electrónico y nada de internet.

Además de los correos electrónicos no deseados, deben mostrarse lo más cerca posible como lo desea el escritor.

Me gustaría evitar codificar esto yo mismo.

Las soluciones que requieren la última versión del navegador (firefox) también son aceptables.

1
iny 22 oct. 2009 a las 14:00

3 respuestas

La mejor respuesta

html5lib contiene un desinfectante HTML + CSS. Actualmente permite demasiado, pero no debería ser demasiado difícil modificarlo para que coincida con el caso de uso.

Lo encontré en aquí.

1
iny 23 oct. 2009 a las 07:01

Use el módulo HTMLparser o instale BeautifulSoup, y úselos para analizar el HTML y deshabilitar o eliminar las etiquetas. Esto dejará el texto del enlace que haya allí, pero no se resaltará y no se podrá hacer clic en él, ya que lo está mostrando con un componente de navegador web.

Puede aclarar lo que se hizo reemplazando <A></A> con <SPAN></SPAN> y cambiando la decoración del texto para mostrar dónde solía estar el enlace. Tal vez un tono de azul diferente al normal y un guión bajo para indicar rotura. De esta manera, está un poco más cerca de mostrarlo como se pretendía sin engañar a las personas para que hagan clic en algo que no se puede hacer clic. Incluso puede agregar un elemento emergente en Javascript o CSS puro que muestra una información sobre herramientas que explica que los enlaces se han deshabilitado por razones de seguridad.

Se podrían hacer cosas similares con las etiquetas <IMG></IMG>, incluida la sustitución por un rectángulo en blanco para garantizar que el diseño de la página esté cerca del original.

He hecho cosas como esta con Beautiful Soup, pero HTMLparser está incluido con Python. En distribuciones Python anteriores, había un htmllib que ahora está en desuso. Dado que el HTML en un mensaje de correo electrónico puede no ser completamente correcto, use Beautiful Soup 3.0.7a, que es mejor para dar sentido a HTML roto.

0
Michael Dillon 22 oct. 2009 a las 11:33

No tengo muy claro qué quiere decir exactamente con "seguro". Es un tema bastante grande ... pero, por lo que vale:

En mi opinión, el analizador de eliminación del ActiveState Cookbook es una de las soluciones más fáciles. Puedes copiar / pegar la clase y comenzar a usarla.

Echa un vistazo a los comentarios también. El último dice que ya no funciona, pero también tengo esto ejecutándose en una aplicación en algún lugar y funciona bien. Desde el trabajo, no tengo acceso a ese cuadro, así que tendré que buscarlo durante el fin de semana.

1
exhuma 23 oct. 2009 a las 07:10