今天,您将学习如何免费使用 Cloudflare Workers 来阻止代理 IP(免费的)。
正如您现在已经知道的那样,Cloudflare 提供 托管列表 。这些仅适用于企业客户。
他们的托管列表比我们在这里所做的更有效,但是考虑到它是免费的,我们的方法还是不错的。
为了获得额外的好处,您可以自定义返回的“阻止”页面以使用您的自定义安全 😁
为什么要阻止代理?
在我的另一篇文章中,有人向我提问,例如“你到底为什么要阻止 TOR?”。与 TOR 一样,这些代理总是被滥用。
他们被滥用以创建多个虚假帐户、滥用促销、尝试黑客攻击、抓取等等。如果你对你的网站很认真,你应该阻止代理。尤其是如果您有一家小型商业商店。
我还想提一下,因为这些代理被用于诈骗、垃圾邮件和其他东西,它们的名声很差。来自不良声誉 IP 的流量 损害您的 SEO 。
阻止免费代理
正如我在阻止 TOR 的 其他文章 中所解释的,这非常相似。我们有一个将代理 IP 存储在 Workers KV 中的工作,您只需查询它们。
唯一的主要区别是我们没有特定或可靠的 API 来获取这些代理 IP,因此我们必须尽可能地抓取或下载它们。
结合抓取和下载代理 IP 列表,我们可以完全免费(嗯,几乎免费)实现这一目标。
服务工作者
我在 Github 上为您准备了一个随时可用的 worker。
您所要做的就是克隆它,配置需求并发布它。
简单配置
要设置这个工人,请参考我的另一篇文章(因为我不想复制内容):
工作人员配置为每 10 分钟运行一次,如果您想更改此设置,只需编辑 wrangler.toml
。
更长的时间会减少您每月的 Workers 使用量,但不会那么有效,因为这些免费的代理 IP 列表平均更新大约 10 分钟。
建议尽可能频繁地更新列表,以确保捕获免费代理的滥用者。
易于使用
正如我们在我关于阻止 TOR 的另一篇文章中所做的那样,用法是相同的。不同的是,现在 KV 命名空间被称为 PROXIES_COMBINED_LIST
并且缓存设置为仅 2 分钟。
下面是一个简单的启动脚本,您可以简单地将其复制并粘贴到新的或现有的工作人员中:
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}
测试
就像其他帖子一样(同样,我不想复制内容),我给你一个简单的准备好使用的 starter worker:
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}
不要忘记将 KV 绑定添加到此工作人员。
部署上述工作人员后,我们启动 Chrome,获取免费代理,配置 Proxy SwitchyOmega 并测试:
如您所见,它完全按预期工作。代理 IP 被封锁了,至少我们能找到免费的。
请务必注意,付费代理不会被阻止,因为我们无权访问它们,但如果您愿意订阅它们,您可以这样做。
但同样重要的是要知道您可以添加更多网站/api 来抓取和下载。
费用
在我的另一篇文章中,我已经解释了这些工人使用的尽可能降低成本的策略,这个工人也不例外。
但是,由于我们需要更频繁地更新列表,因此使用更改为:6 WRITE(s) x 24 HOUR(s) = 144 WRITE(s) per Day,最终每 31 次 WRITE(s) 4464天)。
不幸的是,这还不足以“适应”工人的免费限制,所以我强烈建议您每月投资 5 美元进行升级。然后,您将有 1,000,000(一百万)个 WRITE(s) 限制。
如果您不乐意这样做,则必须牺牲使用量并决定您是否希望仅阻止 TOR 或代理。阻止 TOR 已经“符合”免费限制,但代理不会;因此,您需要将代理的 cron 时间从 10 分钟更改为 1 小时。
同样,我强烈建议您升级,以便您可以同时使用这两个工人。
有用的链接
- 开始使用牧马人: https://developers.cloudflare.com/workers/wrangler/get-started/
- 开始使用 Workers: https://developers.cloudflare.com/workers/get-started/quickstarts/
- 设置 KV 绑定: https://developers.cloudflare.com/workers/runtime-apis/kv/#kv-bindings
就是这样,我希望这篇文章和工具对你有所帮助。
让我知道你的想法!
评论