What's new

VPNMON VPNMON-R2 v2.52 -Mar 27, 2023- Monitor your VPN connection's Health (Thread locked/closed)

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

I'm learning significantly more about how each of these scripts works now. I see that Jack keeps the server name in the description but you change it to be the city name to make it more user-friendly. Because Jack has the server name, he can query the exact page for server load for the specific server in question which loads quickly.

You must use the main page because you don't have the server name (e.g., us9360) and search for the IP from the list of all servers and their loads. It seems my issue is that loading that page is taking forever and causing a timeout to occur.

That led me to this page which helped me find the two search methods:
1679497288149.png

Would it be possible for you to create a variable (or save to a temp file that overwrites the values when the servers change) to save the server names to so that you could use the fast method, instead? Or maybe even reduce the limit and loop through multiple times until found?
 
Last edited:
It finally finished and this was the result:
1679498176054.png
 
I'm learning significantly more about how each of these scripts works now. I see that Jack keeps the server name in the description but you change it to be the city name to make it more user-friendly. Because Jack has the server name, he can query the exact page for server load for the specific server in question which loads quickly.

You must use the main page because you don't have the server name (e.g., us9360) and search for the IP from the list of all servers and their loads. It seems my issue is that loading that page is taking forever and causing a timeout to occur.

That led me to this page which helped me find the two search methods:

Would it be possible for you to create a variable (or save to a temp file that overwrites the values when the servers change) to save the server names to so that you could use the fast method, instead? Or maybe even reduce the limit and loop through multiple times until found?

That's a great suggestion... I could tack on the hostname into the description in order to use the other method of doing a load-lookup, perhaps making it faster. The method I use right now literally takes about 2 seconds for me... but I can understand in situations where bandwidth might be constrained, this could make a huge difference.
 
It finally finished and this was the result: View attachment 48758
Could you please post the entire command? I'll try it on my end.

Should looks something like:
Code:
curl --silent --retry 3 https://api.nordvpn.com/v1/servers?limit=16384 | jq '.[] | select(.station == "185.202.220.154") | .load'

...and I get a load response in about 2 seconds.
 
It finally finished and this was the result: View attachment 48758
In the interim... you can turn this functionality off by going into setup -> option 10... and turn off the extended near-realtime info? That might alleviate you from dealing with this, and still give you most of the functionality?
 
Could you please post the entire command? I'll try it on my end.

Should looks something like:
Code:
curl --silent --retry 3 https://api.nordvpn.com/v1/servers?limit=16384 | jq '.[] | select(.station == "185.202.220.154") | .load'

...and I get a load response in about 2 seconds.
Here you go: curl --silent --retry 3 https://api.nordvpn.com/v1/servers?limit=16384 | jq '.[] | select(.station == "185.202.220.154") | .load'
 
That led me to this page which helped me find the two search methods:

Would it be possible for you to create a variable (or save to a temp file that overwrites the values when the servers change) to save the server names to so that you could use the fast method, instead? Or maybe even reduce the limit and loop through multiple times until found?

I was just playing with these 2 different methods, and they literally take the same amount of time on my end. Could you please try on your end?

Code:
curl --silent --retry 3 https://api.nordvpn.com/server/stats/us9943.nordvpn.com | jq .percent

curl --silent --retry 3 https://api.nordvpn.com/v1/servers?limit=16384 | jq '.[] | select(.station == "185.202.220.154") | .load'
 
In the interim... you can turn this functionality off by going into setup -> option 10... and turn off the extended near-realtime info? That might alleviate you from dealing with this, and still give you most of the functionality?
I did that, and that allowed vpnmon to run. Then I tried a reset, it looks like that will also timeout when it is "Reaching out to NordVPN API to download Server IPs."
 
I was just playing with these 2 different methods, and they literally take the same amount of time on my end. Could you please try on your end?

Code:
curl --silent --retry 3 https://api.nordvpn.com/server/stats/us9943.nordvpn.com | jq .percent

curl --silent --retry 3 https://api.nordvpn.com/v1/servers?limit=16384 | jq '.[] | select(.station == "185.202.220.154") | .load'
The first command took about 18 seconds.

The second one hasn't finished after one minute. I'll keep monitoring and update this post when it is done.
18 minutes, still not done.
 
Last edited:
I noticed line 2112 of vpnmon-r2.sh obtains the city name. You can also grab the country name from the WAN. What if you could use an active VPN interface to pull information using curl if the country is Turkey? The issue is that going through the WAN when making the API calls is exceptionally slow, but going through the VPN isn't. They don't block it; they make it take forever.
 
The first command took about 18 seconds.

The second one hasn't finished after one minute. I'll keep monitoring and update this post when it is done.
18 minutes, still not done.
Could you please try to see how long this one takes for you?

Code:
curl --silent --retry 3 https://api.nordvpn.com/server | jq '.[] | select(.ip_address == "185.202.220.154") | .domain'
 
I noticed line 2112 of vpnmon-r2.sh obtains the city name. You can also grab the country name from the WAN. What if you could use an active VPN interface to pull information using curl if the country is Turkey? The issue is that going through the WAN when making the API calls is exceptionally slow, but going through the VPN isn't. They don't block it; they make it take forever.
This only happens 1x when the script initially starts, and specifies using the WAN connection in order to find its public IP address, which then gets used to translate to a certain city.

I'm wondering if they're throttling port 80/443 traffic to unusually slow speeds?
 
I did that, and that allowed vpnmon to run. Then I tried a reset, it looks like that will also timeout when it is "Reaching out to NordVPN API to download Server IPs."
I think I have an alternate way around this. I'll send you another curl statement in a bit.
 
@iTyPsIDg ... see how long this takes please?

Code:
curl --silent --retry 3 https://api.nordvpn.com/server | jq --raw-output '.[] | select(.country == "United States") | .ip_address'
 
I'm running both now.

They aren't fast. On my Mac, which is running through the VPN on the router, it took 7 seconds for the curl and 16 seconds for jq to run the second command you gave me, and 5 + 11 seconds for the first command.

1679515156960.png
 
I'm running both now.

They aren't fast. On my Mac, which is running through the VPN on the router, it took 7 seconds for the curl and 16 seconds for jq to run the second command you gave me, and 5 + 11 seconds for the first command.

View attachment 48765
Definitely better than not finishing at all! Sorry to hear you're dealing with these latency/throttling issues out there... :(
 
Definitely better than not finishing at all! Sorry to hear you're dealing with these latency/throttling issues out there... :(
It might not finish. It's still running on the router.
 
It might not finish. It's still running on the router.
I'd ask for your money back at that airbnb! LOL :p You're talking like the equivalency of 300baud on an old-skool modem with speeds like that!
 
I'd ask for your money back at that airbnb! LOL :p You're talking like the equivalency of 300baud on an old-skool modem with speeds like that!
Haha, I didn't realize how much of a pain Turkey would be. Using the recommended list from Nord works marginally better. Maybe an additional config option to use that for people that are in countries that limit VPN API access?

I just ran this and it took 1m 44s from the router:
curl --silent "https://api.nordvpn.com/v1/servers/recommendations?filters\[country_id\]=228&limit=3" | jq --raw-output '.[].hostname'

228 is the country id for the US.
 

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top