Perché devo bloccare i Fakebot uno per volta?

by Davide (@craaash80)

Diversi utenti, nel tempo, hanno richiesto la possibilità di bloccare i Fakebot rilevati in una volta sola (es. 1000).
Come sempre accade su internet, qualcuno l'ha fatto con la giusta dose di umiltà di chi sa che un certo argomento tecnico non è il proprio pane, qualcun altro in modo supponente e aggressivo atteggiandosi a "espertone del web" con tanto di link improbabili a wikipedia (ma d'altra parte su Wikipedia si può anche diagnosticare una malattia, no? Perché contattare un medico...)

Facciamo la doverosa premessa che twitterfakebotfinder.eu non è un sito a scopo di lucro, e quindi nasce da una collaborazione di più persone assolutamente volontaria e GRATUITA.

Però il motivo principale per cui non abbiamo implementato la funzionalità di blocco massivo non è questo.

La difficoltà non risiede certo nell'aggiungere una casellina "Seleziona tutto" in stile posta elettronica, che è l'ovvio modo in cui a livello grafico verrebbe implementata tale funzionalità, ci vorrebbero cinque minuti per farlo.

Il problema risiede nelle limitazioni che Twitter impone alle chiamate fatte dalle app.
Limitazioni che, con la versione attuale, sono particolarmente stringenti.
Utilizzando un'app, ogni utente ha una finestra di 15 chiamate ogni 15 minuti.
(Confronta https://dev.twitter.com/rest/public/rate-limiting e https://dev.twitter.com/rest/public/rate-limits)

Superato questo limite, twitter restituisce un errore chiamato "API RATE LIMIT". A quel punto l'utente deve aspettare la successiva finestra di 15 minuti.
Noi, dove possibile, aggiriamo questo problema facendo poche chiamate "di gruppo".
Tuttavia, anche così ci sono dei limiti, ad esempio la chiamata che recupera i dettagli degli utenti (e che usiamo per restituirvi la tabellina con i risultati dei Fakebot) accetta al massimo 100 utenti.
Questo vincolo e quello sopra sono i motivi per cui restituiamo solo i primi 100 utenti fakebot.

La funzionalità di blocco, invece, è una chiamata singola: significa che non consente di specificare in una volta sola un gruppo di utenti da bloccare.
(confronta https://dev.twitter.com/rest/reference/post/blocks/create)

Questo significa 1 utente bloccato = 1 chiamata. Al netto delle chiamate che già facciamo per recuperare la lista di fakebot, significa poterne bloccare una decina nel primo quarto d'ora e 15 per ogni quarto d'ora successivo. (vedi http://stackoverflow.com/questions/30847789/add-a-larger-number-of-block-users-via-one-twitter-api-request)

Oltretutto, se l'applicazione raggiunge troppo spesso i limiti massimi, Twitter la mette in blacklist. Quindi il limite reale di buon senso è 5 nel primo quarto d'ora e 10 per ogni quarto d'ora successivo.
Quindi, se un utente ha da bloccare 100 fakebot, dovrebbe tenere il browser aperto in "Attendere prego" (senza navigare da altre parti) per almeno 150 minuti (2 ore e mezzo).
Se ne ha più di 100 dovrebbe comunque poi rilanciare il tool per avere la lista dei successivi 100.

Dato che un utente medio, manualmente, ci mette meno di 150 minuti ad effettuare la medesima operazione per 100 fakebot, e che il blocco è comunque un'operazione che è meglio valutare caso per caso, abbiamo quindi ritenuto inutile tale sviluppo.

Teniamo anche conto del fatto che noi non salviamo i dati di autenticazione degli utenti, quindi se l'utente rimane inattivo per troppo tempo, ad un certo punto la sessione scade.

L'unica soluzione che appare praticabile (ma non è più uno sviluppo web) è una specie di "job" (tipo cron di linux) che processa i dati a blocchi di 10 da una specie di "coda" che viene salvata da qualche parte (es. database). Ma non c'è garanzia che funzioni nelle tempistiche necessarie per twitter (il token di autenticazione potrebbe non essere più valido al momento in cui lo usiamo).
Comunque, immaginando che il meccanismo stia in piedi, a quel punto potremmo restituire all'utente un messaggio del tipo "La tua richiesta è stata presa in carico e verrà evasa nelle prossime 24 ore".
E, a voler fare le cose fiche, lo si potrebbe pure avvisare quando finito.

Questa è una cosa che costa. Farlo in regime di volontariato è troppo oneroso per una persona sola.

Quindi, se ci sono programmatori che hanno voglia di contribuire (in modo GRATUITO) con le seguenti conoscenze:



Mi contattino pure su twitter (https://twitter.com/craaash80) e ci facciamo una pensata.

Un saluto e sempre ABBASSO I FAKEBOT!
Davide (@craaash80)

Privacy Policy
Torna indietro

Questo sito è stato creato usando Odoo.
Per maggiori informazioni, visitare il sito http://www.odoo.com