windscout 0.6.4 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # WindScout
2
2
 
3
- Find which Windscribe locations and protocols actually work from your network, ranked by latency. Runs on Linux, macOS and Windows.
3
+ Find which Windscribe locations and protocols actually work from your network, ranked by speed. Runs on Linux, macOS and Windows.
4
4
 
5
- WindScout drives the official `windscribe-cli`: it connects to each country × protocol pair, measures latency through the tunnel, disconnects, and prints a ranked table.
5
+ WindScout drives the official `windscribe-cli`: it connects to each country × protocol pair, measures latency and download speed through the tunnel, disconnects, and prints a ranked table.
6
6
 
7
7
  ![WindScout picking countries, scanning, and printing the availability grid and ranked results](demo.gif)
8
8
 
@@ -30,7 +30,7 @@ Run `windscout` with no arguments to open the interactive picker:
30
30
  ```
31
31
  ╭─ WindScout ──────────────────────────────────── 2/68 selected ─╮
32
32
  │ 1 ● wireguard 2 ● stealth 3 ○ wstunnel 4 ● udp 5 ● tcp │
33
- │ p ○ all ports off: each protocol on its default port │
33
+ │ s ○ speed test off: connect-only, ranks by latency │
34
34
  ╰────────────────────────────────────────────────────────────────╯
35
35
  ╭────────────────────────────────────────────────────────────────╮
36
36
  │ 🔍 an▏ 1–16 of 18 │
@@ -52,6 +52,7 @@ Run `windscout` with no arguments to open the interactive picker:
52
52
  | `a` / `n` | select all / unselect all (only the matching countries while a search is active) |
53
53
  | `1`–`6` | toggle a protocol (`1`–`5` on Linux, which has no IKEv2) |
54
54
  | `p` | toggle [all ports](#all-ports): each protocol on every port it has, not just its default |
55
+ | `s` | toggle the speed test (off = connect-only mode) |
55
56
  | `f` | toggle "block internet while scanning" (firewall) |
56
57
  | `r` | toggle random order: scan the selected countries shuffled, a new order each run |
57
58
  | `d` | toggle the [parallel scan in docker containers](#parallel-scan-with-docker) (installs or starts docker first, after asking) |
@@ -59,11 +60,11 @@ Run `windscout` with no arguments to open the interactive picker:
59
60
  | `enter` | start scanning |
60
61
  | `q` | quit (during a scan: stop and show partial results; press again to force quit) |
61
62
 
62
- **Mouse:** click a country to select or unselect it, click a protocol or a setting's line to toggle it, click the search box to start typing (click anywhere else to leave it), and scroll the list with the wheel. The `[ ▶ Start ] [ All ] [ None ] [ Quit ]` buttons under the table do the same as their keys; the shortcut key is underlined on screen (on the buttons, the protocol numbers and the settings' letters). This needs a terminal with mouse support, which most have. On Windows, use Windows Terminal; if clicks do nothing there, the keyboard does everything.
63
+ **Mouse:** click a country to select or unselect it, click a protocol or the speed-test line to toggle it, click the search box to start typing (click anywhere else to leave it), and scroll the list with the wheel. The `[ ▶ Start ] [ All ] [ None ] [ Quit ]` buttons under the table do the same as their keys; the shortcut key is underlined on screen (on the buttons, the protocol numbers and `s`). This needs a terminal with mouse support, which most have. On Windows, use Windows Terminal; if clicks do nothing there, the keyboard does everything.
63
64
 
64
65
  Your selection is saved to `~/.config/windscout/config.json` (`%USERPROFILE%\.config\windscout\config.json` on Windows) and preselected next time.
65
66
 
66
- While scanning, WindScout shows a progress bar, elapsed time and remaining time. It also shows what it's doing right now (connecting or measuring latency). The table of working locations refreshes after each country. When the scan finishes, the final report is printed to your normal terminal. It ends with the best connection and the other working ones, each with its `windscribe-cli connect` command. At the prompt, press enter to connect to the best one, type another one's number to connect to that, or `q` to quit.
67
+ While scanning, WindScout shows a progress bar, elapsed time and remaining time. It also shows what it's doing right now (connecting, measuring latency or measuring speed). The table of working locations refreshes after each country. When the scan finishes, the final report is printed to your normal terminal. It ends with the best connection and the other working ones, each with its `windscribe-cli connect` command. At the prompt, press enter to connect to the best one, type another one's number to connect to that, or `q` to quit.
67
68
 
68
69
  ### Non-interactive
69
70
 
@@ -83,14 +84,17 @@ windscout -t 40 -a # longer connect timeout, also list
83
84
  | `-P, --all-ports` | try each protocol on [every port](#all-ports) Windscribe offers for it, not just its default | picker: saved, or off; with `-c`: off |
84
85
  | `-t, --timeout` | seconds to wait for each connection, at least 10 | picker: saved, or 15; with `-c`: 15 |
85
86
  | `-a, --all` | include failed attempts in the final table | off |
87
+ | `-n, --no-speed` | connect-only mode: skip the download test, rank by latency | picker: saved, or connect-only on first run; with `-c`: speed test on |
86
88
  | `-f, --firewall` | block internet while scanning, except through the VPN | picker: saved, or off; with `-c`: off |
87
89
  | `-r, --random` | scan the countries in a random order | picker: saved, or off; with `-c`: off |
88
90
  | `-d, --docker` | [scan in parallel, in docker containers](#parallel-scan-with-docker) | picker: saved, or off; with `-c`: off |
89
91
  | `-v, --version` | print the installed version; if a newer one is on npm, show the update command (with `sudo` when needed) and ask (y/n) to run it | |
90
92
 
91
- ## Availability grid
93
+ ## Connect-only mode
92
94
 
93
- Each working connection gets a quick latency test, and the working ones are ranked by latency. The scan screen and the final report show an **availability grid**: one row per country, and ✓ / ✗ for each protocol (`·` = not tried yet; `key limit`, in a [parallel scan](#parallel-scan-with-docker): WireGuard couldn't be tried). With [all ports](#all-ports), it counts how many of a protocol's ports worked: `✓ 3/11`. Location(s) lists each datacenter that connected, one per line, since protocols can land on different ones:
95
+ Often you only need to know **what connects**, not how fast it is. Turn the speed test off with `s` in the picker or with `--no-speed`. Each working connection is then checked with a quick latency test only. That saves about 15 s per working connection, and results are ranked by latency. Connect-only is the default on the first run, and the choice is remembered.
96
+
97
+ Both modes show an **availability grid**: one row per country, and ✓ / ✗ for each protocol (`·` = not tried yet; `key limit`, in a [parallel scan](#parallel-scan-with-docker): WireGuard couldn't be tried). With [all ports](#all-ports), it counts how many of a protocol's ports worked: `✓ 3/11`. Location(s) lists each datacenter that connected, one per line, since protocols can land on different ones:
94
98
 
95
99
  ```
96
100
  ╭──────────────────────────────────────────────────────────────────────────────╮
@@ -105,7 +109,7 @@ Each working connection gets a quick latency test, and the working ones are rank
105
109
  ╰─────────────────────────┴────────────────────────┴─────────┴───────────┴─────╯
106
110
  ```
107
111
 
108
- While scanning, press `tab` to switch between the availability grid and the latency ranking. Press `p` (or `space`) to pause: the current attempt finishes, the VPN disconnects, and the scan waits until you press `p` again. Paused time doesn't count toward elapsed or remaining. The scan starts on the availability grid.
112
+ While scanning, press `tab` to switch between the availability grid and the speed or latency ranking. Press `p` (or `space`) to pause: the current attempt finishes, the VPN disconnects, and the scan waits until you press `p` again. Paused time doesn't count toward elapsed or remaining. In connect-only mode the scan starts on the availability grid.
109
113
 
110
114
  ## All ports
111
115
 
@@ -119,7 +123,7 @@ Each protocol is normally tried on its default port, the first one Windscribe li
119
123
  | udp | 443, 80, 53, 123, 1194, 54783 | 6 |
120
124
  | tcp | 443, 587, 21, 22, 80, 123, 143, 3306, 8080, 54783, 1194 | 11 |
121
125
 
122
- With every protocol selected, that's 35 attempts per country instead of 5, 7 times as many (on macOS and Windows, IKEv2 adds its own ports). The picker shows the count (`35 attempts per country, not 5`) and the estimate: one country takes about 11m 40s instead of 1m 40s in a normal scan, and about 2 minutes in a [parallel scan](#parallel-scan-with-docker), which helps most here. To try fewer, select only the protocols you need, or give a port yourself: a protocol with a port (`-p tcp:443`) stays on that one.
126
+ With every protocol selected, that's 35 attempts per country instead of 5, 7 times as many (on macOS and Windows, IKEv2 adds its own ports). The picker shows the count (`35 attempts per country, not 5`) and the estimate: one country takes about 11m 40s instead of 1m 40s in a normal scan, and about 2 minutes in a [parallel scan](#parallel-scan-with-docker), which helps most here. With the speed test on, every working port gets a speed test too, about 15 s each, so connect-only mode finds the working ports sooner. To try fewer, select only the protocols you need, or give a port yourself: a protocol with a port (`-p tcp:443`) stays on that one.
123
127
 
124
128
  The availability grid keeps one column per protocol and counts how many of its ports worked (`✓ 3/11`, or `✗ 0/11` when none did). The results list each working protocol with its port, and the per-protocol table has a line per port.
125
129
 
@@ -163,7 +167,7 @@ The mirrors come from [Mirava](https://github.com/MiravaOrg/Mirava)'s list of mi
163
167
 
164
168
  WindScout 0.6.0 asked for your username and password instead, and could save them in `~/.config/windscout/login.json`. WindScout now deletes that file.
165
169
 
166
- **Measuring:** the containers share your internet connection, so they take turns measuring latency while the connecting happens in parallel. Numbers stay comparable with a normal scan. Most of the time saved comes from attempts that hang until the timeout, which overlap now.
170
+ **Measuring:** the containers share your internet connection, so they take turns measuring latency and speed while the connecting happens in parallel. Numbers stay comparable with a normal scan. Most of the time saved comes from attempts that hang until the timeout, which overlap now.
167
171
 
168
172
  **Differences from a normal scan:**
169
173
 
@@ -183,23 +187,23 @@ While scanning:
183
187
  │ ██████████████████████████████████████████▌░░░░░░░░░░░░░░░░ 72% │
184
188
  │ │
185
189
  │ ⠏ 🇳🇱 Netherlands · stealth │
186
- │ measuring latency · Amsterdam - Tulip · 1s │
190
+ │ measuring speed · Amsterdam - Tulip · 3s │
187
191
  ├──────────────────────────────────────────────────────────────────────┤
188
192
  │ elapsed 25s │ remaining ≈ 13s │ ✓ 2 working │ ✗ 1 blocked │
189
193
  ╰──────────────────────────────────────────────────────────────────────╯
190
194
  ╭──────────────────────────────────────────────────────────────────────╮
191
195
  │ Working so far 2 found │
192
196
  ├───┬────────────┬───────────────────────┬───────────┬───────────┬─────┤
193
- │ # │ Country │ Location │ Protocol │ Latency │ ... │
197
+ │ # │ Country │ Location │ Protocol │ Speed │ ... │
194
198
  ```
195
199
 
196
200
  At the end, the results, a per-protocol summary and the best pick are printed to your normal terminal:
197
201
 
198
202
  ```
199
- ╭─ ★ Best (lowest latency) ────────────────────╮
200
- │ 🇳🇱 Amsterdam - Tulip over wireguard · 109 ms │
201
- │ windscribe-cli connect "Tulip" wireguard │
202
- ╰──────────────────────────────────────────────╯
203
+ ╭─ ★ Best ─────────────────────────────────────────────────╮
204
+ │ 🇳🇱 Amsterdam - Tulip over wireguard · 27.0 Mbps · 109 ms │
205
+ │ windscribe-cli connect "Tulip" wireguard │
206
+ ╰──────────────────────────────────────────────────────────╯
203
207
  ```
204
208
 
205
209
  ## Notes
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  // WindScout: find which Windscribe locations and protocols actually work from here.
3
3
  // Drives the official windscribe-cli: connects to each country/protocol pair,
4
- // measures latency through the tunnel, prints a ranked table.
4
+ // measures latency and download speed through the tunnel, prints a ranked table.
5
5
  import { createInterface } from "node:readline";
6
6
  import { spawnSync } from "node:child_process";
7
7
  import { parseArgs } from "node:util";
@@ -89,7 +89,7 @@ async function main() {
89
89
  all: { type: "boolean", short: "a", default: false },
90
90
  help: { type: "boolean", short: "h", default: false },
91
91
  version: { type: "boolean", short: "v", default: false },
92
- "no-speed": { type: "boolean", short: "n", default: false }, // still accepted while the speed test is hidden
92
+ "no-speed": { type: "boolean", short: "n", default: false },
93
93
  firewall: { type: "boolean", short: "f", default: false },
94
94
  random: { type: "boolean", short: "r", default: false },
95
95
  docker: { type: "boolean", short: "d", default: false },
package/dist/config.js CHANGED
@@ -3,8 +3,8 @@ import { mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
4
  import { dirname, join } from "node:path";
5
5
  import { COUNTRIES, PROTOCOLS } from "./windscribe.js";
6
- // The speed test is hidden: every scan is connect-only, and a saved "on" reads as off. Its code stays; true brings it back
7
- export const SPEED_TEST = false;
6
+ // false hides the speed test: every scan is connect-only, and a saved "on" reads as off
7
+ export const SPEED_TEST = true;
8
8
  export const DEFAULT_TIMEOUT = 15;
9
9
  export const MIN_TIMEOUT = 10; // seconds; shorter cuts off connections that would have worked
10
10
  export const CONFIG = join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "windscout", "config.json");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "windscout",
3
- "version": "0.6.4",
4
- "description": "Find which Windscribe locations and protocols work from your network, ranked by latency (unofficial)",
3
+ "version": "0.6.5",
4
+ "description": "Find which Windscribe locations and protocols work from your network, ranked by speed (unofficial)",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "windscout": "dist/cli.js"
@@ -25,12 +25,14 @@
25
25
  "keywords": [
26
26
  "windscribe",
27
27
  "vpn",
28
+ "speedtest",
28
29
  "wireguard",
29
30
  "stealth",
30
31
  "cli",
31
32
  "censorship",
32
33
  "firewall",
33
34
  "unblock",
35
+ "vpn-speed-test",
34
36
  "server-finder",
35
37
  "docker"
36
38
  ],