Skip to content

luis2404123/proxy-checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@birdproxies/proxy-checker

License: MIT TypeScript Node.js

Fast bulk proxy checker with support for HTTP, SOCKS4, and SOCKS5. Tests hundreds of proxies concurrently, measures latency, determines anonymity level, and resolves geolocation.

Features

  • Multi-protocol - HTTP, HTTPS, SOCKS4, SOCKS5
  • Concurrent checking - Configurable worker pool (default: 50 concurrent)
  • Anonymity detection - Transparent, Anonymous, or Elite classification
  • Geolocation - Country, region, city, and ISP resolution
  • Flexible input - Multiple proxy string formats, file or stdin
  • Multiple outputs - Colored table, JSON, CSV, plain text
  • Retry logic - Configurable retry attempts per proxy
  • Programmatic API - Use as a library in your own projects

Installation

npm install -g @birdproxies/proxy-checker

Or clone and build from source:

git clone https://github.com/birdproxies/proxy-checker.git
cd proxy-checker
npm install
npm run build

Usage

Basic Usage

# Check proxies from a file
proxy-checker proxies.txt

# Pipe proxies via stdin
cat proxies.txt | proxy-checker

# Generate a list and pipe it
echo -e "1.2.3.4:8080\n5.6.7.8:1080" | proxy-checker

CLI Options

Usage: proxy-checker [options] [file]

Arguments:
  file                     File containing proxies (one per line)

Options:
  -V, --version            Output the version number
  -p, --protocol <proto>   Default protocol (http, https, socks4, socks5)  [default: "http"]
  -t, --timeout <ms>       Connection timeout in milliseconds              [default: 10000]
  -c, --concurrency <n>    Number of concurrent checks                     [default: 50]
  -o, --output <format>    Output format: table, json, csv, plain          [default: "table"]
  -f, --output-file <path> Save results to file
  --alive-only             Show only alive proxies                         [default: false]
  --no-geo                 Skip geolocation lookups
  --no-banner              Suppress the ASCII banner
  --judge <url>            Custom judge URL                                [default: "http://httpbin.org/get"]
  --retries <n>            Number of retries per proxy                     [default: 1]
  -h, --help               Display help for command

Examples

# Check SOCKS5 proxies with higher concurrency
proxy-checker proxies.txt -p socks5 -c 100

# Output as JSON, only alive proxies
proxy-checker proxies.txt -o json --alive-only

# Save CSV results to file
proxy-checker proxies.txt -o csv -f results.csv

# Quick check with short timeout
proxy-checker proxies.txt -t 5000 --no-geo

# Plain text output (alive proxies only, one per line)
proxy-checker proxies.txt -o plain > alive.txt

Supported Input Formats

The parser accepts proxies in any of the following formats, one per line:

# Basic
1.2.3.4:8080

# With authentication
1.2.3.4:8080:username:password
username:password@1.2.3.4:8080

# With protocol
http://1.2.3.4:8080
socks5://1.2.3.4:1080
https://1.2.3.4:443

# Protocol + authentication
socks5://username:password@1.2.3.4:1080
http://user:pass@1.2.3.4:8080

# Lines starting with # or // are ignored

Sample Output

Table (default)

  BirdProxies
  -----------------------------------------------
  Proxy Checker v1.0.0

  Loaded 5 proxies
  Detecting public IP... 203.0.113.1

  Checking ████████████████████████████████████████ 100% | 5/5 | 3 alive | 2 dead

┌────────────────────┬──────────┬────────┬─────────┬─────────────┬──────────────┬──────────────────┐
│ Proxy              │ Protocol │ Status │ Latency │ Anonymity   │ Country      │ ISP              │
├────────────────────┼──────────┼────────┼─────────┼─────────────┼──────────────┼──────────────────┤
│ 1.2.3.4:8080       │ HTTP     │ ALIVE  │ 245ms   │ Elite       │ US USA       │ Cloudflare       │
│ 5.6.7.8:3128       │ HTTP     │ ALIVE  │ 512ms   │ Anonymous   │ DE Germany   │ Hetzner          │
│ 9.10.11.12:1080    │ SOCKS5   │ ALIVE  │ 189ms   │ Elite       │ NL Netherlands│ DigitalOcean    │
│ 13.14.15.16:8888   │ HTTP     │ DEAD   │ -       │ -           │ -            │ -                │
│ 17.18.19.20:80     │ HTTP     │ DEAD   │ -       │ -           │ -            │ -                │
└────────────────────┴──────────┴────────┴─────────┴─────────────┴──────────────┴──────────────────┘

  Summary
  ----------------------------------------
  Total checked:   5
  Alive:           3 (60.0%)
  Dead:            2

  Avg latency:     315ms
  Min latency:     189ms
  Max latency:     512ms

  Transparent:     0
  Anonymous:       1
  Elite:           2

  Top countries:   US (1), DE (1), NL (1)

JSON

proxy-checker proxies.txt -o json
[
  {
    "proxy": "1.2.3.4:8080",
    "protocol": "http",
    "alive": true,
    "latency": 245,
    "anonymity": "elite",
    "country": "United States",
    "countryCode": "US",
    "region": "California",
    "city": "San Francisco",
    "isp": "Cloudflare",
    "error": null,
    "checkedAt": "2026-01-15T12:00:00.000Z"
  }
]

CSV

proxy-checker proxies.txt -o csv
proxy,protocol,alive,latency,anonymity,country,country_code,region,city,isp,error,checked_at
1.2.3.4:8080,http,true,245,elite,United States,US,California,San Francisco,Cloudflare,,2026-01-15T12:00:00.000Z
5.6.7.8:3128,http,false,,,,,,,,Connection refused,2026-01-15T12:00:01.000Z

Programmatic Usage

import { checkProxies, parseProxyList } from '@birdproxies/proxy-checker';

const input = `
1.2.3.4:8080
socks5://5.6.7.8:1080
`;

const proxies = parseProxyList(input);

const results = await checkProxies(proxies, {
  timeout: 5000,
  concurrency: 20,
  geoLookup: true,
}, (completed, total, result) => {
  console.log(`[${completed}/${total}] ${result.proxy.host}:${result.proxy.port} - ${result.alive ? 'ALIVE' : 'DEAD'}`);
});

const alive = results.filter(r => r.alive);
console.log(`Found ${alive.length} alive proxies`);

for (const r of alive) {
  console.log(`  ${r.proxy.host}:${r.proxy.port} - ${r.latency}ms - ${r.anonymity} - ${r.geo?.country}`);
}

Building

npm install
npm run build

The compiled output will be in the dist/ directory.

License

MIT - see LICENSE


Built by BirdProxies - Premium Proxy Provider

About

Fast bulk proxy checker with support for HTTP, SOCKS4, and SOCKS5.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors