Baixar Imagens Remotas com Referer (possível plugin?)

estou trabalhando em uma migração para o Discourse e sei sobre SiteSetting.download_remote_images_to_local. é incrível.

no entanto, quando eu (lentamente) refaço para baixá-los todos, estou percebendo que o Photobucket serve uma imagem com marca d’água dependendo do seu referenciador.

dei uma olhada rápida e parece que o download é tratado em /lib/final_destination.rb. eu poderia provavelmente corrigir isso temporariamente apenas para o refazimento pós-migração, mas isso não lida com a situação hipotética de pessoas linkando imagens de hosts de imagem ruins daqui para frente. eu acho que qualquer pessoa sã sabe que não deve usar o Photobucket agora, e eu não sei de outros que colocam marca d’água, então talvez não seja um grande problema.

minha pergunta é esta… alguém já resolveu isso? e isso é algo que um plugin poderia realizar? eu ainda não aprendi como os plugins funcionam.

alternativamente, seria uma sugestão de recurso ruim apenas definir sempre o referenciador para scheme://domain/ ao baixar uma imagem remota? quando seria uma coisa ruim o próprio Discourse fazer isso?

se você quiser ver do que estou falando:

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

# marca d'água:
curl -LO \
  'https://i1111.photobucket.com/albums/h475/scoobystuff/Stereo/S1080033.jpg'
# sem marca d'água:
curl -LO --referer 'https://i1111.photobucket.com/' \
  'https://i1111.photobucket.com/albums/h475/scoobystuff/Stereo/S1080033.jpg'

Não sou fã da marca d’água que eles colocam, mas na verdade violaria os termos de serviço do Photobucket enviar um referenciador falso para ocultar a marca d’água, pois um dos requisitos para contas gratuitas é que a marca d’água seja incluída ao usá-los para hospedagem. Contas pagas não recebem essas marcas d’água adicionadas.

1 curtida

o quê?

como você chega a essa conclusão? nenhum ToS foi acordado por uma parte que simplesmente baixa uma imagem sem conta (ou mesmo autenticação). ou mesmo apresentado a dita parte.

o ToS se aplica ao uploader. especificamente:

A CONTA GRATUITA NÃO PERMITE HOSPEDAGEM DE IMAGENS. NA MEDIDA EM QUE, A NOSSO EXCLUSIVO E ABSOLUTO CRITÉRIO, PERMITIMOS QUE UMA CONTA GRATUITA HOSPEDE UMA IMAGEM, A IMAGEM INCLUIRÁ UMA MARCA D’ÁGUA DO PHOTOBUCKET QUE REFLETE QUE A IMAGEM ESTÁ SENDO HOSPEDADA POR NÓS. SE PERMITIRMOS QUALQUER HOSPEDAGEM GRATUITA DE IMAGENS, RESERVAMO-NOS O DIREITO DE BLOQUEAR A IMAGEM OU BORRAR E MARCAR D’ÁGUA A IMAGEM A NOSSO EXCLUSIVO E ABSOLUTO CRITÉRIO. OS TITULARES DE CONTAS GRATUITAS SÃO FORTEMENTE ENCORAJADOS A ATUALIZAR PARA UMA CONTA PAGA QUE PERMITA HOSPEDAGEM DE TERCEIROS.

além disso, esta é uma declaração que apenas informa sobre a capacidade da conta (“A CONTA GRATUITA NÃO PERMITE HOSPEDAGEM DE IMAGENS… SE PERMITIRMOS QUALQUER HOSPEDAGEM GRATUITA DE IMAGENS…”), e ao concordar, o titular da conta apenas foi informado disso. se eu tivesse uma conta gratuita do photobucket e tivesse carregado essa imagem, eu nem estaria violando, pois a linguagem não implica que eu deva concordar em não fazer tal ação. o propósito desta declaração é para que um titular de conta gratuita não possa, por exemplo, processar o Photobucket por negação de serviço.

contraste isso com a seguinte declaração que inventei e que não aparece no ToS real deles:

O TITULAR DA CONTA GRATUITA CONCORDA EM NÃO USAR A CONTA PARA HOSPEDAGEM DE IMAGENS E NÃO FARÁ HOTLINK DE IMAGENS EM OUTROS LUGARES.

Um amigo fez exatamente o que você está sugerindo em sua instância e o Photobucket bloqueou o servidor dele. Deixe-me ver se consigo encontrar minha cópia do e-mail que eles enviaram a ele.

1 curtida

imo, isso não é uma violação dos Termos de Serviço, mas o Photobucket tem a liberdade de negar o serviço a quem quiser, a seu critério (a menos que seja contratualmente obrigado). Teria interesse em ver o e-mail. O Photobucket obteve o endereço de e-mail dele na seção de contato do servidor dele ou algo assim?

