Descargar imágenes remotas con Referer (¿posible plugin?)

Estoy trabajando en una migración a Discourse y conozco SiteSetting.download_remote_images_to_local. Es genial.

Sin embargo, cuando hago un rebake (lento) para descargarlos todos, noto que Photobucket sirve una imagen con marca de agua dependiendo de tu referente.

Eché un vistazo rápido y parece que la descarga se maneja en /lib/final_destination.rb. Probablemente podría parchearlo temporalmente solo para el rebake posterior a la migración, pero eso no maneja la situación hipotética de personas que enlaza directamente imágenes de hosts de imágenes deficientes en el futuro. Creo que cualquier persona sensata sabe que no debe usar Photobucket ahora, y no conozco otros que pongan marcas de agua, así que tal vez no sea un gran problema.

Mi pregunta es… ¿alguien ya ha resuelto esto? y ¿es esto algo que un plugin podría lograr? Todavía no he aprendido cómo funcionan los plugins.

Alternativamente, ¿sería una mala sugerencia de función establecer siempre el referente a scheme://domain/ al descargar una imagen remota? ¿Cuándo sería algo malo que Discourse lo hiciera?

Si quieres ver de lo que estoy hablando:

https://i1111.photobucket.com/albums/h475/scoobystuff/Stereo/S1080033.jpg

# marca de agua:
curl -LO \
  'https://i1111.photobucket.com/albums/h475/scoobystuff/Stereo/S1080033.jpg'
# sin marca de agua:
curl -LO --referer 'https://i1111.photobucket.com/' \
  'https://i1111.photobucket.com/albums/h475/scoobystuff/Stereo/S1080033.jpg'

No soy fan de las marcas de agua que ponen, pero en realidad violaría los términos de servicio de Photobucket enviar un remitente falso para ocultar la marca de agua, ya que uno de sus requisitos para las cuentas gratuitas es que la marca de agua se incluya cuando se utilizan para alojamiento. Las cuentas de pago no tienen esas marcas de agua añadidas.

1 me gusta

¿Qué?

¿Cómo llegas a esa conclusión? Ningún ToS ha sido acordado por una parte que simplemente descarga una imagen sin una cuenta (o incluso autenticación). o incluso se le presenta a dicha parte.

El ToS se aplica al cargador. Específicamente:

LA CUENTA GRATUITA NO PERMITE EL ALOJAMIENTO DE IMÁGENES. EN LA MEDIDA EN QUE, A NUESTRA ÚNICA Y ABSOLUTA DISCRECIÓN, PERMITAMOS QUE UNA CUENTA GRATUITA ALOJE UNA IMAGEN, LA IMAGEN INCLUIRÁ UNA MARCA DE AGUA DE PHOTOBUCKET QUE REFLEJE QUE LA IMAGEN ESTÁ ALOJADA POR NOSOTROS. SI PERMITIMOS CUALQUIER ALOJAMIENTO DE IMÁGENES GRATUITO, NOS RESERVAMOS EL DERECHO DE BLOQUEAR LA IMAGEN O DESENFOCAR Y MARCAR CON MARCA DE AGUA LA IMAGEN A NUESTRA ÚNICA Y ABSOLUTA DISCRECIÓN. SE ALIENTA ENCARECIDAMENTE A LOS TITULARES DE CUENTAS GRATUITAS A ACTUALIZAR A UNA CUENTA DE PAGO QUE PERMITA EL ALOJAMIENTO POR TERCEROS.

Además, esta es una declaración que simplemente informa sobre la capacidad de la cuenta (“LA CUENTA GRATUITA NO PERMITE EL ALOJAMIENTO DE IMÁGENES… SI PERMITIMOS CUALQUIER ALOJAMIENTO DE IMÁGENES GRATUITO…”), y al aceptar, el titular de la cuenta simplemente ha sido informado de ello. Si tuviera una cuenta gratuita de Photobucket y hubiera subido esa imagen, ni siquiera estaría infringiendo al enlazarla en este tema, ya que el lenguaje no implica que deba aceptar no realizar tal acción. El propósito de esta declaración es que un titular de cuenta gratuita no pueda, por ejemplo, demandar a Photobucket por denegación de servicio.

Compárese con la siguiente declaración que inventé y que no aparece en sus ToS reales:

EL TITULAR DE LA CUENTA GRATUITA SE COMPROMETE A NO UTILIZAR LA CUENTA PARA ALOJAR IMÁGENES Y NO ENLAZARÁ IMÁGENES EN OTROS LUGARES.

Un amigo hizo exactamente lo que estás sugiriendo en su instancia y Photobucket bloqueó su servidor. Déjame ver si encuentro mi copia del correo electrónico que le enviaron.

1 me gusta

En mi opinión, legalmente no es una violación de los términos de servicio, pero Photobucket, por supuesto, es libre de denegar el servicio a quien quiera a su discreción (a menos que esté contractualmente obligado). Me interesaría ver el correo electrónico. ¿Photobucket obtuvo la dirección de correo electrónico de la sección de contacto de su servidor o algo así?

