Youtube embeds missing

Ciao @Iceman,

Sì, ho appena cercato nel database per te e non sono riuscito a trovare alcuna tabella o campo in cui quella impostazione sia memorizzata (non era nella tabella site_settings)

Per quanto riguarda il tuo commento:

… e il blocco è ancora attivo dopo 5 ore

Non ho una conoscenza specifica su come Google gestisca questi “blocchi”, ma sospetto che dopo che i loro algoritmi attivano un blocco, possa volerci molto più tempo affinché Google lo “sollevi” (giorni o addirittura settimane).

D’altra parte, non ho alcuna conoscenza pratica di come funzioni questo processo di blocco o persino di qual è il “nome ufficiale Google di questo processo di blocco”.

Lo sai tu?

Esiste una pagina di supporto di Google in cui ne discutono? Qual è il nome esatto di questo processo di blocco a cui ti riferisci?

2 Mi Piace

Non c’è assolutamente una pagina di supporto in cui Google spieghi esattamente come funziona il loro blocco di prevenzione degli attacchi DoS o qualsiasi sistema correlato.

3 Mi Piace

Dopo sangue, sudore e lacrime, penso che sia risolto.

Tuttavia, non sono particolarmente “orgoglioso” della soluzione, ma hey, è Google: non parleranno né spiegheranno nulla, quindi… conclusioni:

  • Prima di tutto, una lezione importante: non abilitare IPv6 su DigitalOcean se si utilizza Discourse, perché il loro intervallo IPv6 è bloccato da YouTube.

  • Dopo aver risolto il problema di IPv6, a causa dell’aumento del traffico, indipendentemente dall’host (ne ho cambiato un paio di volte, che viaggio!), ciò che è successo dopo è che YouTube ha iniziato a bloccare il mio IP per l’installazione di Discourse, a causa della quantità di video YouTube pubblicati sul sito e di come Discourse li carica.

  • Per verificare questo blocco, è necessario usare il proprio server come proxy verso uno con un browser oppure eseguire un curl e cercare questa riga: “Sorry for the interruption. We have been receiving a large volume of requests from your network.” (c’è questo argomento come riferimento)

  • Grazie all’aiuto di @riking @neounix e @Overgrow ho eseguito una serie di comandi (che puoi leggere sopra) per provare a fermare, limitare o cambiare la frequenza con cui vengono renderizzati gli embed di YouTube. Per la maggior parte dei siti sarebbe stato sufficiente, ma avevamo l’ulteriore complicazione di essere stati migrati dopo che avevo provato un paio di host, quindi tutti i post precedenti dovevano essere renderizzati. In effetti, limitarlo a uno ogni ora in un certo senso ha risolto il problema all’inizio. Ma immagino che la mia community ami davvero condividere video, perché non è durato a lungo.

  • Ovviamente non c’è alcun feedback o aiuto da parte di YouTube, tranne un paio di thread sul loro forum con l’errore e tutti i commenti che dicono “sì, ho anche io quel problema” ma senza soluzioni.

  • Date le circostanze, ricordando la logica degli infomercial “Deve esserci un altro modo!”, ho optato per un approccio “Rambo”: ho acquistato un altro indirizzo IP. Poi ho aggiunto un cron che cambia l’IP in uscita ogni ora. Problema risolto.

È probabile che, se il sito continua a crescere e la gente continua a condividere quell’amore per YouTube, potrei aver bisogno di acquisire un terzo IP. Ma hey, fino a quando non troverò un modo corretto per realizzare un “Discourse distribuito” su K8S o qualcosa del genere, questa è la soluzione migliore.

Non è la soluzione più elegante, lo so.

Ancora una volta, grazie per tutto l’aiuto (e soprattutto per la pazienza, perché so che sono molto n00b con la combinazione Rails/Sidekiq/RubyConsole, ma sto cercando di migliorare leggendo il codice di Discourse).

Grazie!

7 Mi Piace

Geniale!

Questa è una soluzione creativa, efficace e “fuori dagli schemi”.

Complimenti per aver risolto il tuo enigma con stile e maestria!

4 Mi Piace

Seguendo i consigli e le raccomandazioni ricevuti, ho configurato un CDN CloudFront per il nostro bucket AWS S3 su Discourse alcuni giorni fa.

Ho aggiunto l’URL del CDN S3 nel pannello di controllo e successivamente ho eseguito il comando rebake su oltre 200.000 post.

A quel punto non ci ho pensato molto; tutto sembrava funzionare e il sistema ha iniziato a fare il suo lavoro per le successive 12 ore circa.

Abbiamo moltissimi, tantissimi video incorporati nel nostro Discourse. Siamo una comunità di droni/UAV e le persone pubblicano e condividono foto e video tutto il giorno. Ci sono decine di migliaia di video YouTube nei nostri post di Discourse.

