我正在寻找一种方法来获取 PrivateInternetAccess 服务器的所有当前 IP 地址的完整列表。我需要完整的列表,以便我可以手动将它们输入到 OpenVPN 的终止开关中。我使用 Adrelanos VPN 防火墙作为终止开关,如下所述:
适用于 Linux 用户的 VPN (OpenVPN) 防火墙 Killswitch
我在 PIA 的论坛上看到有人要求提供以下列表:服务器IP列表
但由于服务开始阻止 IP,获取它们的唯一方法是通过主机名。这对我来说是非常耗时的。
我想知道是否有一个简单的脚本可以对服务器执行足够多次的 ping 操作来对 IP 进行排序并组织它们。任何其他方法也都很棒。如果每个主机名只有一台服务器和 IP,那就很容易了,但截至目前,仅荷兰主机名就有 278 台服务器。我不能花时间一遍又一遍地 ping 服务器,划掉多余的 IP,然后数数以确保我拥有全部 278 个 IP 地址。我也不只想要荷兰 IP 地址。我更喜欢一种像输入主机名并获取结果一样简单的方法。任何建议都会很棒。谢谢!
答案1
我认为这符合你的要求。 3分钟就搞定了。
wget -q https://www.privateinternetaccess.com/pages/network/ -O - | grep -E -o '>[^.]+\.privateinternetaccess\.com<' | tr -d '[<>]' | while read host ;do host $host ;done | awk '{print $NF}' | sort -u > ip_list
因此,我们使用 wget 获取包含所有主机名的网页并将其输出到 STDOUT,同时抑制来自 wget 的活动报告。
wget -q https://www.privateinternetaccess.com/pages/network/ -O -
我们在输出中查找主机名。
grep -E -o '>[^.]+\.privateinternetaccess\.com<'
然后使用 tr 从主机名中去除角度支持。
tr -d '[<>]'
然后,我们使用 bash while 循环遍历主机名并解析它们。
while read host ;do host $host ;done
与 ping 名称相比,使用主机的优点是您将获得全部名称,而不会出现重复的情况。
名称解析的输出用awk清理,然后唯一排序,不是我认为会有重复,并将结果写入文件ip_list。
awk '{print $NF}' | sort -u > ip_list
如果您想知道 awk 的作用:它会打印每行的最后一个字段。
答案2
答案3
这绝对有可能。我做到了(使用 PHP)并发布了所有服务器https://github.com/Lars-/PIA-servers。由于 DNS 不是每秒轮换,因此确实需要一段时间,但它确实有效。