在做服务端API接口时,经常需要考虑接口防刷的问题,最核心的一个就是防止同一个IP地址频繁访问。下面就关于服务端获取 IP 以及客户端 IP 代理的几个概念简单介绍下。
REMOTE_ADDR
没有使用代理时,就是客户端 IP
使用一层代理时,就是代理 IP
使用多层代理时,就是最终访问服务器的代理 IP
HTTP_VIA
没有使用代理时,没有值
使用代理时,就是代理 IP
HTTP_X_FORWARDED_FOR
没有使用代理时,没有值
使用一层代理时,就是客户端 IP
使用N层代理时,就是“客户端 IP,第1层代理 IP,...,第(N-1)层代理 IP”,但不包括第N层代理
透明代理 - Transparent Proxy
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Your IP
该代理方式只是将信息转发给访问对象,无法达到隐藏真实身份的目的,服务端只需要通过 HTTP_X_FORWARDED_FOR,就可以知道你的真实身份。
匿名代理 - Anonymous Proxy
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Proxy IP
该代理方式隐藏了您的真实 IP,但是服务端依然知道客户端是通过代理服务访问他们的。
混淆代理 - Distorting Proxy
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Random IP Address
服务端依然知道客户端是通过代理服务访问他们的,但是通过 HTTP_X_FORWARDED_FOR 获取到的IP地址是一个虚假的随机 IP 地址。
高匿代理 - High Anonymity Proxy
REMOTE_ADDR = Proxy IP
HTTP_VIA = Not Determined
HTTP_X_FORWARDED_FOR = Not Determined
很明显,采用这种代理方式,服务端如果没有做进一步的校验处理,很容易被客户端欺骗。


网友评论