Schneller Tipp Sperren Sie Ihre SWF-Datei an einen bestimmten Domänennamen

Möchten Sie, dass Ihre SWF-Datei exklusiv für Ihre Website bleibt? In diesem Schnelltipp wird erläutert, wie Sie mithilfe einer "Website-Sperre" verhindern, dass Nutzer Ihre SWF-Datei herunterladen und auf einer anderen Website einbetten.


Endergebnisvorschau

Hier ist die Datei, die in einer falschen Domäne ausgeführt wird:

Wir erstellen eine animierte Anzeige, die aktiviert werden kann, wenn sich die SWF-Datei in der falschen Domäne befindet, wie im obigen Beispiel. Wenn Sie nur den Site-Sperrcode kennenlernen möchten, fahren Sie mit Schritt 5 fort.


Schritt 1: Tweener

Bevor Sie mit dem Schreiben von Code und dem Hinzufügen von Designs zur Bühne beginnen, müssen Sie zunächst Tweener erwerben. Für dieses Projekt habe ich Open Source verwendet, das für offene und kommerzielle Projekte verwendet werden kann. Caurina Tweener ist verfügbar unter code.google.com.

Nachdem Sie Tweener heruntergeladen haben, kopieren Sie es einfach und fügen Sie es in Ihren Projektordner ein. Denken Sie daran, dass der Ordner benannt werden muss Caurina, Innerhalb des Ordners muss sich ein Ordner mit dem Namen "Übergänge" befinden, und darin befinden sich auch Flash-Klassendateien .as.

Nach dem ersten Schritt können wir mit dem Codieren und Entwerfen der Datei fortfahren.


Schritt 2: Dateigröße und Ebenen

Die Dateigröße ist irrelevant. Die Eigenschaft des Domain-Lockers ist das Sperren Ihrer SWF-Datei oder Komponente, falls sie von jemandem ohne Ihre Erlaubnis heruntergeladen wurde.

Für dieses Beispiel habe ich eine Bühnengröße von 540 x 400 verwendet. Sie können jede beliebige Größe verwenden.

Nachdem Sie die Dateigröße ausgewählt haben, erstellen Sie drei neue Ebenen wie im Bild unten. Halten Sie Ihre Aktionsebene immer leer. Organisierte Bühnen sind viel einfacher zu handhaben und zu verstehen.


Schritt 3: Das Zensorsystem

Nachdem Sie die drei Ebenen erstellt haben, erstellen Sie zwei neue einfache Movieclips. Platzieren Sie sie an beliebigen Orten und in jeder gewünschten Größe. 40 Pixel Höhe mal 10 Pixel Breite, ohne Strich. Die Positionierung ist nicht wichtig, da wir diese Movieclips später mit Actionscript platzieren werden.

Nun kommt der wichtigste Aspekt dieser Movieclips, der Registrierungspunkt. Schauen Sie sich die Bilder unten an. Wenn Sie Ihre Bitmaps in Movieclips konvertieren, müssen Sie Folgendes tun: Andernfalls wird die Datei nicht mit vollem Potenzial ausgeführt:

Und natürlich die Instanznamen:

Herzliche Glückwünsche! Sie haben die Felder hinzugefügt, durch die die Seite geschlossen wird, falls die Domäne falsch ist. Fügen Sie jetzt ein dynamisches Textfeld in die Mitte der Bühne oder an einen beliebigen Ort ein. Dieses Textfeld informiert den Benutzer, der die Datei illegal heruntergeladen hat, dass die Datei durch das Skript geschützt ist. Geben Sie der Instanz einen Instanznamen warning_txt


Schritt 4: Laden der erforderlichen Klassen

Nachdem Sie die Movieclips und das Textfeld erstellt haben, können Sie jetzt codieren. Drücken Sie auf der Ebene der gesperrten Aktionen die Taste F9, und fügen Sie den folgenden Code hinzu:

 import flash.events. *; import flash.display.LoaderInfo; import flash.display.MovieClip; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; caurina.transitions.Tweener importieren
  • flash.events. *; lädt alle Ereignisse, die wir wahrscheinlich benötigen.
  • flash.display.LoaderInfo; ruft alle Informationen auf, die wir laden müssen und die mit der Datei geladen werden.
  • flash.flash.display.MovieClip; lädt alle Ereignisse, auf die wir bei der Verwendung von Movieclips stoßen werden.
  • caurina.transitions.Tweener importieren; lädt unser Tween-Modul und die Animation der Inhaltssperren.

Die restlichen geladenen Ereignisse sind erforderlich, damit Flash auf die Seiten-URL in der Leiste zugreifen kann.


Schritt 5: Überprüfen auf eine bestimmte Seite

 var url: String = stage.loaderInfo.url;

Nehmen wir an, die SWF-Datei wird auf der Seite geladen http://www.domainName.com/siteFolder/sitePage.html. Zeile 9 ruft diese URL ab und weist sie der aufgerufenen Zeichenfolge zu url.


