Frage

Lassen Sie uns sagen, dass wir ein Bild in der Google App Engine haben und Websites, es sind hotlinking. Wie kann ich den Domain-Namen der Websites finden?

Mein erster Gedanke war:

  

request.client

und dann ein Reverse-Lookup tun, aber das ist es nicht möglich, in GAE und viel Zeit in Anspruch nehmen würde. Ich bin mir ziemlich sicher, dass es eine Eigenschaft, die ich die URL der Website erhalten kann, den die Datei anfordert (Irgendwo in Anfrage?). GAE hat einen anfordern Klasse, aber ich konnte es nicht macht es in web2py arbeiten.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie können leicht die Referrer aus den Request-Header erhalten. Diese Referrer gefälscht werden können, aber die meisten Menschen fälschen es nicht, und es ist bereits gelöst.

Es gibt keine automatische Möglichkeit, die DNS anders als manuell lösen, es zu lösen. Wie Sie gesagt hat, nimmt eine DNS-Auflösung zusätzliche Zeit und es macht keinen Sinn für web2py oder einen anderen Rahmen, es zu tun.

Andere Tipps

Wenn Sie nur den Domain-Namen, um herauszufinden suchen (nicht die Anfragen zu blockieren, indem ein Skript ausgeführt wird, wenn die Bild-URL angefordert wird), dann werden sie in den Anforderungsprotokollen sein. geht im Admin-Dingen auf „Protokolle“, „Anfragen nur“ wählen Sie aus der Drop-down. Wenn Sie „Optionen“ erweitern Sie auf den entsprechenden Dateinamen filtern.

Erweitern Sie dann jede Anforderung Protokolleintrag und der Referer ist entweder ein Bindestrich, oder die Zeichenfolge in Anführungszeichen unmittelbar nach dem 200 (oder was auch immer) Statuscode und die Größe übertragen. Die Chancen sind sehr hoch, dass nicht alle Clients blockiert haben oder die Header-Spoofing, so die URLs verknüpft sehen werden.

Sie können auch die Protokolle laden Sie das SDK und suchen / Prozess lokal:

appcfg.py --email=whatever request_logs some_filename
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top