Aujourd’hui, vous apprendrez à bloquer les adresses IP proxy (gratuites) à l’aide de Cloudflare Workers gratuitement.
Comme vous le savez déjà, Cloudflare propose des listes gérées . Ceux-ci sont disponibles uniquement pour les clients Enterprise.
Leurs listes gérées sont plus efficaces que ce que nous faisons ici, mais néanmoins notre méthode est décente étant donné qu’elle est gratuite.
Pour un bonus supplémentaire, vous pouvez personnaliser la page de “blocage” renvoyée pour la désactiver avec votre sécurité personnalisée 😁
Pourquoi bloquer les proxys ?
J’ai été interrogé sur mon autre message par certaines personnes comme “pourquoi diable bloqueriez-vous TOR?”. Comme avec TOR, ces proxys sont toujours abusés.
Ils sont exploités pour créer plusieurs faux comptes, abuser des promotions, tenter de pirater, gratter et bien plus encore. Si vous êtes sérieux au sujet de votre site Web, vous devez bloquer les proxys. Surtout si vous avez un petit magasin de commerce par exemple.
Je voudrais également mentionner que parce que ces procurations sont utilisées pour l’arnaque, le spam et d’autres choses, elles ont une mauvaise réputation. Le trafic provenant d’adresses IP de mauvaise réputation nuise à votre référencement .
Bloquer les proxys gratuits
Comme expliqué dans mon autre article sur le blocage de TOR, c’est extrêmement similaire. Nous avons un travailleur qui stocke les adresses IP proxy dans Workers KV et vous les interrogez simplement.
La seule différence majeure est que nous n’avons pas d’API spécifique ou fiable pour obtenir ces adresses IP proxy, nous devons donc les récupérer ou les télécharger là où nous le pouvons.
En utilisant une combinaison de grattage et de téléchargement de listes d’adresses IP proxy, nous pouvons atteindre cet objectif de manière entièrement gratuite (enfin, presque gratuite).
Service worker
J’ai préparé pour vous un worker prêt à l’emploi sur Github .
Tout ce que vous avez à faire est de le cloner, de configurer les exigences et de le publier.
Configuration facile
Pour configurer ce travailleur, veuillez vous référer à mon autre article (car je ne veux pas dupliquer le contenu):
Le travailleur est configuré pour s’exécuter toutes les 10 minutes, si vous voulez changer cela, modifiez simplement wrangler.toml
.
Des périodes plus longues réduiront votre utilisation mensuelle de Workers, mais ne seront pas aussi efficaces car ces listes d’adresses IP proxy gratuites se mettent à jour environ 10 minutes en moyenne.
Il est recommandé de mettre à jour la liste aussi souvent que possible pour s’assurer que les abuseurs de proxys gratuits sont arrêtés.
Utilisation facile
Exactement comme nous le faisons dans mon autre article sur le blocage de TOR, l’utilisation est la même. Avec la différence que maintenant cet espace de noms KV s’appelle PROXIES_COMBINED_LIST
et le cache est défini sur seulement 2 minutes.
Ci-dessous un script de démarrage simple que vous pouvez simplement copier et coller dans un travailleur nouveau ou existant:
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", {
7 headers: {
8 'content-type': 'text/html;charset=UTF-8',
9 },
10 status: 403
11});
12}
Essai
Tout comme l’autre article (encore une fois, je ne veux pas dupliquer le contenu), je vous donne un outil de démarrage simple et prêt à l’emploi:
1addEventListener("fetch", event => {
2 event.respondWith(handleRequest(event.request))
3})
4
5const html = `<!doctype html>
6<html lang="en">
7 <head>
8 <title>Access Denied</title>
9 <meta charset="utf-8">
10 <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
11 <meta name="robots" content="noindex, nofollow" />
12 <meta name="viewport" content="width=device-width, initial-scale=1">
13 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
14 </head>
15 <body>
16 <div class="container">
17 <h1 class="mt-5 text-center">Oops!</h1>
18 <h2 class="mt-2 text-center text-danger">Proxies are not allowed.</h2>
19 </div>
20 </body>
21</html>`;
22
23async function handleRequest(request)
24{
25 const clientIP = request.headers.get('CF-Connecting-IP');
26 const ipset = await PROXIES_COMBINED_LIST.get("ipset", { type: "json", cacheTtl: 120 });
27
28 if (ipset[clientIP])
29 {
30 return new Response(html, {
31 headers: {
32 'content-type': 'text/html;charset=UTF-8',
33 },
34 status: 403
35 });
36 }
37
38 const response = await fetch(request);
39
40 return response;
41}
N’oubliez pas d’ajouter la liaison KV à ce travailleur.
Avec le travailleur ci-dessus déployé, nous lançons Chrome, récupérons un proxy gratuit, configurons Proxy SwitchyOmega et testons :
Comme vous pouvez le voir, cela fonctionne exactement comme prévu. Les adresses IP proxy sont bloquées, du moins celles gratuites que nous avons pu trouver.
Il est important de noter que les procurations payantes ne sont pas bloquées puisque nous n’y avons pas accès, mais si vous êtes prêt à vous y abonner, vous pouvez le faire.
Mais il est également important de savoir que vous pouvez ajouter plus de sites Web/API à gratter et à télécharger.
Frais
Dans mon autre post, j’ai expliqué la stratégie utilisée chez ces travailleurs pour minimiser les coûts autant que possible, ce travailleur n’est pas différent.
Cependant, en raison du fait que nous devons mettre à jour la liste plus souvent, l’utilisation passe à : 6 ECRITURE(s) x 24 HEURE(s) = 144 ECRITURE(s) par jour, se terminant par 4464 ECRITURE(s) par 31 Jours).
Malheureusement, cela ne suffit pas pour “s’adapter” à la limite gratuite de travailleurs, je vous suggère donc fortement d’investir 5$/mois pour la mise à niveau. Vous aurez alors une limite de 1 000 000 (un million) WRITE(s).
Si vous n’êtes pas content de le faire, vous devez sacrifier l’utilisation et décider si vous souhaitez bloquer uniquement TOR ou Proxies. Le blocage de TOR “s’inscrit” déjà dans les limites gratuites, mais pas les procurations; vous devrez donc changer le temps cron à 1 heure au lieu de 10 minutes pour les proxys.
Encore une fois, je vous recommande fortement de mettre à niveau afin que vous puissiez utiliser les deux travailleurs.
Liens utiles
- Pour commencer avec Wrangler: https://developers.cloudflare.com/workers/wrangler/get-started/
- Pour démarrer avec Workers: https://developers.cloudflare.com/workers/get-started/quickstarts/
- Pour configurer les liaisons KV: https://developers.cloudflare.com/workers/runtime-apis/kv/#kv-bindings
Voilà, j’espère que cet article et cet outil vous ont aidé.
Dis moi ce que tu penses!
Commentaires