Muito obrigado pelo aviso! Quando eu remover todas as imagens do Photobucket (na migração final), terei certeza de fazê-lo através de um proxy ou algo assim. Não que isso realmente importe, lol. Ninguém mais usa Photobucket. Eu também não deixarei o referer spoof no servidor de produção, mas espero que isso não seja necessário de qualquer forma para coisas novas daqui para frente.

Embora não fosse uma violação dos Termos de Serviço, poderia ser uma violação da DMCA (ou uma violação de outra lei de direitos autorais de outro país) contornar um método usado para proteger os direitos autorais de uma imagem ou controlar o acesso à imagem original.

Não acho que falsificar o cabeçalho referer conte como ser “um bom cidadão da web”, e se a DMCA realmente se aplicar, seria até ilegal distribuir tal software.

Muitos scripts de importação têm seu próprio código para downloads de anexos, você considerou criar uma expressão regular e aplicar essa lógica a imagens inline do Photobucket também - incluindo o referer?

Eu não acho que violação de direitos autorais ou circunvenção se apliquem neste caso porque os Termos de Serviço afirmam que o remetente retém todos os direitos (embora talvez alguma lei seja acionada em algum território). No entanto, entendi o ponto sobre respeitar o comportamento padrão de navegação e ser um “bom cidadão da web” – quando você coloca dessa forma, acho que não faz sentido lançar o referer spoofing como um recurso oficial.

Sim, eu devo ser capaz de extrair as imagens (sem marca d’água) para a minha migração. No meu caso com o importador do phpbb, acho que o mais fácil é apenas modificar temporariamente o próprio Discourse para falsificar o referer ao baixar imagens remotas e fazer um rebake, já que o importador não lida com o salvamento de imagens remotas (além de avatares).

Eu estava principalmente querendo ouvir de pessoas que já enfrentaram esse problema antes. Eu também estava curioso se seria tecnicamente possível ter um plugin fazendo isso (ainda estou curioso) e se faria sentido o Discourse lançar oficialmente tal recurso (não faz).

1 curtida

[quote=“shyguy, post:7, topic:260027”]
violação de direitos autorais ou circunvenção
[/quote]O fato de o remetente reter seus direitos - incluindo o direito de controlar como ele é usado e distribuído - não dá a outros o direito de modificar ou remover marcas d’água de seu conteúdo sem permissão.

O DMCA também cobre controle de acesso, o que se aplicaria aqui (ou seja, eles têm o direito de veicular essa imagem sem marca d’água apenas se ela estiver cercada por seus anúncios, e remover esse mecanismo é acessar a imagem de outra forma como eles querem que você faça).

1 curtida

haha, talvez. mas considere que algo como youtube-dl ainda está no github. isso faz com que o referer spoofing pareça bastante inocente em comparação, e acredite em mim, a RIAA realmente tentou derrubá-lo. esteve nas “notícias” por um tempo se você acompanha esse tipo de notícia.

Deixe-me reformular: o youtube-dl não está ainda no ar, ele voltou ao ar depois de ter sido derrubado.

E isso só acontece porque existem casos de uso legítimos.

Isso não significa que todos os usos são legítimos.

Você não possui direitos sobre as imagens, reconheça isso.

Eu posso não ter os direitos sobre todas elas, mas meus usuários têm. Não tenho certeza de onde você quer chegar com isso, no entanto. Eles também expressaram o desejo de que sejam preservadas contra a quebra de links.

1 curtida

haha. por favor, entenda que não estou tentando iniciar uma discussão acalorada com vocês. está tudo bem aqui :slight_smile: :heart:. minha opinião pedante sobre isso, no entanto

sim, mas só foi derrubado por causa de táticas de intimidação. há um argumento legal legítimo contra as reivindicações deles. de qualquer forma, ninguém pressionou o github, e isso diz alguma coisa. não existem entidades mais sedentas e cruéis do que a RIAA.

se você considerar a resposta da EFF como o argumento/teoria legal predominante que convenceu/encorajou o github a rejeitar as reivindicações (espurias) da RIAA, a razão real é mais complicada do que isso e, na verdade, até rejeita a alegação de contorno.

certamente, se especialistas jurídicos não acreditam que o youtube-dl viola a definição de contorno do DMCA 1201(a), falsificar um referer não pode ser considerado como tal contorno.

Nem sempre é verdade, é claro, mas você poderia pelo menos assumir que seus usuários lhe deram uma licença no momento em que postaram em seu fórum, então seria problema deles e não seu. Portanto, seu caso de uso para isso é legítimo, estou 100% convencido disso.

Mas nenhum projeto de código aberto sã o arriscaria ser derrubado ex parte por causa de alguma disputa legal, mesmo que eles estejam / venham a estar certos e o reclamante não. Então, acho que o script de importação é o lugar certo para isso.

1 curtida