Schritt 6: Ursache und Wirkung

Nun, da Flash weiß, woher die URL kommt, ist es Zeit, diese mit der URL unserer Website zu vergleichen und Maßnahmen zu ergreifen, wenn sie übereinstimmen oder nicht

 function pageDomainCheckInit (event: Event): void if (url! = "http://www.domainName.com/siteFolder/sitePage.html") warning_txt.text = "Diese Datei wird unter der falschen URL ausgeführt. Zugriff auf Inhalte Beschränkt!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alpha: 0.8, Zeit: 1, Übergang: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, Zeit: 1, Alpha: 0.8, Übergang: "easeInOutExpo");  else warning_txt.text = ""; closeBoxTop.visible = false; closeBoxBottom.visible = false;  stage.removeEventListener (Event.ENTER_FRAME, pageDomainCheckInit);  stage.addEventListener (Event.ENTER_FRAME, pageDomainCheckInit);

Wir haben einen Ereignis-Listener verwendet, um die Überprüfung der zuvor erkannten URL-Zeichenfolge zu starten. Was dies im Grunde tut, ist Flash zu sagen, dass, wenn die Zeichenfolge in der Navigationsleiste (oder die URL, unter der die Seite gehostet wird) nicht die richtige ist, die Seite das Skript zum Ausblocken von Inhalt ausführt und den Benutzer darüber informiert Die Domain ist falsch. Andernfalls werden die Felder, die die Seite schließen, nicht angezeigt, wenn die Seite korrekt platziert ist, und auch der Warnungstext.

Nachdem dieser Abschnitt abgeschlossen ist, entfernen wir den Ereignis-Listener, sodass die Datei keine Ressourcen verbraucht, indem Sie sie erneut prüfen und erneut prüfen. Sobald die Zeichenfolge erfolgreich abgerufen, verglichen und das Skript erfolgreich ausgeführt wurde, wird die Zeichenfolge angezeigt pageDomainCheckInit Ereignis wird entfernt.

 if (url! = "http://www.domainName.com/siteFolder/sitePage.html") )

Dieser Abschnitt des Codes ist im Grunde ein "WENN NICHT", wenn also die Seite nicht http://www.domainName.com/siteFolder/sitePage.html Flash führt die Ausführung von Funktionen unterhalb der IF aus. Andernfalls entfernt Flash die Blöcke von der Bühne und hält alles ordentlich und aufgeräumt, wenn sich die SWF-Datei auf der richtigen Seite befindet. Du wirst nie wissen, dass es da ist.

Nun sehen wir uns an, was passiert, wenn sich die Datei nicht in der richtigen Domäne befindet.

 warning_txt.text = "Diese Datei wird auf der falschen pageDomain ausgeführt. Zugriff auf Inhalte eingeschränkt!"; closeBoxTop.x = 0 closeBoxTop.visible = true; closeBoxTop.height = stage.stageHeight / 2 Tweener.addTween (closeBoxTop, width: stage.stageWidth, alpha: 0.8, Zeit: 1, Übergang: "easeInOutExpo"); closeBoxBottom.x = stage.stageWidth closeBoxBottom.visible = true; closeBoxBottom.height = stage.stageHeight / 2 Tweener.addTween (closeBoxBottom, width: stage.stageWidth, Zeit: 1, Alpha: 0.8, Übergang: "easeInOutExpo");

Der Code, den Sie hier sehen, positioniert die closeBoxes am Anfang und Ende der Bühne (closeBoxTop = 0, closeBoxBotton = stage.stageWidth) und macht sie unsichtbar (closeBoxTop.visible = false, closeBoxBottom.visible = false) Dies verbirgt sie vor der Bühne, hält sie von der Ansicht fern und beeinflusst nicht das Erscheinungsbild der Website. Trotzdem sind sie da.

Wenn die Seite oder die Komponente auf einem anderen Standort / Domänennamen installiert ist, für den sie ursprünglich nicht vorgesehen war, werden sie sichtbar. Sie erstrecken sich über den gesamten Bildschirm, decken ihn vollständig ab und weisen den Benutzer darauf hin, dass der Inhalt gestohlen wurde oder nicht, wo er sich befinden sollte.

Diese Maßnahme informiert den allgemeinen Benutzer nicht nur darüber, dass sich die Datei nicht an dem Ort befindet, an dem sie sich befinden soll, sie blockiert auch die Anzeige von Inhalten.


Schritt 7: Suchen nach einer bestimmten Domäne

Was ist, wenn wir nur prüfen möchten, ob die SWF-Datei in einer bestimmten Domäne geladen ist??

Anstatt zu prüfen, ob die SWF-Datei aktiviert ist http://www.domainName.com/siteFolder/sitePage.html, wir prüfen nur, ob es irgendwo auf der domainName.com Webseite. So könnte es bei sein https://private.domainName.com/secure/secret.html und noch arbeiten.

