YAML (YAML Ain't Markup Language) es un lenguaje de serialización de datos amigable para humanos y multiplataforma que se utiliza comúnmente para archivos de configuración y representa datos como mapeos, secuencias y escalares. La versión 1.2 convirtió a YAML en un superconjunto estricto de JSON. En el trabajo con proxies y scraping, YAML aparece en archivos de configuración. Por ejemplo, la configuración estática del proxy Envoy está escrita en YAML y define los oyentes y clústeres por los que fluye el tráfico.
Fundamentos de la Sintaxis YAML
- Mapeos:
key: valuepares, como diccionarios o hashes. - Secuencias: Listas, con cada elemento en su propia línea comenzando con
-. - Sangrías: En estilo de bloque, la sangría determina la estructura, por lo que un espacio mal colocado cambia el significado de los datos.
- Sin tabulaciones: No se deben usar caracteres de tabulación para la sangría.
- Comentarios: Un
#inicia un comentario.
Uso Seguro de YAML en Configuraciones de Scraper y Proxy
Los analizadores YAML pueden hacer más que leer datos simples. La documentación de PyYAML advierte que llamar a yaml.load en datos de una fuente no confiable no es seguro, porque puede construir objetos de Python arbitrarios. Su función yaml.safe_load reconoce solo etiquetas YAML estándar, lo que lo convierte en la opción documentada para entradas no confiables.
Cadenas de Múltiples Líneas, Anclas y Múltiples Documentos
- Bloque literal (
|): Mantiene cada salto de línea en una cadena de múltiples líneas. - Bloque plegado (
>): Convierte cada salto de línea en un espacio, excepto antes de líneas vacías o más indentadas. - Anclas y alias:
&namemarca un nodo, y*namelo reutiliza más tarde en lugar de repetirlo. - Múltiples documentos:
---marca el inicio del contenido de un documento, por lo que un flujo puede contener varios documentos....finaliza un documento sin iniciar uno nuevo.