diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 4c365ed9..70b2847f 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -52,11 +52,12 @@ jobs: bash cloudflare/downloader.sh bash vultr/downloader.sh bash apple-proxy/downloader.sh + bash protonvpn/downloader.sh - name: Create All-In-One ranges run: | - cat google/ipv4.txt googlebot/ipv4.txt amazon/ipv4.txt microsoft/ipv4.txt oracle/ipv4.txt digitalocean/ipv4.txt bing/ipv4.txt github/ipv4.txt facebook/ipv4.txt twitter/ipv4.txt linode/ipv4.txt telegram/ipv4.txt openai/ipv4.txt cloudflare/ipv4.txt vultr/ipv4.txt apple-proxy/ipv4.txt | sort -V | uniq > all/ipv4.txt - cat google/ipv6.txt googlebot/ipv6.txt amazon/ipv6.txt microsoft/ipv6.txt digitalocean/ipv6.txt github/ipv6.txt facebook/ipv6.txt twitter/ipv6.txt linode/ipv6.txt telegram/ipv6.txt cloudflare/ipv6.txt vultr/ipv6.txt apple-proxy/ipv6.txt | sort -V | uniq > all/ipv6.txt + cat google/ipv4.txt googlebot/ipv4.txt amazon/ipv4.txt microsoft/ipv4.txt oracle/ipv4.txt digitalocean/ipv4.txt bing/ipv4.txt github/ipv4.txt facebook/ipv4.txt twitter/ipv4.txt linode/ipv4.txt telegram/ipv4.txt openai/ipv4.txt cloudflare/ipv4.txt vultr/ipv4.txt apple-proxy/ipv4.txt protonvpn/ipv4.txt | sort -V | uniq > all/ipv4.txt + cat google/ipv6.txt googlebot/ipv6.txt amazon/ipv6.txt microsoft/ipv6.txt digitalocean/ipv6.txt github/ipv6.txt facebook/ipv6.txt twitter/ipv6.txt linode/ipv6.txt telegram/ipv6.txt cloudflare/ipv6.txt vultr/ipv6.txt apple-proxy/ipv6.txt protonvpn/ipv6.txt | sort -V | uniq > all/ipv6.txt - name: Merge Ranges run: | @@ -79,6 +80,7 @@ jobs: python utils/merge.py --source=cloudflare/ipv4.txt | sort -V > cloudflare/ipv4_merged.txt python utils/merge.py --source=vultr/ipv4.txt | sort -V > vultr/ipv4_merged.txt python utils/merge.py --source=apple-proxy/ipv4.txt | sort -V > apple-proxy/ipv4_merged.txt + python utils/merge.py --source=protonvpn/ipv4.txt | sort -V > protonvpn/ipv4_merged.txt python utils/merge.py --source=all/ipv4.txt | sort -V > all/ipv4_merged.txt # ipv6 python utils/merge.py --source=google/ipv6.txt | sort -V > google/ipv6_merged.txt @@ -97,6 +99,7 @@ jobs: python utils/merge.py --source=cloudflare/ipv6.txt | sort -V > cloudflare/ipv6_merged.txt python utils/merge.py --source=vultr/ipv6.txt | sort -V > vultr/ipv6_merged.txt python utils/merge.py --source=apple-proxy/ipv6.txt | sort -V > apple-proxy/ipv6_merged.txt + python utils/merge.py --source=protonvpn/ipv6.txt | sort -V > protonvpn/ipv6_merged.txt python utils/merge.py --source=all/ipv6.txt | sort -V > all/ipv6_merged.txt - name: Commit files diff --git a/README.md b/README.md index ba2f019d..387c9ab1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![IP Ranges](logo.png) -List all IP ranges from: Google (Cloud & GoogleBot), Bing (Bingbot), Amazon (AWS), Microsoft, Oracle (Cloud), DigitalOcean, GitHub, Facebook (Meta), Twitter, Linode, Telegram, OpenAI (GPTBot), CloudFlare, Vultr and Apple (Private Relay) with daily updates. +List all IP ranges from: Google (Cloud & GoogleBot), Bing (Bingbot), Amazon (AWS), Microsoft, Oracle (Cloud), DigitalOcean, GitHub, Facebook (Meta), Twitter, Linode, Telegram, OpenAI (GPTBot), CloudFlare, Vultr, Apple (Private Relay) and ProtonVPN with daily updates. All lists are obtained from public sources. @@ -124,6 +124,13 @@ To allow GoogleBot, block all Google IP addresses and then allow the GoogleBot a - IPv6: https://raw.githubusercontent.com/lord-alfred/ipranges/main/apple-proxy/ipv6.txt - IPv6 (merged): https://raw.githubusercontent.com/lord-alfred/ipranges/main/apple-proxy/ipv6_merged.txt +### ProtonVPN (exit nodes) + +- IPv4: https://raw.githubusercontent.com/lord-alfred/ipranges/main/protonvpn/ipv4.txt +- IPv4 (merged): https://raw.githubusercontent.com/lord-alfred/ipranges/main/protonvpn/ipv4_merged.txt +- IPv6: https://raw.githubusercontent.com/lord-alfred/ipranges/main/protonvpn/ipv6.txt +- IPv6 (merged): https://raw.githubusercontent.com/lord-alfred/ipranges/main/protonvpn/ipv6_merged.txt + ## All-In-One IPs A list of IP addresses from all sources combined into one file. diff --git a/apple-proxy/downloader.sh b/apple-proxy/downloader.sh old mode 100644 new mode 100755 diff --git a/protonvpn/downloader.sh b/protonvpn/downloader.sh new file mode 100755 index 00000000..57afa829 --- /dev/null +++ b/protonvpn/downloader.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -euo pipefail +set -x + + +# get from public ranges +curl -s https://api.protonvpn.ch/vpn/logicals > /tmp/protonvpn.json + + +# get all prefixes without some keys +jq '.LogicalServers[].Servers[].EntryIP' -r /tmp/protonvpn.json | tr -d '"' > /tmp/protonvpn-all.txt + + +# save ipv4 +grep -v ':' /tmp/protonvpn-all.txt > /tmp/protonvpn-ipv4.txt + +# save ipv6 +grep ':' /tmp/protonvpn-all.txt > /tmp/protonvpn-ipv6.txt + + +# sort & uniq +sort -V /tmp/protonvpn-ipv4.txt | uniq > protonvpn/ipv4.txt +sort -V /tmp/protonvpn-ipv6.txt | uniq > protonvpn/ipv6.txt