【问题标题】:how to ip proxy in django route如何在 Django 路由中设置 IP 代理
【发布时间】:2023-02-07 05:53:51
【问题描述】:

有像“XYZ.com”和“ABC.com”这样的网站,这些网站只能使用这样范围的 IP 地址访问。

我们拥有公共 IP,并且可以访问使用该第三方网站。 (只有办公场所我们才能访问那些网站)

我必须在 django 中开发一个网站 (djangoproxy.com),这样我就可以从公共 ip 范围之外访问那些第三方网站。 所以我打算访问那些网站,比如 XYZ.djangoproxy.com, ABC.djangoproxy.com 有一个条件,即访问仅基于经过身份验证的用户。所以我必须在 djangoproxy.com 上为真实用户编写代码。成功登录后,在同一浏览器选项卡中打开第三方网站。

已经检查了一些用于 vpn 的 python 包, https://gist.github.com/Lazza/bbc15561b65c16db8ca8

参考: Python requests, change IP address

如果可以使用 python 代码或任何 Web 服务器配置开发此功能,您能指导我吗? 我正在使用 NGINX 作为 Web 服务器来托管 djangoproxy.com。

【问题讨论】:

  • 您想使用 Django 创建代理/VPN 服务器吗?为什么要为此使用 Django?使用实际的代理/VPN 服务器...
  • @AbdulAzizBarkat 可能有用户在不同的设备上使用它。我如何为所有这些用户使用 VPN 服务器用户?
  • 您可以使用 NGINX 或 Apache 实现代理
  • @BhavyaPeshavaria 我们如何管理代理以使用 NGINX 或 Apache 对用户进行身份验证?请分享文档链接
  • 找到了更好的解决方案,将其发布为答案。

标签: python django nginx proxy reverse-proxy


【解决方案1】:

您可以根据自己的目的使用django-revproxy。您的 Django 服务器将位于客户端和外部网站之间。您可以添加 Django 的身份验证逻辑,并只允许代理经过身份验证的客户端。

【讨论】:

    【解决方案2】:

    检查 HTTP_X_FORWARDED_FOR 标头会有所帮助,但并非万无一失,很容易伪造或省略。出于安全目的,通常不建议仅依赖此标头。我添加了 IP 白名单以进一步加强您的端点安全性。

    def post(self, request):
            allowed_ips = ['127.0.0.1']
            x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
            if x_forwarded_for:
                return HttpResponseForbidden('Requests from proxy servers are not allowed')
            if request.META['REMOTE_ADDR'] not in self.allowed_ips:
                print(request.META['REMOTE_ADDR'])
                return HttpResponseForbidden()
            input_text = request.GET.get('text')
            response = prometheus(input_text)
            return Response(response)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      相关资源
      最近更新 更多