8 votes

Pourquoi les images de certaines pages Tumblr ne se chargent-elles pas, alors que l'utilisation de wget fonctionne ?

En aidant un ami avec sa connexion Internet parce que "certaines pages ne se chargent pas", j'ai remarqué que le problème était que les images des billets images de certains blogs ne se chargeaient pas sur le navigateur. J'ai trouvé cela bizarre pour les raisons suivantes :

  1. Seules les images qui font partie de l'article ne sont pas chargées. Les avatars des utilisateurs, les bannières, les en-têtes, les diverses images liées au thème et/ou à la page apparaissent toujours.
  2. Cela se produit avec n'importe quel navigateur sur l'ordinateur (testé sur Firefox et Chrome/ium avec et sans bloqueurs de publicité/script).
  3. Utilisation de wget sur les liens directs des images fonctionne.
  4. Cela ne s'applique pas à toutes les pages de Tumblr. La plupart se chargent correctement, mais lorsqu'on dresse une liste des pages dont les messages ne se chargent pas, les images montrent qu'elles proviennent pour la plupart du même groupe d'utilisateurs.
  5. Le problème semble être spécifique à un blog dans le sens où si l'image d'un certain blog ne se charge pas dans le navigateur, d'autres blogs (non affectés ou non) qui ont reblogué le même article ne chargeront pas non plus l'image dans le navigateur. À l'inverse, si un blog affecté est reblogué par un blog non affecté, l'image se charge correctement.
  6. Les images proviennent de publications Tumblr créées par les utilisateurs qui téléchargent une image et sont hébergées par Tumblr. Par exemple (cet exemple n'est pas l'un des blogs concernés), en ce poste d'image (choisis au hasard), este serait le lien direct vers l'image dans le message. Les messages contenant des images constituent automatiquement un lien vers une autre page dans Tumblr en utilisant un (généralement) version plus grande de l'image utilisée dans le message qui est plus proche de la taille de ce que l'utilisateur a téléchargé pour le message.

Quelle peut être la raison de ce phénomène ? Ce qui m'énerve vraiment c'est le fait que wget fonctionne, donc je pense que je peux supposer que ce n'est pas un problème avec la connexion réseau.

Mise à jour :

Ici est un exemple d'un article reblogé qui ne se charge pas sur les navigateurs. Le site blog principal a d'autres postes d'images qui se chargent correctement. Ce site est le lien direct vers l'image dans l'article et aquí est celui de la version plus grande (les deux ne se chargent pas ici). wget fonctionne pour les deux, mais en allant sur un lien direct avec Firefox, cette erreur apparaît :

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>A626307DF577B411</RequestId>
    <HostId>J9GxX1HY9vX3ElWjYf7M48ByvKXLRIwRBJ2al2voS3J/C+WhILWHyd3crFhhNtkXuvG0zaxBTxw=</HostId>
</Error>

RequestID y HostId change à chaque fois. Mon ami et moi sommes situés aux Philippines.

Mise à jour [2014/03/08]

Après d'autres tests et en répondant aux emails du support Tumblr, wget a cessé de fonctionner (erreurs 403 sur les liens directs) à certaines occasions.

Mise à jour [2014/03/09]

Désactiver les règles de Tumblr pour HTTPS-Everywhere semble parfois régler le problème.


Note :

  • Dans l'exemple du point 6, les liens directs pointent tous deux vers la même image. En général, cependant, celui qui est utilisé dans l'article sur l'image (par rapport à la page de l'image zoomable) utilise une version plus petite de l'image pour s'adapter au thème de la page. L'exemple utilise un thème conçu pour les grands écrans et n'a donc pas besoin de la version réduite.

10voto

Giacomo1968 Points 48326

UPDATE : Il semble que le problème de base avec les images qui ne se chargent pas provienne de la façon dont l'option Le plugin/extension HTTPS Everywhere de l'EFF a manipulé quelques URLs de Tumblr. Les développeurs ont été informés et une solution semble être en place . Cette réponse détaille le travail de détective effectué pour découvrir le problème tel qu'il est décrit dans la question initiale et peut s'avérer utile pour un débogage/diagnostic plus poussé si un problème similaire apparaît à l'avenir.


