Oggi imparerete come bloccare gli IP Proxy (gratuiti) utilizzando Cloudflare Workers gratuitamente.
Come già sapete, Cloudflare offre Managed Lists . Queste sono disponibili solo per i clienti Enterprise.
Le loro Managed Lists sono più efficaci di quello che facciamo qui, ma comunque il nostro metodo è decente considerando che è gratuito.
Come bonus aggiuntivo, potete personalizzare la pagina di “blocco” restituita per sfoggiare la vostra sicurezza personalizzata 😁
Perché bloccare i Proxy?
Sono stato interrogato nel mio altro post da alcune persone tipo “perché mai dovresti bloccare TOR?”. Come per TOR, questi Proxy vengono sempre abusati.
Vengono abusati per creare account falsi multipli, sfruttare promozioni, tentare hacking, scraping e molto altro. Se prendete sul serio il vostro sito web, dovreste bloccare i Proxy. Specialmente se avete ad esempio un piccolo negozio online.
Vorrei anche menzionare che poiché questi Proxy vengono utilizzati per truffe, spam e altre cose, hanno una cattiva reputazione. Il traffico proveniente da IP con cattiva reputazione danneggia il vostro SEO .
Bloccare i Proxy gratuiti
Come spiegato nel mio altro articolo sul blocco di TOR, questo è estremamente simile. Abbiamo un worker che memorizza gli IP Proxy in Workers KV e li interrogate semplicemente.
L’unica grande differenza è che non abbiamo un’API specifica o affidabile per ottenere questi IP Proxy, quindi dobbiamo fare scraping o scaricarli dove possibile.
Utilizzando una combinazione di scraping e download di liste di IP Proxy, possiamo raggiungere questo obiettivo completamente gratis (beh, quasi gratis).
Service worker
Ho preparato un worker pronto all’uso per voi su Github .
Tutto quello che dovete fare è clonarlo, configurare i requisiti e pubblicarlo.
Configurazione facile
Per configurare questo worker fate riferimento al mio altro articolo (perché non voglio duplicare il contenuto):
Il worker è configurato per eseguire ogni 10 minuti, se volete cambiarlo basta modificare wrangler.toml.
Periodi più lunghi ridurranno il vostro utilizzo mensile di Workers, ma non saranno altrettanto efficaci perché queste liste gratuite di IP Proxy si aggiornano in media circa ogni 10 minuti.
Si raccomanda di aggiornare la lista il più spesso possibile per assicurarsi che gli abusatori di Proxy gratuiti vengano catturati.
Utilizzo facile
Esattamente come nel mio altro post sul blocco di TOR, l’utilizzo è lo stesso. Con la differenza che ora il namespace KV si chiama PROXIES_COMBINED_LIST e la cache è impostata a soli 2 minuti.
Di seguito uno script di avvio semplice che potete semplicemente copiare e incollare in un worker nuovo o esistente:
1const clientIP = request.headers.get('CF-Connecting-IP');
2const ipset = await PROXIES_COMBINED_LIST.get("ipset", { type: "json", cacheTtl: 120 });
3
4if (ipset[clientIP]) 0
5{
6return new Response("Proxies are Forbidden", {
7headers: {
8'content-type': 'text/html;charset=UTF-8',
9},
10status: 403
11});
12}Test
Come nell’altro post (ancora una volta, non voglio duplicare il contenuto), vi fornisco un semplice worker di avvio pronto all’uso:
1addEventListener("fetch", event => {
2event.respondWith(handleRequest(event.request))
3})
4
5const html = `<!doctype html>
6
7<html lang="en">
8 <head>
9 <title>Access Denied</title>
10 <meta charset="utf-8">
11 <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
12 <meta name="robots" content="noindex, nofollow" />
13 <meta name="viewport" content="width=device-width, initial-scale=1">
14 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
15 </head>
16 <body>
17 <div class="container">
18 <h1 class="mt-5 text-center">Oops!</h1>
19 <h2 class="mt-2 text-center text-danger">Proxies are not allowed.</h2>
20 </div>
21 </body>
22</html>`;
23
24async function handleRequest(request)
25{
26const clientIP = request.headers.get('CF-Connecting-IP');
27const ipset = await PROXIES_COMBINED_LIST.get("ipset", { type: "json", cacheTtl: 120 });
28
29if (ipset[clientIP])
30{
31return new Response(html, {
32headers: {
33'content-type': 'text/html;charset=UTF-8',
34},
35status: 403
36});
37}
38
39const response = await fetch(request);
40
41return response;
42}Non dimenticate di aggiungere il KV Binding a questo worker.
Con il worker sopra distribuito, avviamo Chrome, prendiamo un proxy gratuito, configuriamo Proxy SwitchyOmega e testiamo:
Come potete vedere, funziona esattamente come previsto. Gli IP Proxy sono bloccati, almeno quelli gratuiti che siamo riusciti a trovare.
È importante notare che i proxy a pagamento non sono bloccati poiché non abbiamo accesso ad essi, ma se siete disposti a sottoscriverli potete farlo.
Ma è anche importante sapere che potete aggiungere più siti web/API da cui fare scraping e scaricare.
Costi
Nel mio altro post ho spiegato la strategia utilizzata in questi worker per minimizzare i costi il più possibile, questo worker non è diverso.
Tuttavia, a causa del fatto che dobbiamo aggiornare la lista più spesso, l’utilizzo cambia a: 6 WRITE x 24 ORE = 144 WRITE al giorno, arrivando a 4464 WRITE per 31 giorni.
Sfortunatamente non è sufficiente per “rientrare” nel limite gratuito di Workers, quindi suggerisco fortemente di investire 5$/mese per l’upgrade. Avrete quindi un limite di 1.000.000 (un milione) di WRITE.
Se non siete contenti di farlo, dovete sacrificare l’utilizzo e decidere se volete bloccare solo TOR o i Proxy. Il blocco di TOR rientra già nei limiti gratuiti, ma i Proxy no; quindi dovreste cambiare il cron time da 10 minuti a 1 ora per i proxy.
Ancora una volta, raccomando fortemente di effettuare l’upgrade così da poter utilizzare entrambi i worker.
Link utili
- Per iniziare con Wrangler: https://developers.cloudflare.com/workers/wrangler/get-started/
- Per iniziare con Workers: https://developers.cloudflare.com/workers/get-started/quickstarts/
- Per configurare i KV Bindings: https://developers.cloudflare.com/workers/runtime-apis/kv/#kv-bindings
Bene, questo è tutto, spero che questo articolo e strumento vi abbia aiutato.
Fatemi sapere cosa ne pensate!
Commenti