Wir können dies erreichen, indem Sie den Code bearbeiten, der die URL abruft.

 var url: String = stage.loaderInfo.url; // Diese Zeile war schon mal da! 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);

Code erklärt

Nehmen wir an, die SWF-Datei wird auf der Seite geladen http://www.domainName.com/siteFolder/sitePage.html. Zeile 9 ruft diese URL ab und weist sie dem aufgerufenen String zu url. Das ist die gleiche Linie, die wir vorher hatten.

Zeile 10 des Codes ruft die Position innerhalb der URL von : //

Zeile 11 des Codes ruft die erste ab / das erscheint in der URL nach dem : //. Dies ist eigentlich sehr wichtig, da zwischen diesen Ihr tatsächlicher Domainname gefunden werden kann.

In Zeile 12 des Codes wird nur die Verbindung zwischen Flash: // und dem ersten hergestellt, und der Domänenname String wird im nächsten Schritt zur Überprüfung bereit. An diesem Punkt mit unserem Beispiel, pageDomain wurde auf gesetzt www.domainname.com.

Der verbleibende Code prüft, ob die Zeichenfolge des Domänennamens vorhanden ist (davor "www" oder "http: // www.") Und was hinter Ihrem Domänennamen (".") Steht..

Alle werden ignoriert, sodass Flash den tatsächlichen Domänennamen definieren kann. Das domainName.com. Anstatt zu prüfen:

 if (url! = "http://www.domainName.com/siteFolder/sitePage.html") )

… wir überprüfen:

 if (pageDomain! = "domainName.com") 

Das Hauptproblem bei dieser Technik ist, dass sie für Domänen mit drei Teilen nicht funktioniert. Zum Beispiel, domainName.co.uk - Dieser Code erhält ".co.uk" als Wert von pageDomain. Dennoch ist es meine bevorzugte Methode, wie ich im nächsten Schritt erläutern werde.


Schritt 8: Dienstprogramm?

Möglicherweise haben Sie mehrere Dateien auf Ihrem Server in verschiedenen Domänen. Diese Methode könnte so ausgeführt worden sein, dass die Datei wie oben für eine einzige und eindeutige URL gesperrt ist. Wenn Sie Ihre Datei jedoch beispielsweise mit Deep-Linking oder Subdomains ausführen, funktioniert die Datei nicht mehr, da der Link für den Domänenleser ungültig ist.

Die Tatsache, dass der Code ist if (pageDomain! = "domainName.com") ist sehr wichtig. Sie können diesen Code zu jeder Datei auf Ihrer Site, Subdomain und Deep-Link-Position hinzufügen. Solange sich Ihr Link in dieser Domäne befindet, wird die Datei ausgeführt und der Domänenschließer wird nicht ausgelöst!

Es kann jedoch nützlich sein, sich auf etwas Spezielleres als einen Domänennamen zu beschränken. Angenommen, Sie hosten Ihre Website auf einem Host wie Amazon S3. Dann wird Ihre URL ungefähr so ​​aussehen http://yoursitename.s3.amazonaws.com/folder/page.html. Aber jemand anderes auf Amazon S3 könnte die URL haben http://someoneelse.s3.amazonaws.com/. Sie könnten die SWF-Datei auf ihre Website hochladen, und da die SWF-Datei noch aktiv wäre amazonaws.com Der Domain-Locker würde nicht gesperrt.

Spitze

Hier ist ein kleiner Tipp, den Sie wirklich lieben könnten. Nehmen wir einmal an, Sie haben den gleichen Inhalt in mehreren Domain-Namen und möchten nicht für jede Ihrer Domains einen anderen Code hinzufügen. Sie können die Dateiprüfung für mehrere Domains sehr einfach durchführen.

Treffen Sie den AND-Operator: && Mit diesem Befehl können Sie im ersten Checker so viele Domänen hinzufügen, wie Sie möchten. Lass mich dir zeigen wie! :)

Single Domain Checker:

(pageDomain! = "domainName.com")

Multiple Domain Checker:

((pageDomain! = "domainName.com") && (pageDomain! = "mydomain.com") && (pageDomain! = "hisdomain.com")) wirklich einfach, nicht wahr??


Fazit

Nun, das schließt es ein. Wie Sie alle wissen, ist der vollständige Schutz von Flash-Dateien nie zu 100% garantiert. Dies ist jedoch nur ein weiterer Schritt, um Ihre Website sicherer, besser und sicherer gegen Dateidiebstahl zu machen. Vergessen Sie nicht, Ihre Dateien zu verschlüsseln, bevor Sie sie dem Server hinzufügen! Vielen Dank, dass Sie dieses Tutorial gelesen haben. Ich hoffe, es war hilfreich für Sie. Wenn Sie weitere Hilfe benötigen, zögern Sie nicht, Ihre Fragen im Kommentarbereich zu hinterlassen.