2009-08-08 6 views
2

Imaginons que nous ayons une image dans Google App Engine et que les sites la diffusent en mode hotline. Comment puis-je trouver les noms de domaine des sites?Recherche du nom de domaine d'un site diffusant un lien hypertexte dans le moteur de l'application Google à l'aide de web2py

Ma première pensée a été:

request.client

puis faire une recherche inversée mais qu'il est impossible dans GAE et prendrait beaucoup de temps. Je suis assez sûr qu'il y a une propriété qui me permet d'obtenir l'URL du site qui demande le fichier (quelque part dans la demande?). GAE a un Request class mais je ne pouvais pas le faire fonctionner à l'intérieur de web2py.

Des idées?

Répondre

2

Vous pouvez facilement obtenir le référant à partir des en-têtes de demande. Ce référent peut être usurpé, mais la plupart des gens ne l'usurpent pas et il est déjà résolu.

Il n'existe aucun moyen automatique de résoudre le DNS autrement que manuellement. Comme vous l'avez dit, une résolution DNS prend plus de temps et cela n'a aucun sens pour Web2Py ou tout autre framework de le faire.

+0

J'ai cherché des en-têtes de demande et referer mais pas d'info pour web2py –

+0

« la plupart des gens ne falsifient pas "- et en particulier il peut être usurpé par le client, mais je ne pense pas par le serveur qui relie directement l'image? Sauf si JavaScript peut spécifier le http-referer d'une requête. Les chances sont que le client ne sait pas ou se soucie de ce qui se passe. –

+0

request.env.http_referrer – Unknown

1

Si vous cherchez simplement à trouver les noms de domaine (pour ne pas bloquer les requêtes en exécutant un script lorsque l'URL de l'image est demandée), ils apparaîtront dans les journaux des demandes. Dans le menu admin, allez dans "Logs", sélectionnez "Demandes seulement" dans la liste déroulante. Si vous développez "Options", vous pouvez filtrer sur le nom de fichier approprié.

Ensuite, développez chaque entrée du journal des demandes, et le référant est un trait d'union, ou la chaîne entre guillemets immédiatement après le code d'état 200 (ou autre) et la taille transférée. Les chances sont très élevées que tous les clients n'ont pas bloqué ou falsifié l'en-tête, vous verrez donc les URL liées.

Vous pouvez télécharger les journaux à l'aide du SDK, et la recherche/processus les localement:

appcfg.py --email=whatever request_logs some_filename 
Questions connexes