大部分 Git 平台,如 Github、Gitlab 等,会在打开仓库时自动渲染 README.md,而我们利用这一特性,通过对 README.md 中的图片访问日志加以记录,可以实现追查代码泄露的目的。
如果你还没有 Cloudflare 账号,可以申请一个。
登录 Cloudflare 后,进入 Workers 页面,点击 KV。

添加一个 Cloudflare KV,起名 ref,用于记录访问记录。

创建 Cloudflare Worker,起名 img,用于记录请求信息,并转发图片资源请求。

代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| addEventListener('fetch', (event) => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { let response; if (request.url.slice(-4).toLowerCase() === '.png') { const ref = request.headers.get('referer'); if (ref) { const time = new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' }); const ip = request.headers.get('CF-Connecting-IP'); const ua = request.headers.get('User-Agent'); const key = `Referer: ${ref}`; const val = `时间: ${time}\nIP: ${ip}\nUA: ${ua}`; await REF.put(key, val, { expirationTtl: 60 * 60 * 24 * 365 }); } const redirect = new Request('https://cdn.jsdelivr.net/gh/imaegoo/image/1x1_ffffff00.png'); response = await fetch(redirect); } else { response = new Response('not found', { status: 404 }); } return response; }
|
将 KV ref 的命名空间绑定到 Worker img。

在仓库的 README.md
中插入图片
1
| 
|
到 KV ref 中查看效果


利用同样的思路和方法,我们还可以追查网站文章未经授权的转载,试试看!