Proxy checker for Windows in PowerShell, with RBL and site checks

remcheck.ps1 checks a proxy list in hundreds of threads right on your Windows PC or server: which proxies answer, how fast and from which IP. Two more modes match exit IPs against 17 spam lists and count how many proxies Google, LinkedIn, Avito and other sites let through.

  • PowerShell and curl.exe, nothing to install
  • up to 1000 threads
  • connect, rbl and target modes
  • free

Version 1.3 · 46.0 KBSHA-256 35a92bd2cde5d8c06a1d719569a718083724bf9e612280ff5bb538ae40832d66

A terminal checks hundreds of proxies: blue lines lead to network nodes, green and red lights show the answers

Running in a minute

Nothing to install: PowerShell and curl.exe ship with Windows 10 and 11. The script runs in the built-in Windows PowerShell 5.1 and in PowerShell 7.

  1. Download the script

    Open PowerShell (press Start, type PowerShell, press Enter) and run the command: it creates C:\remcheck and downloads the script there.

    mkdir C:\remcheck -Force; cd C:\remcheck; curl.exe -fsSLO https://remproxy.com/files/remcheck.ps1
  2. Allow it to run

    Once in every new window. The permission lasts until you close the window and leaves Windows settings alone.

    Set-ExecutionPolicy -Scope Process Bypass -Force
  3. Check a list

    Pass the subscription ID from the panel; your_proxy_id is unique to every subscription. Results appear in the remcheck-DATE-TIME folder.

    .\remcheck.ps1 -P socks5 -f your_proxy_id
If PowerShell shows an error

The message "running scripts is disabled on this system" means step 2 was skipped: by default Windows does not run downloaded scripts. The message "curl.exe not found" appears on Windows older than 10: get curl from curl.se and put curl.exe into a folder from PATH, for example C:\Windows.

Three modes

connect: live and fast

The script opens a page that returns the IP through every proxy and records the response time. Live proxies go to alive.txt, the fastest on top.

.\remcheck.ps1 -n 100 -Timeout 8 -f your_proxy_id

rbl: live and clean

Every exit IP gets looked up in 17 spam lists over DNS over HTTPS. For a RemProxy subscription the script takes the addresses from the real_ip column, so the lookup starts at once, without connecting through the proxies. Other lists get a connect pass first. Clean proxies go to clean.txt, listed ones to listed.txt.

.\remcheck.ps1 -m rbl -f your_proxy_id

target: how many proxies a site lets in

The script opens Google, LinkedIn, Avito and 13 more services, or your own URL, through every proxy with browser headers. Answers split into working, captcha, antibot, blocked and limit. First every site is opened from the machine itself without a proxy: if the site rejects that too, it checks the client, not the IP. Working proxies for each site go to ok-site.txt.

.\remcheck.ps1 -m target -t google,linkedin,avito -S 300 -f your_proxy_id

Options

-f LIST
Proxy list: RemProxy subscription ID or a link to the list. A file works too.
-m MODE
Mode: connect (default), rbl or target.
-t LIST
Target mode: services and URLs separated by commas, for example -t google,linkedin,shop=https://example.com/, or -t all for all 16.
-k TEXT
Target mode: a page of your own URL counts as working only when it contains this text.
-S NUM
Connect and target modes: check a random sample of NUM proxies.
-n NUM
How many proxies to check at once, 64 by default, 1000 at most. In rbl mode it also sets how many IPs go to the spam lists at once: 128 without -n, 256 at most.
-Timeout SEC
Timeout per request in seconds, 10 by default. Written in full because PowerShell does not tell -t from -T.
-r NUM
Attempts per proxy in connect mode, 2 by default, 5 at most. Each retry goes to another echo page.
-P PROTO
Protocol for lines without a scheme: http (default), socks5 or socks4.
-e URLS
Pages that answer with the caller IP, separated by commas. Five by default: icanhazip, ipify, Amazon checkip, ifconfig.me and ipinfo.
-d DIR
Folder for the results, remcheck-DATE-TIME by default.
-C
rbl mode with a RemProxy subscription: connect through every proxy anyway instead of taking IPs from the real_ip column.
-q
No progress line. Task Scheduler does not show it anyway.
Get-Help .\remcheck.ps1 -Full