Riflettendo…? Dopo aver aggiunto l’URL del CDN, probabilmente avrei dovuto eseguire il rebake solo sui post che corrispondevano a un pattern come *.jpg o simili :man_facepalming:t2: :cry:

Comunque, cosa è successo?

YouTube ha bloccato l’indirizzo IP del nostro server :pensive:

Non possiamo più oneboxare i link di YouTube; la nostra comunità si trova di fronte a:

429 Too Many Requests

:pensive:

(anche un semplice curl / wget eseguito direttamente sul server restituisce lo stesso errore)

Ovviamente siamo stati bloccati in qualche momento durante il rebake, dato che metà dei post esistenti che avevano video funzionanti ora non li hanno più :sob:

Suppongo che questo blocco sia permanente, ma come sapete, è impossibile trovare qualcuno da contattare su YouTube per chiedere scusa.

Nel caso improbabile che il blocco sia permanente, una domanda per @Iceman: potresti condividere i dettagli su come hai ottenuto un secondo indirizzo IP su Digital Ocean e quali modifiche hai apportato per instradare il traffico in “uscita” su quell’IP, lasciando invece il traffico in entrata sull’IP esistente?

E una domanda per tutti: qualcuno sa se questo blocco è probabilmente solo temporaneo? :crossed_fingers:t2 E/o c’è qualcosa che posso fare per risolvere i miei post YouTube ora molto rovinati?

Per una comunità fortemente orientata ai media, questa situazione è piuttosto disastrosa per noi.

1 Mi Piace

È improbabile che sia permanente; probabilmente sparirà con il tempo.

2 Mi Piace

Se qualcuno sta cercando la stessa modifica, puoi utilizzare un Remap invece di una rigenerazione: è quasi istantaneo e non effettua richieste a nessun server.

5 Mi Piace

Scusa per il ritardo nella risposta.

Non posso aiutarti con Digital Ocean; me ne sono andato quando il loro supporto per IPv6 era carente.

Continuo ad aggiungere sempre più indirizzi IP al “switch” che gestisce le richieste in uscita verso YouTube, ruotando tra gli indirizzi IP per evitare il ban. Ma alla fine vengono bannati e si crea un vicolo cieco. Se sei “bannato” e quell’IP continua a fare richieste, continua a essere bannato. Devi stare tra 1 e 8 ore senza effettuare richieste affinché YouTube ti “sbanni”. Più utenti hai e più video YouTube pubblicano, peggio va.

Grazie all’ultimo aggiornamento delle onebox è più facile individuarle (perché puoi vedere l’errore 429 direttamente in Discourse invece di cercarlo perché i video non vengono visualizzati correttamente). Tuttavia, con la mia limitata comprensione, mi chiedo se esista un modo migliore per gestire l’incorporamento dei video di YouTube. Perché quando il video viene riprodotto, la richiesta proviene dall’IP del client (immagino), ma quando il video viene visualizzato, è il tuo sito a fare la richiesta per ogni video.

3 Mi Piace

Grazie @Iceman :+1:t2:

È davvero utile saperlo.

Venerdì ho installato il plugin Onebox Assistant e ho instradato tutti gli onebox attraverso il proxy embed.rocks.

Oggi, sulla console del server, ho provato un wget casuale di un video YouTube.

Come previsto, siamo stati sbloccati!

Questo pomeriggio ho disabilitato di nuovo Onebox Assistant e stiamo recuperando direttamente, senza problemi finora.

Se non avessi fatto quello, credo che avresti ragione e non saremmo mai stati sbloccati, perché avremmo colpito YouTube ogni ora circa, dato che le persone pubblicano costantemente nuovi video :grimacing:

Grazie ancora :smiley:

3 Mi Piace

Grazie per le informazioni aggiuntive, @Iceman e @Richie. È un argomento che è emerso con una certa frequenza di recente, quindi qualsiasi dettaglio in più su come YouTube gestisce il rate limiting è estremamente utile.

Vogliamo anche rassicurare tutti: questi “banni” sono automatici in entrambe le direzioni. Se hai pazienza e riduci il numero di richieste a YouTube che il tuo sito invia, verrai rimosso dalla lista dei bambini cattivi di Babbo Natale nel giro di pochi giorni. :santa_claus::page_with_curl:

4 Mi Piace

Ho usato una variante di questo per elaborare delicatamente molti post. Un suggerimento a basso rischio e di grande risparmio di tempo, grazie @riking!

FYI ho usato questo per monitorare i progressi:

Post.where(baked_version: nil).count
1 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 2875 giorni. Non sono più consentite nuove risposte.