EDIT : Le contenu plus large sur le leeching d'image semble invalide. Je vais donc ajouter une nouvelle idée en haut de la page et laisser l'information sur le détournement d'image en bas de la page, au cas où elle serait utile à quelqu'un.

Idées de CDN Amazon CloudFront

D'accord, en utilisant les URL que vous avez fournies - ainsi qu'une partie de mon expérience réelle avec les configurations CDN d'Amazon CloudFront - je pense avoir découvert quelque chose. Il semble que la configuration CDN Amazon CloudFront de Tumblr s'étrangle pour une raison quelconque. Voici pourquoi je pense que c'est le cas.

Prenons cet exemple d'URL :

http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png

Maintenant, exécutons curl -I pour obtenir des informations sur l'en-tête de ce fichier :

curl -I http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png

La sortie pour cela serait quelque chose comme ceci :

HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 782141
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: max-age=1209600
Date: Thu, 05 Mar 2015 02:15:44 GMT
Server: nginx
X-Cache: Miss from cloudfront
Via: 1.1 7e54fc06cd70e4752fe050bbe5c130be.cloudfront.net (CloudFront)
X-Amz-Cf-Id: QyIUyzfaJJN3PU_xWkW0P-D2kjg_1cVenKzFAoY2PubgZQlBHWorZQ==

