使用 nginx 阻止非完整请求

使用 nginx 阻止非完整请求

我有一个类似 YouTube 的管道网站,一些 Android 应用程序不断窃取视频临时链接,例如:

https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_30mb.mp4?Key=HUi_kuAjHyUHVGccqoYCAA&Expires=1578620165

他们将其与自己的播放器一起使用,这导致我的带宽使用量很高。

无法阻止 IP 地址,因为它是用户 IP,而不是应用程序本身,而且无法判断它是我的用户还是应用程序用户,我也尝试过根据用户代理 + 引荐来源进行阻止,但他们伪造了它,

由于应用程序的性质,它只需要从页面本身获取视频直接链接,而不会获取所有页面资源,所以我想尝试阻止该页面的非完整请求。如果有人只请求该页面的一部分,那么必须阻止它,但如果请求的是整个页面,那么应该允许它。

答案1

在基本服务器配置中,做到这一点并不容易。对方总是能够伪造他们的请求以绕过任何阻止或速率限制控制。

无需身份验证的唯一方法是使用 Nginx 键值存储。

在这种情况下,对静态 HTML 页面的初始请求将根据请求参数(例如代理、引荐来源、IP 地址)的哈希值创建一个键:值对。

对媒体资产的任何后续请求都必须在提供该资产之前确认该哈希值的密钥存在。

从技术上来说,这也可以被欺骗,但会给其他人带来更多的工作量。

您可能需要编写几行 lua 代码来合并到 Nginx 中以将其绑定在一起。

相关内容