能否通过JavaScript判断访客使用IP地址还是域名访问网站?
如何用JavaScript判断访客是通过IP还是域名访问网站
完全可以通过JavaScript实现这个判断,核心思路是获取访客访问时使用的主机地址,再通过正则校验区分IP地址和域名。
实现步骤
- 获取主机地址:用
window.location.hostname获取访客实际输入的地址主体(比如192.168.0.1或yourdomain.com,自动忽略端口号) - 编写IP校验规则:分别针对IPv4和IPv6编写匹配正则,覆盖常见的IP格式
- 实现判断逻辑:将主机地址与正则匹配,返回判断结果
示例代码
function isAccessedByIP() { const hostname = window.location.hostname; // IPv4 格式校验正则 const ipv4Regex = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; // IPv6 格式校验正则(覆盖标准格式、本地回环::1、空地址::) const ipv6Regex = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^::1$|^::$/; return ipv4Regex.test(hostname) || ipv6Regex.test(hostname); } // 调用示例 if (isAccessedByIP()) { console.log("访客通过IP地址访问"); } else { console.log("访客通过域名访问"); }
注意事项
- 无需担心类似
123.com这类看起来像IP的域名,正则会严格按照IP格式校验,不会误判 - 即使网站有CDN或反向代理,
window.location.hostname获取的是访客实际输入的地址,不受后端转发影响 - 该方法仅能判断访客当前使用的访问地址类型,无法追溯域名背后对应的IP
内容的提问来源于stack exchange,提问作者itchibahn
相关产品推荐
相关产品推荐