¡Muchas gracias por la advertencia! Cuando retire todas las imágenes de Photobucket (en la migración final), me aseguraré de hacerlo a través de un proxy o algo similar. Aunque tampoco es que importe mucho, jeje. Nadie usa Photobucket ya. Tampoco dejaré el referer spoof en el servidor de producción, pero espero que de todos modos no sea necesario para cosas nuevas en el futuro.

Aunque no sería una violación de los Términos de Servicio, podría ser una violación de la DMCA (o una violación de otra ley de derechos de autor de otro país) eludir un método que se utiliza para proteger los derechos de autor de una imagen o controlar el acceso a la imagen original.

No creo que la falsificación de la cabecera referer cuente como ser “un buen ciudadano web”, y si la DMCA se aplica, incluso sería ilegal distribuir dicho software.

Muchos scripts de importación tienen su propio código para descargar archivos adjuntos, ¿has considerado crear una expresión regular y aplicar esa lógica a las imágenes de Photobucket en línea también, incluido el referer?

No creo que la infracción de derechos de autor o la elusión se apliquen en este caso porque los Términos de Servicio establecen que el cargador conserva todos los derechos (aunque quizás alguna ley se active de alguna manera en algún territorio). Sin embargo, tomo nota sobre el respeto del comportamiento de navegación estándar y ser un “buen ciudadano web”: cuando lo planteas de esa manera, creo que no tiene sentido lanzar el spoofing de referer como una característica oficial.

Sí, debería poder extraer las imágenes (sin marca de agua) para mi migración. En mi caso con el importador de phpbb, creo que lo más fácil es modificar temporalmente el propio Discourse para falsificar el referer al descargar imágenes remotas y hacer un rebake, ya que el importador no maneja el guardado de imágenes remotas (aparte de los avatares).

Principalmente quería escuchar a personas que hayan abordado este problema antes. También tenía curiosidad por saber si era técnicamente posible que un plugin lo hiciera (todavía me lo pregunto) y si tendría sentido que Discourse ofreciera oficialmente tal característica (no lo tiene).

1 me gusta

[quote=“shyguy, post:7, topic:260027”]
violación de derechos de autor o elusión
[/quote]El hecho de que el cargador conserve sus derechos —incluido el derecho a controlar cómo se utiliza y distribuye— no otorga a otros el derecho a modificar o eliminar marcas de agua de su contenido sin permiso.

La DMCA también cubre el control de acceso, que se aplicaría aquí (es decir, tienen derecho a servir esa imagen sin marca de agua solo si está rodeada de sus anuncios, y eliminar ese mecanismo es acceder a la imagen de otra manera a como quieren que lo hagas).

1 me gusta

jaja, tal vez. pero considera que algo como youtube-dl todavía está en github. eso hace que el spoofing de referer parezca bastante inocente en comparación, y créeme, la RIAA realmente intentó que lo retiraran. estuvo en las “noticias” por un tiempo si sigues ese tipo de noticias.

Permítame reformularlo: youtube-dl no está todavía en línea, sino que ha vuelto a estar en línea después de que fuera retirado.

Y eso es solo porque existen casos de uso legítimos.

Eso no significa que todos los usos sean legítimos.

No posees los derechos sobre las imágenes, reconócelo.

Puede que no posea los derechos de todas ellas, pero mis usuarios sí. Sin embargo, no estoy seguro de a dónde quieres llegar con eso. También han expresado su deseo de que se conserven contra la rotura de enlaces.

1 me gusta

jaja. por favor, entiendan que no estoy tratando de tener una discusión acalorada con ustedes. estamos todos bien aquí :slight_smile: :heart:. mi opinión pedante al respecto, sin embargo

sí, pero solo desmantelado debido a tácticas de intimidación. existe un argumento legal legítimo contra sus afirmaciones. en cualquier caso, nadie presionó más en github, y eso dice algo. las entidades no son más sedientas y mezquinas que la RIAA.

si consideran la respuesta de la EFF como el argumento/teoría legal predominante que convenció/envalentonó a github a rechazar las afirmaciones (espurias) de la RIAA, la razón real es más complicada que eso e, de hecho, incluso rechaza la afirmación de elusión.

seguramente si los expertos legales no creen que youtube-dl viole la definición de elusión del DMCA 1201(a), falsificar un referer no puede considerarse como tal elusión.

No es necesariamente cierto, por supuesto, pero al menos podrías asumir que tus usuarios te han otorgado una licencia en el momento en que lo publicaron en tu foro, por lo que sería su problema y no el tuyo. Así que tu caso de uso para esto es legítimo, estoy 100% convencido de ello.

Pero ningún proyecto de código abierto sensato se arriesgaría a ser eliminado de forma unilateral debido a algún argumento legal, incluso si tienen razón / resultan tenerla y el que se queja no. Así que creo que el script de importación es el lugar adecuado para esto.

1 me gusta