Maintenant, les choses auxquelles il faut faire attention ici sont les suivantes Date (la date et l'heure du fichier sur le point de terminaison CloudFront) et X-Cache (Amazon content delivery status). Le comportement typique d'Amazon CloudFront est que le premier accès transmettra un "Miss from cloudfront", puis si vous effectuez un autre accès de type curl -I tout de suite après, il devrait y avoir un Hit from cloudfront .

Mais ce n'est pas ce que je viens de voir. Voici une répartition de la Date y X-Cache l'état d'un groupe d'accès que j'ai fait :

  • Date: Thu, 05 Mar 2015 02:19:37 GMT = X-Cache: Miss from cloudfront
  • Date: Thu, 05 Mar 2015 02:19:39 GMT = X-Cache: Miss from cloudfront
  • Date: Thu, 05 Mar 2015 02:19:44 GMT = X-Cache: Miss from cloudfront
  • Date: Thu, 05 Mar 2015 02:19:50 GMT = X-Cache: Miss from cloudfront
  • Date: Thu, 05 Mar 2015 02:19:50 GMT = X-Cache: Hit from cloudfront
  • Date: Thu, 05 Mar 2015 02:19:50 GMT = X-Cache: Hit from cloudfront
  • Date: Thu, 05 Mar 2015 02:19:50 GMT = X-Cache: Hit from cloudfront

La raison pour laquelle il y a plusieurs articles avec les mêmes données exactes qui sont Hit from cloudfront vers la fin est parce que c'est ce qui se passe sur un CDN : si le point d'arrivée du CDN a le fichier, alors Date correspond à la date réelle de création/modification du fichier dont dispose ce point d'extrémité.

Vous remarquez que les quatre premiers accès sont espacés de quelques secondes, avec des dates/heures différentes et tous sont Miss from cloudfront n'est-ce pas ? Cela signifie que le point de terminaison du CDN ne fait que répondre qu'il y a eu une tentative d'accès à ce fichier à ces moments-là et que toutes les tentatives ont échoué.

Je pense donc que les systèmes de Tumblr ne sont pas en phase avec le CDN d'Amazon CloudFront ou que le CDN d'Amazon CloudFront n'est pas en phase avec Tumblr. Mais d'une certaine manière, les choses ne vont pas bien du côté du serveur. Et puisqu'il s'agit d'un CDN, une personne accédant aux fichiers à un endroit peut ne pas remarquer de problème alors qu'une autre personne à un autre endroit aura des difficultés à visualiser l'image.

Tout cela pour dire que je ne pense pas que ce problème puisse être facilement résolu du côté du client.


EDIT : L'auteur de l'article original a ajouté de nouvelles URL, et il s'agit toujours d'un problème de serveur, mais je voulais simplement publier les détails pour mémoire.

Idées de CDN EdgeCast et Highwinds

L'auteur de l'affiche originale a donc ajouté des précisions. Voici donc des détails supplémentaires basés sur l'article de blog qui sert d'exemple :

http://claystorks.tumblr.com/post/112741831192/soulmister-claystorks-windspeare-explain

Et ces URLs d'images sont fournies comme exemples d'URLs dans ce post :

https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png

https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png

Et ces deux URLs d'images échouent en effet. Mais de mon côté, en regardant le code source original de l'article de blog de Brooklyn, New York, USA, je ne vois pas ces URL EdgeCast ( gs1.wac.edgecastcdn.net ) URLs. Ce sont plutôt les URLs que je vois :

http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png

http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png

Ma première pensée est donc de savoir pourquoi l'affiche originale voit ces messages EdgeCast ( gs1.wac.edgecastcdn.net ). Mais si je fais un traceroute vers le site de 41.media.tumblr.com Je vois que c'est un serveur géré par Highwinds ( !?!?). En revanche, les URL initiales transmises par l'utilisateur d'origine utilisent l'attribut 36.media.tumblr.com et vous pouvez voir qu'ils sont gérés par les serveurs CDN Amazon CloudFront.

Tout cela pour dire - ce que j'ai déjà dit - que tout cela semble être un problème côté serveur avec Tumblr et leur gestion CDN. Mais de mon côté - à Brooklyn, New York, USA - je vois clairement que le contenu est livré comme prévu par les serveurs CDN de Highwinds ainsi que par les serveurs CDN d'Amazon CloudFront. L'origine de ces URL EdgeCast et la raison de leur échec échappent à tout contrôle du côté du client. Vous devez absolument contacter le personnel technique de Tumblr à ce sujet, car un utilisateur de bureau ne peut en aucun cas résoudre ce problème.


Idées d'accrochage d'images

Ce n'est peut-être plus d'actualité, mais c'est une référence.

Si tu dis ça, ça me donne un indice :

Utilisation de wget sur les liens directs des images fonctionne.

De nombreux sites ont mis en place des règles - généralement définies via Apache - qui empêchent le piratage des images. Plus de détails sur le fonctionnement de ces règles sont fournis ici et se résume ainsi :

En utilisant le fichier .htaccess, vous pouvez interdire les liens dynamiques sur votre serveur. qui tentent de créer un lien vers une image ou un fichier CSS sur votre site, par exemple, est soit bloqué (échec de la demande, comme une image cassée) ou se voit servir un contenu différent (par exemple, l'image d'un homme en colère).

D'après votre description - et le fait que vous pouvez accéder aux images via wget -me porte à croire que les images qui vous posent problème ne sont pas hébergées sur Tumblr par les utilisateurs, mais plutôt des images placées sur un blog Tumblr mais hébergées en réalité sur un autre site.

Lorsque des procédures standard de leeching d'images sont mises en place, l'affichage d'une image intégrée sur un site qui est hébergé sur un autre site - qui bloque le leeching - se traduirait par un lien d'image cassé ou peut-être une image "Stop Leeching !". En effet, les règles de base contre le leeching, comme celles de la page d'exemple, vérifient les référents des images pour s'assurer que la page qui demande l'image correspond au domaine qui l'héberge.

Ainsi, lorsque vous accédez à l'image via wget vous accédez directement à l'image. Les règles de piratage de l'image ne s'appliquent donc pas. Ainsi, vous pouvez obtenir l'image via wget mais pas lorsqu'il est intégré dans une autre page.

5voto

jdehesa Points 151

Je suis actuellement confronté à ce même problème. C'est un coffre-fort pour le travail - enfin, c'est une bande dessinée idiote exemple d'un blog affecté .

J'ai cependant constaté que le problème ne se produisait que dans Chrome pour moi. Après un certain temps, j'ai réalisé que la cause du problème était l'extension " HTTPS partout ." Lorsque je l'ai installé dans Firefox, j'ai eu le même problème là aussi. Et en fait, si je désactive la règle HTTPS "Tumblr (partial)" (qui, je suppose, signifie *.tumblr.com ), il fonctionne à nouveau correctement.

Donc, le problème semble être qu'au moins parfois Lorsque HTTPS est utilisé pour accéder à une image, vous êtes redirigé vers une URL EdgeCast non valide. Par exemple, l'URL de cette image fonctionne bien :

http://36.media.tumblr.com/57d2af15f7b21037364125f9f32c4379/tumblr_nktjzyNkv91s667kio1_1280.png

Mais si vous changez le protocole de http a https vous êtes redirigé vers cette URL qui ne fonctionne pas :

https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/57d2af15f7b21037364125f9f32c4379/tumblr_nktjzyNkv91s667kio1_1280.png

Je ne sais pas si cela compte comme une erreur du côté de Tumblr ou non. Je suppose que si les clients ne sont pas censés accéder à leurs serveurs multimédias avec HTTPS, on ne peut pas vraiment leur en vouloir.

EDIT : Et en fait, le problème semble avoir été traité comme indiqué dans ce fil de discussion GitHub .

1voto

userWCB Points 11

J'ai remarqué ce comportement davantage lorsque je suis sur mon opérateur mobile, T-Mobile. Je pense qu'il s'agit d'une sorte de mise en forme du trafic basée sur la taille de l'image ou d'une "mesure de difficulté" construite par l'opérateur pour le retraitement de cet élément.

Lors de tests précédents (il y a plus d'un an), j'ai ensuite partagé le message défectueux avec un ami qui possède Verizon, et l'image s'est chargée correctement.

Bien que je ne puisse pas tester l'image que je m'apprête à fournir - car mon ami n'est pas disponible - cette image ne se charge pas pour moi. J'utilise le système Android standard (5.0.1) sur un Nexus 5 et Chrome comme navigateur.

http://41.media.tumblr.com/efebad51567e927b8f130f9bdc4efae3/tumblr_ndvnpjcBZa1qewacoo1_500.png

Lorsque j'essaie de charger l'image directement, j'obtiens une erreur 504 gateway timeout.

EDIT : C'est @JakeGould qui poste l'image actuelle pour référence.

enter image description here

Autres tests et détails : Je suis à Baltimore MD, je fonctionne avec des données LTE et l'image suivante a fonctionné : http://40.media.tumblr.com/a5e0a96d36170c997aabad7efc630d3e/tumblr_njnalkSD7M1s5cyzso1_500.jpg

Des tests supplémentaires montrent que le PNG ne semble pas être le problème. La plupart des autres images que j'ai trouvées et qui ont fonctionné étaient un mélange de png et de jpg, mais toutes étaient sur des serveurs non "41".

Note finale : je suis rentré chez moi, j'ai sauté sur mon wifi -Comcast- avec mon téléphone -l'appareil que j'ai testé- et toutes les photos que je ne pouvais pas voir à cause du 504, je peux maintenant les voir.

EDIT : Je suis nouveau dans le monde des super-utilisateurs, j'ai modifié mon message pour qu'il soit plus factuel et moins discutable.

UPDATE : Le problème semble être lié au LTE. J'ai chargé tumblr, j'ai trouvé des images qui ne se chargeaient pas, j'ai forcé mon téléphone à passer en 3g, j'ai rechargé la page et toutes les images se sont affichées. J'ai rétabli le téléphone en LTE, vidé le cache et les images qui ne se chargeaient pas sous LTE se chargent maintenant.
(Je teste à nouveau et maintenant je ne peux pas reproduire. Donc peut-être que le comportement ci-dessus était un coup de chance).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X