List formats

The script reads different notations in one file and skips repeats and empty lines. The CSV from the RemProxy panel works too.

host:port
host:port:user:pass
user:pass@host:port
socks5://user:pass@host:port
ip;port;country;speed;uptime;real_ip

What appears in the folder

  • alive.txtWorking proxies, the fastest on top.
  • dead.txtProxies that did not answer.
  • results.tsvTable: a row per proxy, in target mode per proxy and service, with the reason for every answer.
  • clean.txtrbl mode: live proxies with a clean exit IP.
  • listed.txtrbl mode: live proxies whose IP sits in spam lists.
  • ok-NAME.txtTarget mode: proxies that opened the service, fastest first.
  • summary.txtTarget mode: the summary table by service.

Checking a RemProxy list

The subscription ID is enough, the script fetches the CSV list itself. In rbl mode the script takes exit IPs from the real_ip column and never connects through the proxies. Every line of the list gets its own check, 128 at a time, so 1000 proxies take under a minute. The summary gives clean and listed proxies as counts and percentages.

.\remcheck.ps1 -m rbl -f your_proxy_id

Keep -n at or below the thread count of your package, or part of the checks hits the limit and lands among the dead.

When the IP is not in the whitelist

The list is served only to IPs from the subscription whitelist. If this machine is not there, the script stops and shows its IP: open panel.remproxy.com/subscriptions, choose the subscription, add this IP to Allowed IPs in the Access section and run the check again. The exit code in this case is 3.

remcheck: the list server rejected this machine, its IP is not in the subscription whitelist.
  IP of this machine:        203.0.113.7
  Allowed IPs of the plan:   198.51.100.20
Find the IP of this machine

Scheduled checks

The script has no periodic mode: Windows Task Scheduler runs it. The latest results always sit in one folder.

  • Open Task Scheduler and choose Create Basic Task.
  • Trigger: Daily. Then in the task properties, on the Triggers tab, turn on repeat every 30 minutes.
  • Action: Start a program. Program and arguments are below.
    Program
    powershell.exe
    Arguments
    -ExecutionPolicy Bypass -File C:\remcheck\remcheck.ps1 -P socks5 -f your_proxy_id -d C:\remcheck\latest -q
  • Save the task. Fresh results will be in C:\remcheck\latest.

The -q switch turns the progress line off, and -d keeps results in one folder, so another program can pick them up.

Requirements: Windows 10 or 11 with the built-in PowerShell 5.1 and curl.exe. PowerShell 7 works too. Older Windows needs curl.exe from curl.se in a folder from PATH.

Questions and answers

01How many threads should I use on Windows?
Start with the default -n 64. Every check starts curl.exe, and starting processes costs more on Windows than on Linux, so going above 200 rarely helps. For a RemProxy list stay within the thread count of your package.
02Why are all proxies from my RemProxy list dead?
When the list comes by subscription ID, the script spots the refusal itself and shows the machine IP: add it to Allowed IPs of the subscription. When you check a file, run the script on a whitelisted machine. Its IP is on the My IP page or in the output of curl.exe -4 ifconfig.me.
03Why do Ozon, Wildberries and Yandex show 0% in target mode?
These sites check that the request comes from a real browser and answer any program with a check page or a captcha, even from a clean IP. The script sees this in the control request without a proxy, the direct column, and adds a note under the table. Check such sites in a browser or an antidetect.
04How is the Windows version different from the bash one?
Modes, options and result files are the same, and both versions take the timeout as -Timeout. Windows has no short -T because PowerShell does not tell -t from -T. The full help comes from Get-Help .\remcheck.ps1 -Full.
05Does the script send my proxies anywhere?
No. In connect mode each proxy sends one request to one of five pages that return the IP: icanhazip, ipify, Amazon checkip, ifconfig.me or ipinfo. In rbl mode the script asks Google and Cloudflare DNS about exit IPs; in target mode it opens only the sites from -t. Results stay in a folder on your machine.

Need a pool for mass checks?

MIX pools of up to 25,000 IPs, unlimited traffic, HTTP and SOCKS5 on one port, access by IP. A test hour costs $1.

See packages
LOGIN/REGISTER