Estoy creando una extensión de Chrome, pero acabo de descubrir que no es posible usar caracteres que no sean ascii en el filtro de expresiones regulares de la API declarativeNetRequest. Que necesito porque quiero usarlo para hacer coincidir y bloquear todas las solicitudes a dominios con TLD рф y дети . ¿Hay alguna solución para esto?
Actualmente uso una acción de bloqueo en un conjunto de reglas especificado con la siguiente condición y funciona bien:
"condition": {"regexFilter": "^(.*):\/\/(.*).(ru|su|tatar)\/(.*)", "resourceTypes": ["main_frame"] }Sin embargo, aún quiero agregar los TLD рф y дети . Intenté usar una representación codificada en Unicode de eso en la expresión regular también, pero tampoco funcionó. Entonces, ¿cómo usar caracteres que no sean ASCII en el filtro de expresiones regulares de la API declarativa de NetRequest para una extensión de Google Chrome? ¿O hay un enfoque alternativo para lograr esto?
Nota al margen: siento que esta pregunta pertenece más a Stack Exchange de "Aplicaciones web", sin embargo, considerando que la etiqueta google-chrome-extensions tiene más de 27.000 preguntas en StackOverflow y menos de 100 preguntas en WebApps Stack Exchange, creo que es más efectivo publicar aquí .
Así que en aras de la exhaustividad. Como mencionó el usuario wOxxOm en los comentarios de la pregunta. Punycode es la solución en casos de dominios internacionalizados.
Entonces, para hacer coincidir los TLD рф y детиI , usé esta expresión regular en su lugar:
^(.*):\/\/(.*).(ru|su|tatar|xn--p1ai|xn--d1acj3b)\/(.*)Lo convertí a Punycode usando https://www.punycoder.com/ .