27.nuxt框架获取用户真实的ip

1.前言

许多网站在做反爬限制时,除了加大解密难度,另一个方案便是直接限制ip。

比如图片网站在用户未登录的情况下允许下载指定数量的图片,一旦超过这个数字,就不允许下载了。

那么网站是如何在用户未登录的情况下识别到这是同一设备操作的呢?最简单的方式就是通过ip地址进行识别。

nuxt框架本身并不能直接获取ip地址、或者实现起来比较麻烦,但通过一些其它方式却是可以很容易实现的。

2.获取ip地址

一般用nuxt框架开发的web服务器都是通过nginx进行反代,而我们就可以通过nginx提供的功能,直接为所有请求头塞进请求的ip地址。

方法如下:

image.png

简单来说,就是nginx是可以识别到所有请求的源ip地址的,并且将其存放在了变量remote_addr中。

因此我们只需要使用proxy_set_header指令,为每个来临的请求头都塞入一个字段X-Real-IP,并让其等于$remote_addr,就可以了。

同理,你还可以像我这样,把host、port都塞进去。

完成了这一步的配置之后,我们就可以来到nuxt后端代码位置,从请求头中拿取这个ip字段即可:

export default defineEventHandler(async (event) => {
    const req_ip = event.headers.get('x-real-ip') as string
}

有了ip,将其存在数据库中,然后就可以通过该ip来识别爬虫、乃至做一些统计之类的事情了。

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux