Django 获取真实ip地址

这篇具有很好参考价值的文章主要介绍了Django 获取真实ip地址。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下面是真实的ip地址获取方法

request_data = {}
if request.environ.get("HTTP_X_REAL_IP", False):
    # 从环境信息获取
    request_data['ip'] = request.environ.get("HTTP_X_REAL_IP", None)
elif request.headers.get("X-Real-Ip", False):
    # 从头部信息获取
    request_data['ip'] = request.headers.get("X-Real-Ip", None)
else:
    # 获取一般的地址
    request_data['ip'] = request.META['REMOTE_ADDR']

我是怎么获得的

for i in request.__dir__():
    # 查看request所有的信息
    try:
        print(i, '()', eval(f"request.{i}()"), '\n',)
    except:
        print(i, eval(f"request.{i}"), '\n',)
print(request.environ.get("HTTP_X_REAL_IP", "environ['HTTP_X_REAL_IP']"), '\n\n\n')
print(request.environ.get("HTTP_ORIGIN", "environ['HTTP_ORIGIN']"), '\n\n\n')

以下失败的参考

#自定义中间件
from django.utils.deprecation import MiddlewareMixin
 
class SetRemoteAddrFromForwardedFor(MiddlewareMixin):
    """
    如果部署了代理,使用此中间件获取远程客户端IP。
    在settings中注册该中间件。
    """
    def process_request(self, request):
        try:
            real_ip = request.META['HTTP_X_FORWARDED_FOR']
        except KeyError as err:
            print(err)
        else:
            real_ip = real_ip.split(",")[0]
            request.META['REMOTE_ADDR'] = real_ip
# 中间件
MIDDLEWARE = [
    ...
    'your_project.http.SetRemoteAddrFromForwardedFor',
]
#在程序中重新使用字典HttpRequest.META。
...
remote_ip = request.META.get('REMOTE_ADDR', '获取IP失败')
...

文章来源地址https://www.toymoban.com/news/detail-517009.html

到了这里,关于Django 获取真实ip地址的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker 容器获取真实ip地址

    1、调用处 2、Iputils **特别注意:**如果使用到了nginx代理的话,需要在nginx.cofig内加上下面配置 效果: 加油,奥利给

    2024年02月16日
    浏览(44)
  • JavaWeb 获取客户端的真实IP地址

    通常我们在JavaWeb中获取客户端IP地址只需要使用 request.getRemoteAddr(); 方法即可 如果前端使用了Nginx等反向代理的话,我们使用 request.getRemoteAddr(); 方法获取到的IP地址就是 127.0.0.1 因为经过代理以后,在客户端和服务器之间增加了中间层,因此服务器无法直接拿到客户端的 IP 但

    2024年02月15日
    浏览(51)
  • Kubernetes Pod 获取真实 IP 地址

    1.1 链路介绍 7 层转发链路 : Client -- Nginx -- K8s Nginx Ingress 4 层转发链路: Client -- 公有云 SLB(或 F5、LVS、Haproxy 等)-- K8s Nginx Ingress 实际业务可能会串联更多层级的转发。例如 WAF、CDN、API Gateway 一般都是 7 层转发,LB、LVS 一般是 4 层 TCP 转发。 1.2 准备 Whoami 探针 whomai 是一个

    2024年02月16日
    浏览(40)
  • java获取真实的请求接口ip地址

    在Java程序中获取请求的真实IP地址可以使用以下方法: 使用javax.servlet.http.HttpServletRequest类中的getRemoteAddr()方法,这个方法可以获取请求的IP地址。 可以检查X-Forwarded-For,如果请求是通过代理服务器发送的,那么X-Forwarded-For将包含被代理客户端的IP地址。可以使用HttpServletReque

    2024年02月11日
    浏览(50)
  • 获取客户端真实 IP 地址的最佳实践

    1. 业务上云带来性能收益 公司从去年全面推动业务上云,而以往 IDC 架构部署上,接入层采用典型的 4 层 LVS 多机房容灾架构,在业务高峰时期,扩容困难(受限于物理机资源和 LVS 内网网段的网络规划),且抵挡不住 HTTPS 卸载引发的高 CPU 占用。 而经过压力测试发现,使用

    2024年02月05日
    浏览(58)
  • nginx获取不到真实ip地址,注意这个细节

    1 一定要把proxy_pass语句放在最后面 location / {         proxy_set_header Host $host;         proxy_set_header X-Real-IP $remote_addr;         proxy_set_header REMOTE-HOST $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         client_max_body_size 1024m;         # 一

    2024年02月13日
    浏览(45)
  • PHP获取当前用户的真实IP

    在 PHP 中可通过 $_SERVER 全局变量获取客户端IP,常用的有以下两个变量: $_SERVER[\\\'REMOTE_ADDR\\\'] :浏览当前页面的用户的 IP 地址 $_SERVER[\\\'HTTP_X_FORWARDED_FOR\\\'] :如果用户使用了代理服务器,则获取用户的真实 IP 地址可使用此变量。 以下是获取客户端真实IP的示例代码: 该函数会检测

    2024年02月07日
    浏览(52)
  • Nginx代理后获取客户端真实IP地址

    在项目实际应用中,我们可能会需要获取到用户也就是客户端的真实IP地址,比如记录系统操作日志等情况。 通常情况下我们可以使用以下方式来获取IP地址 但是当我们使用Nginx反向代理项目地址后,使用以上方法只能获取到Nginx服务器的IP地址,并不是客户端的IP地址。 解决

    2023年04月11日
    浏览(48)
  • 【Java开发】之获取客户端真实 IP 地址

    在投票系统开发中,为了防止刷票,我们需要限制每个 IP 地址只能投票一次; 当网站受到诸如 DDoS(Distributed Denial of Service,分布式拒绝服务攻击)等攻击时,我们需要快速定位攻击者 IP; 在渗透测试过程中,经常会碰到网站有 CDN(Content Distribution Network,内容交付网络),

    2024年02月04日
    浏览(48)
  • 通过 Request 请求获取真实 IP 地址以及对应省份城市

    title: 通过 Request 请求获取真实 IP 地址以及对应省份城市和系统浏览器信息 date: 2022-12-16 16:20:26 tags: GeoIP2 UserAgentUtils categories: 开发实践 cover: https://cover.png feature: false 代码如下,这里的 CommonUtil.isBlank() 为封装的判空方法 1、首先,获取 X-Forwarded-For 中第 0 位的 IP 地址,它在

    2024年02月01日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包