今天,您將學習如何免費使用 Cloudflare Workers 來阻止代理 IP(免費的)。
正如您現在已經知道的那樣,Cloudflare 提供 託管列表 。這些僅適用於企業客戶。
他們的託管列表比我們在這裡所做的更有效,但是考慮到它是免費的,我們的方法還是不錯的。
為了獲得額外的好處,您可以自定義返回的“阻止”頁面以使用您的自定義安全 😁
為什麼要阻止代理?
在我的另一篇文章中,有人向我提問,例如“你到底為什麼要阻止 TOR?”。與 TOR 一樣,這些代理總是被濫用。
他們被濫用以創建多個虛假帳戶、濫用促銷、嘗試黑客攻擊、抓取等等。如果你對你的網站很認真,你應該阻止代理。尤其是如果您有一家小型商業商店。
我還想提一下,因為這些代理被用於詐騙、垃圾郵件和其他東西,它們的名聲很差。來自不良聲譽 IP 的流量 損害您的 SEO 。
阻止免費代理
正如我在阻止 TOR 的 其他文章 中所解釋的,這非常相似。我們有一個工人將代理 IP 存儲在工人 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
就是這樣,我希望這篇文章和工具對你有所幫助。
讓我知道你的想法!
評論