¿Desea mantener su SWF exclusivo para su sitio? En este Consejo rápido, veremos cómo usar un "bloqueo de sitio" para evitar que las personas descarguen su SWF y lo incorporen en un sitio web diferente.
Aquí está el archivo que se ejecuta en un dominio incorrecto:
Construiremos una pantalla animada que se activará cuando el SWF esté en el dominio incorrecto, como en el ejemplo anterior. Dicho esto, si solo desea obtener información sobre el código de bloqueo del sitio, vaya al Paso 5.
Antes de comenzar a escribir código y agregar diseños al escenario, primero debe obtener Tweener. Para este proyecto utilicé código abierto, que se puede usar para proyectos abiertos y comerciales. Caurina tweener está disponible en code.google.com.
Después de descargar Tweener, simplemente cópielo y péguelo en la carpeta de su proyecto. Recuerda, la carpeta debe tener nombre caurina
, dentro de la carpeta debe haber una carpeta llamada transiciones, y dentro de ella una carga de archivos de clase Flash .as.
Con el primer paso realizado, podemos continuar con la codificación y el diseño del archivo..
El tamaño del archivo es irrelevante. La propiedad del bloqueo del dominio es bloquear su SWF o componente, en caso de que alguien lo haya descargado de usted sin su permiso.
Para este ejemplo, he usado un tamaño de escenario de 540 x 400, puede usar el tamaño que desee.
Una vez que haya seleccionado el tamaño del archivo, cree 3 capas nuevas como en la imagen de abajo. Mantenga siempre su capa de acciones en blanco. Las etapas organizadas son mucho más fáciles de trabajar y comprender..
Después de que hayas creado las 3 capas, crea 2 nuevos movieclips simples. Colócalos donde quieras, del tamaño que quieras. 40 píxeles de alto por 10 píxeles de ancho, digamos, sin trazo. El posicionamiento no es importante, porque más adelante colocaremos estos clips de video por actionscript.
Ahora, llega el aspecto más importante de estos clips, el punto de registro. Mire las imágenes a continuación, cuando convierta sus mapas de bits a clips de video, recuerde hacer lo siguiente, de lo contrario, el archivo no se ejecutará en todo su potencial:
Y por supuesto, los nombres de instancia:
¡Felicidades! Agregó los cuadros que cerrarán la página, en caso de que el dominio sea incorrecto. Ahora, agregue un cuadro de texto dinámico en el centro del escenario o en cualquier lugar que desee. Este cuadro de texto informará al usuario que descargó el archivo ilegalmente que el archivo está protegido por la secuencia de comandos ... Déle un nombre de instancia de warning_txt
Ahora, una vez que haya creado los clips de video y el cuadro de texto, estará listo para codificar. En la capa de acciones bloqueadas, presione F9 y agregue el siguiente código:
importar flash.events. *; importar flash.display.LoaderInfo; importar flash.display.MovieClip; importar flash.net.navigateToURL; importar flash.net.URLRequest; import flash.net.URLVariables; Importar caurina.transitions.Tweener
flash.events. *;
carga todos los eventos que probablemente necesitaremos.flash.display.LoaderInfo;
trae toda la información que necesitamos cargar y que se cargará con el archivo.flash.flash.display.MovieClip;
carga todos los eventos con los que nos encontraremos mientras usamos movieclips.importar caurina.transitions.Tweener;
carga nuestro motor de interpolación, y la animación de las barras de bloqueo de contenido..El resto de los eventos cargados son necesarios para que Flash tenga acceso a la URL de la página en la barra.
var url: String = stage.loaderInfo.url;
Supongamos que el SWF está cargado en la página. http://www.domainName.com/siteFolder/sitePage.html. La línea 9 recupera esta URL y la asigna a la cadena llamada url
.
Ahora que Flash sabe de dónde obtener la URL, es hora de compararla con la URL de nuestro sitio web y actuar si coinciden o no
function pageDomainCheckInit (evento: Evento): void if (url! = "http://www.domainName.com/siteFolder/sitePage.html") warning_txt.text = "Este archivo se está ejecutando en la URL incorrecta. Acceso al contenido ¡Restringido!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alfa: 0.8, tiempo: 1, transición: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, tiempo: 1, alpha: 0.8, transición: "easeInOutExpo"); else warning_txt.text = ""; closeBoxTop.visible = false; closeBoxBottom.visible = false; stage.removeEventListener (Event.ENTER_FRAME, pageDomainCheckInit); stage.addEventListener (Event.ENTER_FRAME, pageDomainCheckInit);
Hemos utilizado un detector de eventos para iniciar la comprobación de la cadena de URL detectada anteriormente. Lo que esto hace básicamente es decirle a Flash que si la cadena que se encuentra en la barra de navegación (o la URL donde se encuentra la página) no es la correcta, la página ejecutará el script de bloqueo de contenido y advertirá al usuario que el dominio es incorrecto De lo contrario, si la página se coloca correctamente, los cuadros que cierran la página no se mostrarán, ni el texto de advertencia.
Una vez completada esta sección, eliminamos el detector de eventos para que el archivo no consuma recursos al verificar y volver a verificar y volver a verificar una y otra vez. Una vez que la cadena se extrae con éxito, se compara, y el script se ejecuta con éxito, el pageDomainCheckInit
evento es eliminado.
if (url! = "http://www.domainName.com/siteFolder/sitePage.html")
Esta sección del código, es básicamente un "SI NO", por lo que si la página no está http://www.domainName.com/siteFolder/sitePage.html
Flash comenzará a ejecutar funciones debajo del IF, pero de lo contrario, si el SWF está en la página correcta, Flash eliminará los bloques del escenario y mantendrá todo limpio y ordenado. Nunca sabrás que está ahí.
Ahora, veamos qué sucede cuando el archivo no está en el dominio correcto.
warning_txt.text = "Este archivo se está ejecutando en el dominio de página incorrecto. ¡Acceso restringido al contenido!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alfa: 0.8, tiempo: 1, transición: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, tiempo: 1, alpha: 0.8, transición: "easeInOutExpo");
El código que ve aquí coloca las cajas cerradas para iniciar y finalizar etapas (closeBoxTop = 0, closeBoxBotton = stage.stageWidth
), y los hace invisibles (closeBoxTop.visible = false, closeBoxBottom.visible = false
) Esto los oculta del escenario, los mantiene alejados de la vista y no afecta la apariencia del sitio. Sin embargo, están allí..
Si la página, o el componente está instalado en un sitio / nombre de dominio diferente al que originalmente no estaba destinado, se vuelven visibles. Se expanden a través de la pantalla, lo cubren por completo y alertan al usuario de que el contenido es robado o no donde se supone que debe estar..
Esta medida no solo informa al usuario general de que el archivo no está donde se supone que debe estar, sino que también bloquea el contenido que se muestra..
¿Qué pasa si solo queremos comprobar si el SWF está cargado en un dominio específico??
Así que en lugar de verificar si el SWF está en http://www.domainName.com/siteFolder/sitePage.html
, acabamos de comprobar si está en algún lugar en el nombreDeDominio.com
sitio web. Así podría ser en https://private.domainName.com/secure/secret.html
y aun funciona.
Podemos lograr esto editando el código que obtiene la URL, así:
var url: String = stage.loaderInfo.url; // ¡esta línea estuvo aquí antes! var urlBeginning: int = url.indexOf (": //") + 3; var urlTermination: int = url.indexOf ("/", urlBeginning); var pageDomain: String = url.substring (urlBeginning, urlTermination); var lastDot: int = pageDomain.lastIndexOf (".") - 1; var CharacterAfterDomain: int = pageDomain.lastIndexOf (".", lastDot) + 1; pageDomain = pageDomain.substring (CharacterAfterDomain, pageDomain.length);
Supongamos que el SWF está cargado en la página. http://www.domainName.com/siteFolder/sitePage.html. La línea 9 recupera esta URL y la asigna a la cadena llamada url
. Esa es la misma línea que teníamos antes..
La línea 10 de código recupera la posición dentro de la URL de la : //
La línea 11 de código recupera la primera /
que aparece en la URL después de la : //
. Esto es realmente muy importante porque entre estos se puede encontrar su nombre de dominio real.
La línea 12 de código, simplemente está haciendo la conexión dentro de Flash de lo que hay entre: // y el primero / listo para que la cadena de nombre de dominio se verifique en el siguiente paso. En este punto, con nuestro ejemplo., pageDomain
se ha establecido en www.dominio.com
.
El código restante comprueba la cadena de nombre de dominio, lo que está antes (significa "www" o "http: // www.") Y lo que está después de su nombre de dominio (que significa ".").
Todos estos se ignoran, por lo que Flash puede definir el nombre de dominio real. los nombreDeDominio.com
. En lugar de verificar:
if (url! = "http://www.domainName.com/siteFolder/sitePage.html")
… verificamos:
if (pageDomain! = "domainName.com")
El principal problema con esta técnica es que no funciona para dominios que tienen tres partes. Por ejemplo, nombreDeDominio.es
- este código obtendrá ".co.uk" como el valor de pageDomain. Aún así, es mi método preferido, como explicaré en el siguiente paso.
Es posible que tenga varios archivos en su servidor, en diferentes dominios, este método se podría haber hecho de tal manera que el archivo se bloquearía en una única URL única, como se mencionó anteriormente. Pero si tuviera que ejecutar su archivo usando enlaces profundos, por ejemplo, o subdominios, el archivo dejaría de funcionar, debido al hecho de que el enlace no sería válido para el lector del dominio..
El hecho de que el código sea if (pageDomain! = "domainName.com")
es muy importante. Le permitirá agregar este código a cada archivo en su sitio, subdominio, ubicación de enlace profundo; Mientras su enlace esté en ese dominio, el archivo se ejecutará y el bloqueo del dominio no se activará.!
Aún así, puede ser útil bloquear algo más específico que un nombre de dominio. Supongamos que usted aloja su sitio web en un host como Amazon S3. Entonces tu URL será algo así como http://yoursitename.s3.amazonaws.com/folder/page.html. Pero alguien más en Amazon S3 podría tener la URL http://someoneelse.s3.amazonaws.com/. Podrían cargar el SWF en su sitio, y como el SWF todavía estaría en amazonaws.com el dominio del dominio no se bloquearía.
Aquí hay un pequeño consejo que realmente puede amar. Supongamos por un momento que tiene el mismo contenido en varios nombres de dominio y que no desea agregar un código diferente para cada uno de sus dominios. Puede hacer que el archivo compruebe múltiples dominios a la vez de manera muy fácil.
Conozca al operador AND: &&
Al usar este comando dentro del primer verificador, puede agregar tantos dominios como desee. ¡Déjame enseñarte como! :)
Comprobador de dominio único:
(pageDomain! = "domainName.com")
Verificador de múltiples dominios:
((pageDomain! = "domainName.com") && (pageDomain! = "mydomain.com") && (pageDomain! = "hisdomain.com"))
Realmente fácil, ¿no es así??
Bueno, esto lo envuelve. Como todos ustedes saben, la protección completa de los archivos flash nunca se garantiza al 100%, pero este es solo otro paso para que su sitio sea más seguro, mejor y más seguro contra el robo de archivos. ¡No olvide cifrar sus archivos antes de agregarlos al servidor! Gracias por leer este tutorial. Espero que haya sido útil para usted. Si necesita más ayuda, no dude en dejar sus preguntas dentro de la sección de comentarios..