gpt4 book ai didi

javascript - 如何使用 Node js检查给定的ip是否在给定的ip范围之间

转载 作者:行者123 更新时间:2023-12-01 07:02:03 27 4
gpt4 key购买 nike

请原谅这个琐碎的问题

给定一组IP,该组非常大并且可能会增加
https://github.com/client9/ipcat/blob/master/datacenters.csv#L4

小样本集 - 第一列开始 ip 第二 - 结束 ip 范围

enter image description here

我将从请求中获取用户 ip。我需要检查 ip 是否在这些范围内。我如何做到这一点。

我调查了ip_range_checkrange_check .

但他们不检查给定范围的 ip。这在 Node js 中如何实现最高性能。我不想进行详尽的搜索,因为性能是重中之重。

到目前为止,请帮助我做一些新的和相当具有挑战性的事情。

最佳答案

如果我们将 ips 转换为简单的数字,这很容易:

function IPtoNum(ip){
return Number(
ip.split(".")
.map(d => ("000"+d).substr(-3) )
.join("")
);
}

然后我们可以检查某个范围为:
 if( IPtoNum(min) < IPtoNum(val) &&    IPtoNum(max) > IPtoNum(val) ) alert("in range");

这也可以应用于表格:
const ranges = [
["..41", "192.168.45"],
["123.124.125"," 126.124.123"]
];

const ip = "125.12.125";
const inRange = ranges.some(
([min,max]) => IPtoNum(min) < IPtoNum(ip) && IPtoNum(max) > IPtoNum(ip)
);

关于javascript - 如何使用 Node js检查给定的ip是否在给定的ip范围之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46200086/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com