Latest commit

History

675 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NetWatch - Network Proxy Monitoring System

NetWatch is a high-performance PHP-based network proxy monitoring system designed specifically for monitoring the availability status of large numbers of SOCKS5 and HTTP proxies. It supports parallel processing and can efficiently monitor thousands of proxy servers.

Features

  • 🌐 Multi-Protocol Support: Supports SOCKS5 and HTTP proxy monitoring
  • 🚀 High-Performance Parallel Processing: Supports multi-process parallel detection, up to 12 concurrent processes, 500 proxies per batch
  • 📊 Real-Time Monitoring: Real-time detection of proxy server status and response times
  • 📧 Email Notifications: Automatic email notifications when proxy failures occur
  • 📈 Web Interface: Clean and beautiful web management interface
  • 📝 Logging: Detailed monitoring logs and historical records
  • 🔄 Automatic Scheduling: Background scheduled tasks for automatic monitoring
  • 📥 Batch Import: Support for batch importing proxy configurations
  • 💾 SQLite Database: Lightweight database with no additional configuration required
  • ⏱️ Timezone Support: Automatic timezone conversion with Beijing time display support

System Requirements

  • PHP 8.0+
  • cURL extension
  • SQLite extension
  • PCNTL extension (for parallel processing)
  • POSIX extension
  • Configured web server (Nginx + PHP-FPM or Apache)

Performance Configuration

The system has the following default performance parameters configured, which you can adjust according to your server configuration (modify in index.php):

define('PARALLEL_MAX_PROCESSES', 24); // Maximum number of parallel processesdefine('PARALLEL_BATCH_SIZE', 200); // Number of proxies processed per batch

💡 Performance Recommendations:

  • For 4-core 8GB servers, it's recommended to keep the default configuration
  • For higher-spec servers, you can appropriately increase PARALLEL_MAX_PROCESSES
  • If network latency is high, you can appropriately reduce PARALLEL_BATCH_SIZE

Installation Steps

1. Install Dependencies

# Install Composer dependencies
composer install

2. Configure System

Edit the config.php file and modify the following configurations:

// Email configurationdefine('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-password');
define('SMTP_TO_EMAIL', 'admin@example.com');
// Monitoring configurationdefine('CHECK_INTERVAL', 300); // Check interval (seconds)define('TIMEOUT', 10); // Timeout (seconds)define('ALERT_THRESHOLD', 3); // Consecutive failure threshold

3. Test System

php test.php

4. Import Proxies

Visit http://your-domain/netwatch/import.php or use command line:

# Import from file
php import.php

Proxy format examples:

192.168.1.100:1080:socks5
192.168.1.101:8080:http:username:password
10.0.0.1:1080:socks5:user:pass

5. Start Monitoring

# Start background monitoring service
php scheduler.php

Or use systemd service:

# Create service file
sudo nano /etc/systemd/system/netwatch.service

Service file content:

[Unit]Description=NetWatch Monitor Service
After=network.target
[Service]Type=simple
User=www-data
WorkingDirectory=/path/to/netwatch
ExecStart=/usr/bin/php scheduler.php
Restart=always
RestartSec=10
[Install]WantedBy=multi-user.target

Start service:

sudo systemctl enable netwatch
sudo systemctl start netwatch

Usage Instructions

Web Interface

Visit http://your-domain/netwatch/ to view the monitoring dashboard:

NetWatch Demo Interface

  • Statistics Overview: Shows total proxy count, online/offline status, average response time
  • Proxy List: Shows detailed status information for all proxies
  • Check Logs: Shows recent monitoring check records
  • Manual Check: Allows manual triggering of individual or all proxy checks

Proxy Import

Individual Proxy Import

Visit http://your-domain/netwatch/import.php for batch import:

  • Supports text paste import
  • Supports file upload import
  • Automatically skips incorrectly formatted lines
  • Shows import result statistics

Subnet Batch Import

Visit http://your-domain/netwatch/import_subnets.php for subnet batch import:

  • Batch Generation: Supports multiple subnets using the same port/username/password configuration
  • IP Range: Define subnet ranges through start IP and end IP
  • Multi-Subnet Support: Up to 20 different subnets can be configured simultaneously
  • Preview Function: Preview the number of proxies to be generated before import
  • Import Modes: Supports skip duplicates, overwrite updates, and other modes

Usage examples:

  • Subnet 1: 192.168.1.2 to 192.168.1.30 (29 proxies)
  • Subnet 2: 10.0.0.10 to 10.0.0.50 (41 proxies)
  • Unified configuration: Port 1080, SOCKS5 protocol, username/password

Email Notifications

The system sends emails in the following situations:

  • Failure Notifications: When proxies fail consecutively reaching the threshold
  • Daily Reports: System status reports sent daily at 9 AM

Configuration File Description

config.php

Configuration ItemDescriptionDefault Value
DB_PATHSQLite database file path./data/netwatch.db
SMTP_HOSTSMTP server addresssmtp.gmail.com
SMTP_PORTSMTP port587
CHECK_INTERVALCheck interval (seconds)300
TIMEOUTConnection timeout (seconds)10
ALERT_THRESHOLDFailure notification threshold3
TEST_URLTest URLhttp://httpbin.org/ip

Directory Structure

NetWatch/
├── config.php # Main configuration file
├── index.php # Main entry file, Web interface
├── auth.php # User authentication module
├── database.php # Database operation class
├── monitor.php # Single-process monitoring implementation
├── parallel_monitor.php # Parallel monitoring implementation
├── parallel_worker.php # Parallel worker process
├── parallel_batch_manager.php # Batch task management
├── import.php # Proxy import script
├── import_subnets.php # Subnet batch import tool
├── mailer.php # Email notification module
├── logger.php # Logging module
├── scheduler.php # Scheduled task scheduler
├── clear_proxies.php # Proxy cleanup tool
├── login.php # Login page
├── config.example.php # Configuration file example
├── composer.json # Composer dependency configuration
├── data/ # Data directory
│ └── netwatch.db # SQLite database
├── logs/ # Log directory
│ └── netwatch_*.log # Log files
├── proxy-status/ # Proxy traffic monitoring
│ ├── index.php # Traffic monitoring dashboard
│ └── update.php # Manual traffic update endpoint
├── Debug/ # Debug-related files
└── Docs/ # Documentation directory

Main File Descriptions

  • config.php - System configuration file containing database connections, email settings, etc.
  • index.php - Main entry file providing web management interface
  • monitor.php - Single-process proxy monitoring implementation
  • parallel_*.php - Parallel monitoring related files supporting high-performance batch detection
  • import.php* - Proxy import tools supporting individual proxy and subnet batch import
  • mailer.php - Email notification module for sending alerts
  • logger.php - Logging module for recording system runtime status
  • scheduler.php - Scheduled task scheduler for periodic monitoring execution

API Interface

The system provides simple AJAX APIs:

  • GET /?ajax=1&action=stats - Get statistics information
  • GET /?ajax=1&action=check&proxy_id=1 - Check specified proxy
  • GET /?ajax=1&action=logs - Get recent logs

Security Audit Notes

  • The proxy-status/ sub-application is tracked separately for security/code-quality review.
  • Audit checklist and scope: Docs/PROXY_STATUS_AUDIT.md

Troubleshooting

Common Issues

  1. Database Connection Failed

    • Check data directory permissions
    • Ensure PHP has SQLite extension
  2. Email Sending Failed

    • Check SMTP configuration
    • Confirm email password is correct
    • May need to use app-specific password
  3. Proxy Check Failed

    • Check network connection
    • Confirm curl extension is installed
    • Check firewall settings
  4. Permission Issues

    • Ensure web server has write permissions to data and logs directories
    • Check file ownership and permission settings

Log Viewing

# View latest logs
tail -f logs/netwatch_$(date +%Y-%m-%d).log
# View error logs
grep ERROR logs/netwatch_*.log

Performance Optimization

For monitoring large numbers of proxies (5000+):

  1. Adjust Check Interval: Adjust CHECK_INTERVAL as needed
  2. Concurrent Checking: Can modify code to implement multi-threaded checking
  3. Database Optimization: Regularly clean old log data
  4. Caching Mechanism: Can add Redis caching to improve performance

License

MIT License

About

NetWatch: monitor the HTTP/SOCKS 5 proxy network status.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

675 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NetWatch - Network Proxy Monitoring System

NetWatch is a high-performance PHP-based network proxy monitoring system designed specifically for monitoring the availability status of large numbers of SOCKS5 and HTTP proxies. It supports parallel processing and can efficiently monitor thousands of proxy servers.

Features

  • 🌐 Multi-Protocol Support: Supports SOCKS5 and HTTP proxy monitoring
  • 🚀 High-Performance Parallel Processing: Supports multi-process parallel detection, up to 12 concurrent processes, 500 proxies per batch
  • 📊 Real-Time Monitoring: Real-time detection of proxy server status and response times
  • 📧 Email Notifications: Automatic email notifications when proxy failures occur
  • 📈 Web Interface: Clean and beautiful web management interface
  • 📝 Logging: Detailed monitoring logs and historical records
  • 🔄 Automatic Scheduling: Background scheduled tasks for automatic monitoring
  • 📥 Batch Import: Support for batch importing proxy configurations
  • 💾 SQLite Database: Lightweight database with no additional configuration required
  • ⏱️ Timezone Support: Automatic timezone conversion with Beijing time display support

System Requirements

  • PHP 8.0+
  • cURL extension
  • SQLite extension
  • PCNTL extension (for parallel processing)
  • POSIX extension
  • Configured web server (Nginx + PHP-FPM or Apache)

Performance Configuration

The system has the following default performance parameters configured, which you can adjust according to your server configuration (modify in index.php):

define('PARALLEL_MAX_PROCESSES', 24); // Maximum number of parallel processesdefine('PARALLEL_BATCH_SIZE', 200); // Number of proxies processed per batch

💡 Performance Recommendations:

  • For 4-core 8GB servers, it's recommended to keep the default configuration
  • For higher-spec servers, you can appropriately increase PARALLEL_MAX_PROCESSES
  • If network latency is high, you can appropriately reduce PARALLEL_BATCH_SIZE

Installation Steps

1. Install Dependencies

# Install Composer dependencies
composer install

2. Configure System

Edit the config.php file and modify the following configurations:

// Email configurationdefine('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-password');
define('SMTP_TO_EMAIL', 'admin@example.com');
// Monitoring configurationdefine('CHECK_INTERVAL', 300); // Check interval (seconds)define('TIMEOUT', 10); // Timeout (seconds)define('ALERT_THRESHOLD', 3); // Consecutive failure threshold

3. Test System

php test.php

4. Import Proxies

Visit http://your-domain/netwatch/import.php or use command line:

# Import from file
php import.php

Proxy format examples:

192.168.1.100:1080:socks5
192.168.1.101:8080:http:username:password
10.0.0.1:1080:socks5:user:pass

5. Start Monitoring

# Start background monitoring service
php scheduler.php

Or use systemd service:

# Create service file
sudo nano /etc/systemd/system/netwatch.service

Service file content:

[Unit]Description=NetWatch Monitor Service
After=network.target
[Service]Type=simple
User=www-data
WorkingDirectory=/path/to/netwatch
ExecStart=/usr/bin/php scheduler.php
Restart=always
RestartSec=10
[Install]WantedBy=multi-user.target

Start service:

sudo systemctl enable netwatch
sudo systemctl start netwatch

Usage Instructions

Web Interface

Visit http://your-domain/netwatch/ to view the monitoring dashboard:

NetWatch Demo Interface

  • Statistics Overview: Shows total proxy count, online/offline status, average response time
  • Proxy List: Shows detailed status information for all proxies
  • Check Logs: Shows recent monitoring check records
  • Manual Check: Allows manual triggering of individual or all proxy checks

Proxy Import

Individual Proxy Import

Visit http://your-domain/netwatch/import.php for batch import:

  • Supports text paste import
  • Supports file upload import
  • Automatically skips incorrectly formatted lines
  • Shows import result statistics

Subnet Batch Import

Visit http://your-domain/netwatch/import_subnets.php for subnet batch import:

  • Batch Generation: Supports multiple subnets using the same port/username/password configuration
  • IP Range: Define subnet ranges through start IP and end IP
  • Multi-Subnet Support: Up to 20 different subnets can be configured simultaneously
  • Preview Function: Preview the number of proxies to be generated before import
  • Import Modes: Supports skip duplicates, overwrite updates, and other modes

Usage examples:

  • Subnet 1: 192.168.1.2 to 192.168.1.30 (29 proxies)
  • Subnet 2: 10.0.0.10 to 10.0.0.50 (41 proxies)
  • Unified configuration: Port 1080, SOCKS5 protocol, username/password

Email Notifications

The system sends emails in the following situations:

  • Failure Notifications: When proxies fail consecutively reaching the threshold
  • Daily Reports: System status reports sent daily at 9 AM

Configuration File Description

config.php

Configuration ItemDescriptionDefault Value
DB_PATHSQLite database file path./data/netwatch.db
SMTP_HOSTSMTP server addresssmtp.gmail.com
SMTP_PORTSMTP port587
CHECK_INTERVALCheck interval (seconds)300
TIMEOUTConnection timeout (seconds)10
ALERT_THRESHOLDFailure notification threshold3
TEST_URLTest URLhttp://httpbin.org/ip

Directory Structure

NetWatch/
├── config.php # Main configuration file
├── index.php # Main entry file, Web interface
├── auth.php # User authentication module
├── database.php # Database operation class
├── monitor.php # Single-process monitoring implementation
├── parallel_monitor.php # Parallel monitoring implementation
├── parallel_worker.php # Parallel worker process
├── parallel_batch_manager.php # Batch task management
├── import.php # Proxy import script
├── import_subnets.php # Subnet batch import tool
├── mailer.php # Email notification module
├── logger.php # Logging module
├── scheduler.php # Scheduled task scheduler
├── clear_proxies.php # Proxy cleanup tool
├── login.php # Login page
├── config.example.php # Configuration file example
├── composer.json # Composer dependency configuration
├── data/ # Data directory
│ └── netwatch.db # SQLite database
├── logs/ # Log directory
│ └── netwatch_*.log # Log files
├── proxy-status/ # Proxy traffic monitoring
│ ├── index.php # Traffic monitoring dashboard
│ └── update.php # Manual traffic update endpoint
├── Debug/ # Debug-related files
└── Docs/ # Documentation directory

Main File Descriptions

  • config.php - System configuration file containing database connections, email settings, etc.
  • index.php - Main entry file providing web management interface
  • monitor.php - Single-process proxy monitoring implementation
  • parallel_*.php - Parallel monitoring related files supporting high-performance batch detection
  • import.php* - Proxy import tools supporting individual proxy and subnet batch import
  • mailer.php - Email notification module for sending alerts
  • logger.php - Logging module for recording system runtime status
  • scheduler.php - Scheduled task scheduler for periodic monitoring execution

API Interface

The system provides simple AJAX APIs:

  • GET /?ajax=1&action=stats - Get statistics information
  • GET /?ajax=1&action=check&proxy_id=1 - Check specified proxy
  • GET /?ajax=1&action=logs - Get recent logs

Security Audit Notes

  • The proxy-status/ sub-application is tracked separately for security/code-quality review.
  • Audit checklist and scope: Docs/PROXY_STATUS_AUDIT.md

Troubleshooting

Common Issues

  1. Database Connection Failed

    • Check data directory permissions
    • Ensure PHP has SQLite extension
  2. Email Sending Failed

    • Check SMTP configuration
    • Confirm email password is correct
    • May need to use app-specific password
  3. Proxy Check Failed

    • Check network connection
    • Confirm curl extension is installed
    • Check firewall settings
  4. Permission Issues

    • Ensure web server has write permissions to data and logs directories
    • Check file ownership and permission settings

Log Viewing

# View latest logs
tail -f logs/netwatch_$(date +%Y-%m-%d).log
# View error logs
grep ERROR logs/netwatch_*.log

Performance Optimization

For monitoring large numbers of proxies (5000+):

  1. Adjust Check Interval: Adjust CHECK_INTERVAL as needed
  2. Concurrent Checking: Can modify code to implement multi-threaded checking
  3. Database Optimization: Regularly clean old log data
  4. Caching Mechanism: Can add Redis caching to improve performance

License

MIT License

About

NetWatch: monitor the HTTP/SOCKS 5 proxy network status.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

675 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NetWatch - Network Proxy Monitoring System

NetWatch is a high-performance PHP-based network proxy monitoring system designed specifically for monitoring the availability status of large numbers of SOCKS5 and HTTP proxies. It supports parallel processing and can efficiently monitor thousands of proxy servers.

Features

  • 🌐 Multi-Protocol Support: Supports SOCKS5 and HTTP proxy monitoring
  • 🚀 High-Performance Parallel Processing: Supports multi-process parallel detection, up to 12 concurrent processes, 500 proxies per batch
  • 📊 Real-Time Monitoring: Real-time detection of proxy server status and response times
  • 📧 Email Notifications: Automatic email notifications when proxy failures occur
  • 📈 Web Interface: Clean and beautiful web management interface
  • 📝 Logging: Detailed monitoring logs and historical records
  • 🔄 Automatic Scheduling: Background scheduled tasks for automatic monitoring
  • 📥 Batch Import: Support for batch importing proxy configurations
  • 💾 SQLite Database: Lightweight database with no additional configuration required
  • ⏱️ Timezone Support: Automatic timezone conversion with Beijing time display support

System Requirements

  • PHP 8.0+
  • cURL extension
  • SQLite extension
  • PCNTL extension (for parallel processing)
  • POSIX extension
  • Configured web server (Nginx + PHP-FPM or Apache)

Performance Configuration

The system has the following default performance parameters configured, which you can adjust according to your server configuration (modify in index.php):

define('PARALLEL_MAX_PROCESSES', 24); // Maximum number of parallel processesdefine('PARALLEL_BATCH_SIZE', 200); // Number of proxies processed per batch

💡 Performance Recommendations:

  • For 4-core 8GB servers, it's recommended to keep the default configuration
  • For higher-spec servers, you can appropriately increase PARALLEL_MAX_PROCESSES
  • If network latency is high, you can appropriately reduce PARALLEL_BATCH_SIZE

Installation Steps

1. Install Dependencies

# Install Composer dependencies
composer install

2. Configure System

Edit the config.php file and modify the following configurations:

// Email configurationdefine('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-password');
define('SMTP_TO_EMAIL', 'admin@example.com');
// Monitoring configurationdefine('CHECK_INTERVAL', 300); // Check interval (seconds)define('TIMEOUT', 10); // Timeout (seconds)define('ALERT_THRESHOLD', 3); // Consecutive failure threshold

3. Test System

php test.php

4. Import Proxies

Visit http://your-domain/netwatch/import.php or use command line:

# Import from file
php import.php

Proxy format examples:

192.168.1.100:1080:socks5
192.168.1.101:8080:http:username:password
10.0.0.1:1080:socks5:user:pass

5. Start Monitoring

# Start background monitoring service
php scheduler.php

Or use systemd service:

# Create service file
sudo nano /etc/systemd/system/netwatch.service

Service file content:

[Unit]Description=NetWatch Monitor Service
After=network.target
[Service]Type=simple
User=www-data
WorkingDirectory=/path/to/netwatch
ExecStart=/usr/bin/php scheduler.php
Restart=always
RestartSec=10
[Install]WantedBy=multi-user.target

Start service:

sudo systemctl enable netwatch
sudo systemctl start netwatch

Usage Instructions

Web Interface

Visit http://your-domain/netwatch/ to view the monitoring dashboard:

NetWatch Demo Interface

  • Statistics Overview: Shows total proxy count, online/offline status, average response time
  • Proxy List: Shows detailed status information for all proxies
  • Check Logs: Shows recent monitoring check records
  • Manual Check: Allows manual triggering of individual or all proxy checks

Proxy Import

Individual Proxy Import

Visit http://your-domain/netwatch/import.php for batch import:

  • Supports text paste import
  • Supports file upload import
  • Automatically skips incorrectly formatted lines
  • Shows import result statistics

Subnet Batch Import

Visit http://your-domain/netwatch/import_subnets.php for subnet batch import:

  • Batch Generation: Supports multiple subnets using the same port/username/password configuration
  • IP Range: Define subnet ranges through start IP and end IP
  • Multi-Subnet Support: Up to 20 different subnets can be configured simultaneously
  • Preview Function: Preview the number of proxies to be generated before import
  • Import Modes: Supports skip duplicates, overwrite updates, and other modes

Usage examples:

  • Subnet 1: 192.168.1.2 to 192.168.1.30 (29 proxies)
  • Subnet 2: 10.0.0.10 to 10.0.0.50 (41 proxies)
  • Unified configuration: Port 1080, SOCKS5 protocol, username/password

Email Notifications

The system sends emails in the following situations:

  • Failure Notifications: When proxies fail consecutively reaching the threshold
  • Daily Reports: System status reports sent daily at 9 AM

Configuration File Description

config.php

Configuration ItemDescriptionDefault Value
DB_PATHSQLite database file path./data/netwatch.db
SMTP_HOSTSMTP server addresssmtp.gmail.com
SMTP_PORTSMTP port587
CHECK_INTERVALCheck interval (seconds)300
TIMEOUTConnection timeout (seconds)10
ALERT_THRESHOLDFailure notification threshold3
TEST_URLTest URLhttp://httpbin.org/ip

Directory Structure

NetWatch/
├── config.php # Main configuration file
├── index.php # Main entry file, Web interface
├── auth.php # User authentication module
├── database.php # Database operation class
├── monitor.php # Single-process monitoring implementation
├── parallel_monitor.php # Parallel monitoring implementation
├── parallel_worker.php # Parallel worker process
├── parallel_batch_manager.php # Batch task management
├── import.php # Proxy import script
├── import_subnets.php # Subnet batch import tool
├── mailer.php # Email notification module
├── logger.php # Logging module
├── scheduler.php # Scheduled task scheduler
├── clear_proxies.php # Proxy cleanup tool
├── login.php # Login page
├── config.example.php # Configuration file example
├── composer.json # Composer dependency configuration
├── data/ # Data directory
│ └── netwatch.db # SQLite database
├── logs/ # Log directory
│ └── netwatch_*.log # Log files
├── proxy-status/ # Proxy traffic monitoring
│ ├── index.php # Traffic monitoring dashboard
│ └── update.php # Manual traffic update endpoint
├── Debug/ # Debug-related files
└── Docs/ # Documentation directory

Main File Descriptions

  • config.php - System configuration file containing database connections, email settings, etc.
  • index.php - Main entry file providing web management interface
  • monitor.php - Single-process proxy monitoring implementation
  • parallel_*.php - Parallel monitoring related files supporting high-performance batch detection
  • import.php* - Proxy import tools supporting individual proxy and subnet batch import
  • mailer.php - Email notification module for sending alerts
  • logger.php - Logging module for recording system runtime status
  • scheduler.php - Scheduled task scheduler for periodic monitoring execution

API Interface

The system provides simple AJAX APIs:

  • GET /?ajax=1&action=stats - Get statistics information
  • GET /?ajax=1&action=check&proxy_id=1 - Check specified proxy
  • GET /?ajax=1&action=logs - Get recent logs

Security Audit Notes

  • The proxy-status/ sub-application is tracked separately for security/code-quality review.
  • Audit checklist and scope: Docs/PROXY_STATUS_AUDIT.md

Troubleshooting

Common Issues

  1. Database Connection Failed

    • Check data directory permissions
    • Ensure PHP has SQLite extension
  2. Email Sending Failed

    • Check SMTP configuration
    • Confirm email password is correct
    • May need to use app-specific password
  3. Proxy Check Failed

    • Check network connection
    • Confirm curl extension is installed
    • Check firewall settings
  4. Permission Issues

    • Ensure web server has write permissions to data and logs directories
    • Check file ownership and permission settings

Log Viewing

# View latest logs
tail -f logs/netwatch_$(date +%Y-%m-%d).log
# View error logs
grep ERROR logs/netwatch_*.log

Performance Optimization

For monitoring large numbers of proxies (5000+):

  1. Adjust Check Interval: Adjust CHECK_INTERVAL as needed
  2. Concurrent Checking: Can modify code to implement multi-threaded checking
  3. Database Optimization: Regularly clean old log data
  4. Caching Mechanism: Can add Redis caching to improve performance

License

MIT License

About

NetWatch: monitor the HTTP/SOCKS 5 proxy network status.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

675 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NetWatch - Network Proxy Monitoring System

NetWatch is a high-performance PHP-based network proxy monitoring system designed specifically for monitoring the availability status of large numbers of SOCKS5 and HTTP proxies. It supports parallel processing and can efficiently monitor thousands of proxy servers.

Features

  • 🌐 Multi-Protocol Support: Supports SOCKS5 and HTTP proxy monitoring
  • 🚀 High-Performance Parallel Processing: Supports multi-process parallel detection, up to 12 concurrent processes, 500 proxies per batch
  • 📊 Real-Time Monitoring: Real-time detection of proxy server status and response times
  • 📧 Email Notifications: Automatic email notifications when proxy failures occur
  • 📈 Web Interface: Clean and beautiful web management interface
  • 📝 Logging: Detailed monitoring logs and historical records
  • 🔄 Automatic Scheduling: Background scheduled tasks for automatic monitoring
  • 📥 Batch Import: Support for batch importing proxy configurations
  • 💾 SQLite Database: Lightweight database with no additional configuration required
  • ⏱️ Timezone Support: Automatic timezone conversion with Beijing time display support

System Requirements

  • PHP 8.0+
  • cURL extension
  • SQLite extension
  • PCNTL extension (for parallel processing)
  • POSIX extension
  • Configured web server (Nginx + PHP-FPM or Apache)

Performance Configuration

The system has the following default performance parameters configured, which you can adjust according to your server configuration (modify in index.php):

define('PARALLEL_MAX_PROCESSES', 24); // Maximum number of parallel processesdefine('PARALLEL_BATCH_SIZE', 200); // Number of proxies processed per batch

💡 Performance Recommendations:

  • For 4-core 8GB servers, it's recommended to keep the default configuration
  • For higher-spec servers, you can appropriately increase PARALLEL_MAX_PROCESSES
  • If network latency is high, you can appropriately reduce PARALLEL_BATCH_SIZE

Installation Steps

1. Install Dependencies

# Install Composer dependencies
composer install

2. Configure System

Edit the config.php file and modify the following configurations:

// Email configurationdefine('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-password');
define('SMTP_TO_EMAIL', 'admin@example.com');
// Monitoring configurationdefine('CHECK_INTERVAL', 300); // Check interval (seconds)define('TIMEOUT', 10); // Timeout (seconds)define('ALERT_THRESHOLD', 3); // Consecutive failure threshold

3. Test System

php test.php

4. Import Proxies

Visit http://your-domain/netwatch/import.php or use command line:

# Import from file
php import.php

Proxy format examples:

192.168.1.100:1080:socks5
192.168.1.101:8080:http:username:password
10.0.0.1:1080:socks5:user:pass

5. Start Monitoring

# Start background monitoring service
php scheduler.php

Or use systemd service:

# Create service file
sudo nano /etc/systemd/system/netwatch.service

Service file content:

[Unit]Description=NetWatch Monitor Service
After=network.target
[Service]Type=simple
User=www-data
WorkingDirectory=/path/to/netwatch
ExecStart=/usr/bin/php scheduler.php
Restart=always
RestartSec=10
[Install]WantedBy=multi-user.target

Start service:

sudo systemctl enable netwatch
sudo systemctl start netwatch

Usage Instructions

Web Interface

Visit http://your-domain/netwatch/ to view the monitoring dashboard:

NetWatch Demo Interface

  • Statistics Overview: Shows total proxy count, online/offline status, average response time
  • Proxy List: Shows detailed status information for all proxies
  • Check Logs: Shows recent monitoring check records
  • Manual Check: Allows manual triggering of individual or all proxy checks

Proxy Import

Individual Proxy Import

Visit http://your-domain/netwatch/import.php for batch import:

  • Supports text paste import
  • Supports file upload import
  • Automatically skips incorrectly formatted lines
  • Shows import result statistics

Subnet Batch Import

Visit http://your-domain/netwatch/import_subnets.php for subnet batch import:

  • Batch Generation: Supports multiple subnets using the same port/username/password configuration
  • IP Range: Define subnet ranges through start IP and end IP
  • Multi-Subnet Support: Up to 20 different subnets can be configured simultaneously
  • Preview Function: Preview the number of proxies to be generated before import
  • Import Modes: Supports skip duplicates, overwrite updates, and other modes

Usage examples:

  • Subnet 1: 192.168.1.2 to 192.168.1.30 (29 proxies)
  • Subnet 2: 10.0.0.10 to 10.0.0.50 (41 proxies)
  • Unified configuration: Port 1080, SOCKS5 protocol, username/password

Email Notifications

The system sends emails in the following situations:

  • Failure Notifications: When proxies fail consecutively reaching the threshold
  • Daily Reports: System status reports sent daily at 9 AM

Configuration File Description

config.php

Configuration ItemDescriptionDefault Value
DB_PATHSQLite database file path./data/netwatch.db
SMTP_HOSTSMTP server addresssmtp.gmail.com
SMTP_PORTSMTP port587
CHECK_INTERVALCheck interval (seconds)300
TIMEOUTConnection timeout (seconds)10
ALERT_THRESHOLDFailure notification threshold3
TEST_URLTest URLhttp://httpbin.org/ip

Directory Structure

NetWatch/
├── config.php # Main configuration file
├── index.php # Main entry file, Web interface
├── auth.php # User authentication module
├── database.php # Database operation class
├── monitor.php # Single-process monitoring implementation
├── parallel_monitor.php # Parallel monitoring implementation
├── parallel_worker.php # Parallel worker process
├── parallel_batch_manager.php # Batch task management
├── import.php # Proxy import script
├── import_subnets.php # Subnet batch import tool
├── mailer.php # Email notification module
├── logger.php # Logging module
├── scheduler.php # Scheduled task scheduler
├── clear_proxies.php # Proxy cleanup tool
├── login.php # Login page
├── config.example.php # Configuration file example
├── composer.json # Composer dependency configuration
├── data/ # Data directory
│ └── netwatch.db # SQLite database
├── logs/ # Log directory
│ └── netwatch_*.log # Log files
├── proxy-status/ # Proxy traffic monitoring
│ ├── index.php # Traffic monitoring dashboard
│ └── update.php # Manual traffic update endpoint
├── Debug/ # Debug-related files
└── Docs/ # Documentation directory

Main File Descriptions

  • config.php - System configuration file containing database connections, email settings, etc.
  • index.php - Main entry file providing web management interface
  • monitor.php - Single-process proxy monitoring implementation
  • parallel_*.php - Parallel monitoring related files supporting high-performance batch detection
  • import.php* - Proxy import tools supporting individual proxy and subnet batch import
  • mailer.php - Email notification module for sending alerts
  • logger.php - Logging module for recording system runtime status
  • scheduler.php - Scheduled task scheduler for periodic monitoring execution

API Interface

The system provides simple AJAX APIs:

  • GET /?ajax=1&action=stats - Get statistics information
  • GET /?ajax=1&action=check&proxy_id=1 - Check specified proxy
  • GET /?ajax=1&action=logs - Get recent logs

Security Audit Notes

  • The proxy-status/ sub-application is tracked separately for security/code-quality review.
  • Audit checklist and scope: Docs/PROXY_STATUS_AUDIT.md

Troubleshooting

Common Issues

  1. Database Connection Failed

    • Check data directory permissions
    • Ensure PHP has SQLite extension
  2. Email Sending Failed

    • Check SMTP configuration
    • Confirm email password is correct
    • May need to use app-specific password
  3. Proxy Check Failed

    • Check network connection
    • Confirm curl extension is installed
    • Check firewall settings
  4. Permission Issues

    • Ensure web server has write permissions to data and logs directories
    • Check file ownership and permission settings

Log Viewing

# View latest logs
tail -f logs/netwatch_$(date +%Y-%m-%d).log
# View error logs
grep ERROR logs/netwatch_*.log

Performance Optimization

For monitoring large numbers of proxies (5000+):

  1. Adjust Check Interval: Adjust CHECK_INTERVAL as needed
  2. Concurrent Checking: Can modify code to implement multi-threaded checking
  3. Database Optimization: Regularly clean old log data
  4. Caching Mechanism: Can add Redis caching to improve performance

License

MIT License

About

NetWatch: monitor the HTTP/SOCKS 5 proxy network status.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

675 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NetWatch - Network Proxy Monitoring System

NetWatch is a high-performance PHP-based network proxy monitoring system designed specifically for monitoring the availability status of large numbers of SOCKS5 and HTTP proxies. It supports parallel processing and can efficiently monitor thousands of proxy servers.

Features

  • 🌐 Multi-Protocol Support: Supports SOCKS5 and HTTP proxy monitoring
  • 🚀 High-Performance Parallel Processing: Supports multi-process parallel detection, up to 12 concurrent processes, 500 proxies per batch
  • 📊 Real-Time Monitoring: Real-time detection of proxy server status and response times
  • 📧 Email Notifications: Automatic email notifications when proxy failures occur
  • 📈 Web Interface: Clean and beautiful web management interface
  • 📝 Logging: Detailed monitoring logs and historical records
  • 🔄 Automatic Scheduling: Background scheduled tasks for automatic monitoring
  • 📥 Batch Import: Support for batch importing proxy configurations
  • 💾 SQLite Database: Lightweight database with no additional configuration required
  • ⏱️ Timezone Support: Automatic timezone conversion with Beijing time display support

System Requirements

  • PHP 8.0+
  • cURL extension
  • SQLite extension
  • PCNTL extension (for parallel processing)
  • POSIX extension
  • Configured web server (Nginx + PHP-FPM or Apache)

Performance Configuration

The system has the following default performance parameters configured, which you can adjust according to your server configuration (modify in index.php):

define('PARALLEL_MAX_PROCESSES', 24); // Maximum number of parallel processesdefine('PARALLEL_BATCH_SIZE', 200); // Number of proxies processed per batch

💡 Performance Recommendations:

  • For 4-core 8GB servers, it's recommended to keep the default configuration
  • For higher-spec servers, you can appropriately increase PARALLEL_MAX_PROCESSES
  • If network latency is high, you can appropriately reduce PARALLEL_BATCH_SIZE

Installation Steps

1. Install Dependencies

# Install Composer dependencies
composer install

2. Configure System

Edit the config.php file and modify the following configurations:

// Email configurationdefine('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-password');
define('SMTP_TO_EMAIL', 'admin@example.com');
// Monitoring configurationdefine('CHECK_INTERVAL', 300); // Check interval (seconds)define('TIMEOUT', 10); // Timeout (seconds)define('ALERT_THRESHOLD', 3); // Consecutive failure threshold

3. Test System

php test.php

4. Import Proxies

Visit http://your-domain/netwatch/import.php or use command line:

# Import from file
php import.php

Proxy format examples:

192.168.1.100:1080:socks5
192.168.1.101:8080:http:username:password
10.0.0.1:1080:socks5:user:pass

5. Start Monitoring

# Start background monitoring service
php scheduler.php

Or use systemd service:

# Create service file
sudo nano /etc/systemd/system/netwatch.service

Service file content:

[Unit]Description=NetWatch Monitor Service
After=network.target
[Service]Type=simple
User=www-data
WorkingDirectory=/path/to/netwatch
ExecStart=/usr/bin/php scheduler.php
Restart=always
RestartSec=10
[Install]WantedBy=multi-user.target

Start service:

sudo systemctl enable netwatch
sudo systemctl start netwatch

Usage Instructions

Web Interface

Visit http://your-domain/netwatch/ to view the monitoring dashboard:

NetWatch Demo Interface

  • Statistics Overview: Shows total proxy count, online/offline status, average response time
  • Proxy List: Shows detailed status information for all proxies
  • Check Logs: Shows recent monitoring check records
  • Manual Check: Allows manual triggering of individual or all proxy checks

Proxy Import

Individual Proxy Import

Visit http://your-domain/netwatch/import.php for batch import:

  • Supports text paste import
  • Supports file upload import
  • Automatically skips incorrectly formatted lines
  • Shows import result statistics

Subnet Batch Import

Visit http://your-domain/netwatch/import_subnets.php for subnet batch import:

  • Batch Generation: Supports multiple subnets using the same port/username/password configuration
  • IP Range: Define subnet ranges through start IP and end IP
  • Multi-Subnet Support: Up to 20 different subnets can be configured simultaneously
  • Preview Function: Preview the number of proxies to be generated before import
  • Import Modes: Supports skip duplicates, overwrite updates, and other modes

Usage examples:

  • Subnet 1: 192.168.1.2 to 192.168.1.30 (29 proxies)
  • Subnet 2: 10.0.0.10 to 10.0.0.50 (41 proxies)
  • Unified configuration: Port 1080, SOCKS5 protocol, username/password

Email Notifications

The system sends emails in the following situations:

  • Failure Notifications: When proxies fail consecutively reaching the threshold
  • Daily Reports: System status reports sent daily at 9 AM

Configuration File Description

config.php

Configuration ItemDescriptionDefault Value
DB_PATHSQLite database file path./data/netwatch.db
SMTP_HOSTSMTP server addresssmtp.gmail.com
SMTP_PORTSMTP port587
CHECK_INTERVALCheck interval (seconds)300
TIMEOUTConnection timeout (seconds)10
ALERT_THRESHOLDFailure notification threshold3
TEST_URLTest URLhttp://httpbin.org/ip

Directory Structure

NetWatch/
├── config.php # Main configuration file
├── index.php # Main entry file, Web interface
├── auth.php # User authentication module
├── database.php # Database operation class
├── monitor.php # Single-process monitoring implementation
├── parallel_monitor.php # Parallel monitoring implementation
├── parallel_worker.php # Parallel worker process
├── parallel_batch_manager.php # Batch task management
├── import.php # Proxy import script
├── import_subnets.php # Subnet batch import tool
├── mailer.php # Email notification module
├── logger.php # Logging module
├── scheduler.php # Scheduled task scheduler
├── clear_proxies.php # Proxy cleanup tool
├── login.php # Login page
├── config.example.php # Configuration file example
├── composer.json # Composer dependency configuration
├── data/ # Data directory
│ └── netwatch.db # SQLite database
├── logs/ # Log directory
│ └── netwatch_*.log # Log files
├── proxy-status/ # Proxy traffic monitoring
│ ├── index.php # Traffic monitoring dashboard
│ └── update.php # Manual traffic update endpoint
├── Debug/ # Debug-related files
└── Docs/ # Documentation directory

Main File Descriptions

  • config.php - System configuration file containing database connections, email settings, etc.
  • index.php - Main entry file providing web management interface
  • monitor.php - Single-process proxy monitoring implementation
  • parallel_*.php - Parallel monitoring related files supporting high-performance batch detection
  • import.php* - Proxy import tools supporting individual proxy and subnet batch import
  • mailer.php - Email notification module for sending alerts
  • logger.php - Logging module for recording system runtime status
  • scheduler.php - Scheduled task scheduler for periodic monitoring execution

API Interface

The system provides simple AJAX APIs:

  • GET /?ajax=1&action=stats - Get statistics information
  • GET /?ajax=1&action=check&proxy_id=1 - Check specified proxy
  • GET /?ajax=1&action=logs - Get recent logs

Security Audit Notes

  • The proxy-status/ sub-application is tracked separately for security/code-quality review.
  • Audit checklist and scope: Docs/PROXY_STATUS_AUDIT.md

Troubleshooting

Common Issues

  1. Database Connection Failed

    • Check data directory permissions
    • Ensure PHP has SQLite extension
  2. Email Sending Failed

    • Check SMTP configuration
    • Confirm email password is correct
    • May need to use app-specific password
  3. Proxy Check Failed

    • Check network connection
    • Confirm curl extension is installed
    • Check firewall settings
  4. Permission Issues

    • Ensure web server has write permissions to data and logs directories
    • Check file ownership and permission settings

Log Viewing

# View latest logs
tail -f logs/netwatch_$(date +%Y-%m-%d).log
# View error logs
grep ERROR logs/netwatch_*.log

Performance Optimization

For monitoring large numbers of proxies (5000+):

  1. Adjust Check Interval: Adjust CHECK_INTERVAL as needed
  2. Concurrent Checking: Can modify code to implement multi-threaded checking
  3. Database Optimization: Regularly clean old log data
  4. Caching Mechanism: Can add Redis caching to improve performance

License

MIT License

About

NetWatch: monitor the HTTP/SOCKS 5 proxy network status.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

675 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NetWatch - Network Proxy Monitoring System

NetWatch is a high-performance PHP-based network proxy monitoring system designed specifically for monitoring the availability status of large numbers of SOCKS5 and HTTP proxies. It supports parallel processing and can efficiently monitor thousands of proxy servers.

Features

  • 🌐 Multi-Protocol Support: Supports SOCKS5 and HTTP proxy monitoring
  • 🚀 High-Performance Parallel Processing: Supports multi-process parallel detection, up to 12 concurrent processes, 500 proxies per batch
  • 📊 Real-Time Monitoring: Real-time detection of proxy server status and response times
  • 📧 Email Notifications: Automatic email notifications when proxy failures occur
  • 📈 Web Interface: Clean and beautiful web management interface
  • 📝 Logging: Detailed monitoring logs and historical records
  • 🔄 Automatic Scheduling: Background scheduled tasks for automatic monitoring
  • 📥 Batch Import: Support for batch importing proxy configurations
  • 💾 SQLite Database: Lightweight database with no additional configuration required
  • ⏱️ Timezone Support: Automatic timezone conversion with Beijing time display support

System Requirements

  • PHP 8.0+
  • cURL extension
  • SQLite extension
  • PCNTL extension (for parallel processing)
  • POSIX extension
  • Configured web server (Nginx + PHP-FPM or Apache)

Performance Configuration

The system has the following default performance parameters configured, which you can adjust according to your server configuration (modify in index.php):

define('PARALLEL_MAX_PROCESSES', 24); // Maximum number of parallel processesdefine('PARALLEL_BATCH_SIZE', 200); // Number of proxies processed per batch

💡 Performance Recommendations:

  • For 4-core 8GB servers, it's recommended to keep the default configuration
  • For higher-spec servers, you can appropriately increase PARALLEL_MAX_PROCESSES
  • If network latency is high, you can appropriately reduce PARALLEL_BATCH_SIZE

Installation Steps

1. Install Dependencies

# Install Composer dependencies
composer install

2. Configure System

Edit the config.php file and modify the following configurations:

// Email configurationdefine('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-password');
define('SMTP_TO_EMAIL', 'admin@example.com');
// Monitoring configurationdefine('CHECK_INTERVAL', 300); // Check interval (seconds)define('TIMEOUT', 10); // Timeout (seconds)define('ALERT_THRESHOLD', 3); // Consecutive failure threshold

3. Test System

php test.php

4. Import Proxies

Visit http://your-domain/netwatch/import.php or use command line:

# Import from file
php import.php

Proxy format examples:

192.168.1.100:1080:socks5
192.168.1.101:8080:http:username:password
10.0.0.1:1080:socks5:user:pass

5. Start Monitoring

# Start background monitoring service
php scheduler.php

Or use systemd service:

# Create service file
sudo nano /etc/systemd/system/netwatch.service

Service file content:

[Unit]Description=NetWatch Monitor Service
After=network.target
[Service]Type=simple
User=www-data
WorkingDirectory=/path/to/netwatch
ExecStart=/usr/bin/php scheduler.php
Restart=always
RestartSec=10
[Install]WantedBy=multi-user.target

Start service:

sudo systemctl enable netwatch
sudo systemctl start netwatch

Usage Instructions

Web Interface

Visit http://your-domain/netwatch/ to view the monitoring dashboard:

NetWatch Demo Interface

  • Statistics Overview: Shows total proxy count, online/offline status, average response time
  • Proxy List: Shows detailed status information for all proxies
  • Check Logs: Shows recent monitoring check records
  • Manual Check: Allows manual triggering of individual or all proxy checks

Proxy Import

Individual Proxy Import

Visit http://your-domain/netwatch/import.php for batch import:

  • Supports text paste import
  • Supports file upload import
  • Automatically skips incorrectly formatted lines
  • Shows import result statistics

Subnet Batch Import

Visit http://your-domain/netwatch/import_subnets.php for subnet batch import:

  • Batch Generation: Supports multiple subnets using the same port/username/password configuration
  • IP Range: Define subnet ranges through start IP and end IP
  • Multi-Subnet Support: Up to 20 different subnets can be configured simultaneously
  • Preview Function: Preview the number of proxies to be generated before import
  • Import Modes: Supports skip duplicates, overwrite updates, and other modes

Usage examples:

  • Subnet 1: 192.168.1.2 to 192.168.1.30 (29 proxies)
  • Subnet 2: 10.0.0.10 to 10.0.0.50 (41 proxies)
  • Unified configuration: Port 1080, SOCKS5 protocol, username/password

Email Notifications

The system sends emails in the following situations:

  • Failure Notifications: When proxies fail consecutively reaching the threshold
  • Daily Reports: System status reports sent daily at 9 AM

Configuration File Description

config.php

Configuration ItemDescriptionDefault Value
DB_PATHSQLite database file path./data/netwatch.db
SMTP_HOSTSMTP server addresssmtp.gmail.com
SMTP_PORTSMTP port587
CHECK_INTERVALCheck interval (seconds)300
TIMEOUTConnection timeout (seconds)10
ALERT_THRESHOLDFailure notification threshold3
TEST_URLTest URLhttp://httpbin.org/ip

Directory Structure

NetWatch/
├── config.php # Main configuration file
├── index.php # Main entry file, Web interface
├── auth.php # User authentication module
├── database.php # Database operation class
├── monitor.php # Single-process monitoring implementation
├── parallel_monitor.php # Parallel monitoring implementation
├── parallel_worker.php # Parallel worker process
├── parallel_batch_manager.php # Batch task management
├── import.php # Proxy import script
├── import_subnets.php # Subnet batch import tool
├── mailer.php # Email notification module
├── logger.php # Logging module
├── scheduler.php # Scheduled task scheduler
├── clear_proxies.php # Proxy cleanup tool
├── login.php # Login page
├── config.example.php # Configuration file example
├── composer.json # Composer dependency configuration
├── data/ # Data directory
│ └── netwatch.db # SQLite database
├── logs/ # Log directory
│ └── netwatch_*.log # Log files
├── proxy-status/ # Proxy traffic monitoring
│ ├── index.php # Traffic monitoring dashboard
│ └── update.php # Manual traffic update endpoint
├── Debug/ # Debug-related files
└── Docs/ # Documentation directory

Main File Descriptions

  • config.php - System configuration file containing database connections, email settings, etc.
  • index.php - Main entry file providing web management interface
  • monitor.php - Single-process proxy monitoring implementation
  • parallel_*.php - Parallel monitoring related files supporting high-performance batch detection
  • import.php* - Proxy import tools supporting individual proxy and subnet batch import
  • mailer.php - Email notification module for sending alerts
  • logger.php - Logging module for recording system runtime status
  • scheduler.php - Scheduled task scheduler for periodic monitoring execution

API Interface

The system provides simple AJAX APIs:

  • GET /?ajax=1&action=stats - Get statistics information
  • GET /?ajax=1&action=check&proxy_id=1 - Check specified proxy
  • GET /?ajax=1&action=logs - Get recent logs

Security Audit Notes

  • The proxy-status/ sub-application is tracked separately for security/code-quality review.
  • Audit checklist and scope: Docs/PROXY_STATUS_AUDIT.md

Troubleshooting

Common Issues

  1. Database Connection Failed

    • Check data directory permissions
    • Ensure PHP has SQLite extension
  2. Email Sending Failed

    • Check SMTP configuration
    • Confirm email password is correct
    • May need to use app-specific password
  3. Proxy Check Failed

    • Check network connection
    • Confirm curl extension is installed
    • Check firewall settings
  4. Permission Issues

    • Ensure web server has write permissions to data and logs directories
    • Check file ownership and permission settings

Log Viewing

# View latest logs
tail -f logs/netwatch_$(date +%Y-%m-%d).log
# View error logs
grep ERROR logs/netwatch_*.log

Performance Optimization

For monitoring large numbers of proxies (5000+):

  1. Adjust Check Interval: Adjust CHECK_INTERVAL as needed
  2. Concurrent Checking: Can modify code to implement multi-threaded checking
  3. Database Optimization: Regularly clean old log data
  4. Caching Mechanism: Can add Redis caching to improve performance

License

MIT License

About

NetWatch: monitor the HTTP/SOCKS 5 proxy network status.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

675 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NetWatch - Network Proxy Monitoring System

NetWatch is a high-performance PHP-based network proxy monitoring system designed specifically for monitoring the availability status of large numbers of SOCKS5 and HTTP proxies. It supports parallel processing and can efficiently monitor thousands of proxy servers.

Features

  • 🌐 Multi-Protocol Support: Supports SOCKS5 and HTTP proxy monitoring
  • 🚀 High-Performance Parallel Processing: Supports multi-process parallel detection, up to 12 concurrent processes, 500 proxies per batch
  • 📊 Real-Time Monitoring: Real-time detection of proxy server status and response times
  • 📧 Email Notifications: Automatic email notifications when proxy failures occur
  • 📈 Web Interface: Clean and beautiful web management interface
  • 📝 Logging: Detailed monitoring logs and historical records
  • 🔄 Automatic Scheduling: Background scheduled tasks for automatic monitoring
  • 📥 Batch Import: Support for batch importing proxy configurations
  • 💾 SQLite Database: Lightweight database with no additional configuration required
  • ⏱️ Timezone Support: Automatic timezone conversion with Beijing time display support

System Requirements

  • PHP 8.0+
  • cURL extension
  • SQLite extension
  • PCNTL extension (for parallel processing)
  • POSIX extension
  • Configured web server (Nginx + PHP-FPM or Apache)

Performance Configuration

The system has the following default performance parameters configured, which you can adjust according to your server configuration (modify in index.php):

define('PARALLEL_MAX_PROCESSES', 24); // Maximum number of parallel processesdefine('PARALLEL_BATCH_SIZE', 200); // Number of proxies processed per batch

💡 Performance Recommendations:

  • For 4-core 8GB servers, it's recommended to keep the default configuration
  • For higher-spec servers, you can appropriately increase PARALLEL_MAX_PROCESSES
  • If network latency is high, you can appropriately reduce PARALLEL_BATCH_SIZE

Installation Steps

1. Install Dependencies

# Install Composer dependencies
composer install

2. Configure System

Edit the config.php file and modify the following configurations:

// Email configurationdefine('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-password');
define('SMTP_TO_EMAIL', 'admin@example.com');
// Monitoring configurationdefine('CHECK_INTERVAL', 300); // Check interval (seconds)define('TIMEOUT', 10); // Timeout (seconds)define('ALERT_THRESHOLD', 3); // Consecutive failure threshold

3. Test System

php test.php

4. Import Proxies

Visit http://your-domain/netwatch/import.php or use command line:

# Import from file
php import.php

Proxy format examples:

192.168.1.100:1080:socks5
192.168.1.101:8080:http:username:password
10.0.0.1:1080:socks5:user:pass

5. Start Monitoring

# Start background monitoring service
php scheduler.php

Or use systemd service:

# Create service file
sudo nano /etc/systemd/system/netwatch.service

Service file content:

[Unit]Description=NetWatch Monitor Service
After=network.target
[Service]Type=simple
User=www-data
WorkingDirectory=/path/to/netwatch
ExecStart=/usr/bin/php scheduler.php
Restart=always
RestartSec=10
[Install]WantedBy=multi-user.target

Start service:

sudo systemctl enable netwatch
sudo systemctl start netwatch

Usage Instructions

Web Interface

Visit http://your-domain/netwatch/ to view the monitoring dashboard:

NetWatch Demo Interface

  • Statistics Overview: Shows total proxy count, online/offline status, average response time
  • Proxy List: Shows detailed status information for all proxies
  • Check Logs: Shows recent monitoring check records
  • Manual Check: Allows manual triggering of individual or all proxy checks

Proxy Import

Individual Proxy Import

Visit http://your-domain/netwatch/import.php for batch import:

  • Supports text paste import
  • Supports file upload import
  • Automatically skips incorrectly formatted lines
  • Shows import result statistics

Subnet Batch Import

Visit http://your-domain/netwatch/import_subnets.php for subnet batch import:

  • Batch Generation: Supports multiple subnets using the same port/username/password configuration
  • IP Range: Define subnet ranges through start IP and end IP
  • Multi-Subnet Support: Up to 20 different subnets can be configured simultaneously
  • Preview Function: Preview the number of proxies to be generated before import
  • Import Modes: Supports skip duplicates, overwrite updates, and other modes

Usage examples:

  • Subnet 1: 192.168.1.2 to 192.168.1.30 (29 proxies)
  • Subnet 2: 10.0.0.10 to 10.0.0.50 (41 proxies)
  • Unified configuration: Port 1080, SOCKS5 protocol, username/password

Email Notifications

The system sends emails in the following situations:

  • Failure Notifications: When proxies fail consecutively reaching the threshold
  • Daily Reports: System status reports sent daily at 9 AM

Configuration File Description

config.php

Configuration ItemDescriptionDefault Value
DB_PATHSQLite database file path./data/netwatch.db
SMTP_HOSTSMTP server addresssmtp.gmail.com
SMTP_PORTSMTP port587
CHECK_INTERVALCheck interval (seconds)300
TIMEOUTConnection timeout (seconds)10
ALERT_THRESHOLDFailure notification threshold3
TEST_URLTest URLhttp://httpbin.org/ip

Directory Structure

NetWatch/
├── config.php # Main configuration file
├── index.php # Main entry file, Web interface
├── auth.php # User authentication module
├── database.php # Database operation class
├── monitor.php # Single-process monitoring implementation
├── parallel_monitor.php # Parallel monitoring implementation
├── parallel_worker.php # Parallel worker process
├── parallel_batch_manager.php # Batch task management
├── import.php # Proxy import script
├── import_subnets.php # Subnet batch import tool
├── mailer.php # Email notification module
├── logger.php # Logging module
├── scheduler.php # Scheduled task scheduler
├── clear_proxies.php # Proxy cleanup tool
├── login.php # Login page
├── config.example.php # Configuration file example
├── composer.json # Composer dependency configuration
├── data/ # Data directory
│ └── netwatch.db # SQLite database
├── logs/ # Log directory
│ └── netwatch_*.log # Log files
├── proxy-status/ # Proxy traffic monitoring
│ ├── index.php # Traffic monitoring dashboard
│ └── update.php # Manual traffic update endpoint
├── Debug/ # Debug-related files
└── Docs/ # Documentation directory

Main File Descriptions

  • config.php - System configuration file containing database connections, email settings, etc.
  • index.php - Main entry file providing web management interface
  • monitor.php - Single-process proxy monitoring implementation
  • parallel_*.php - Parallel monitoring related files supporting high-performance batch detection
  • import.php* - Proxy import tools supporting individual proxy and subnet batch import
  • mailer.php - Email notification module for sending alerts
  • logger.php - Logging module for recording system runtime status
  • scheduler.php - Scheduled task scheduler for periodic monitoring execution

API Interface

The system provides simple AJAX APIs:

  • GET /?ajax=1&action=stats - Get statistics information
  • GET /?ajax=1&action=check&proxy_id=1 - Check specified proxy
  • GET /?ajax=1&action=logs - Get recent logs

Security Audit Notes

  • The proxy-status/ sub-application is tracked separately for security/code-quality review.
  • Audit checklist and scope: Docs/PROXY_STATUS_AUDIT.md

Troubleshooting

Common Issues

  1. Database Connection Failed

    • Check data directory permissions
    • Ensure PHP has SQLite extension
  2. Email Sending Failed

    • Check SMTP configuration
    • Confirm email password is correct
    • May need to use app-specific password
  3. Proxy Check Failed

    • Check network connection
    • Confirm curl extension is installed
    • Check firewall settings
  4. Permission Issues

    • Ensure web server has write permissions to data and logs directories
    • Check file ownership and permission settings

Log Viewing

# View latest logs
tail -f logs/netwatch_$(date +%Y-%m-%d).log
# View error logs
grep ERROR logs/netwatch_*.log

Performance Optimization

For monitoring large numbers of proxies (5000+):

  1. Adjust Check Interval: Adjust CHECK_INTERVAL as needed
  2. Concurrent Checking: Can modify code to implement multi-threaded checking
  3. Database Optimization: Regularly clean old log data
  4. Caching Mechanism: Can add Redis caching to improve performance

License

MIT License

About

NetWatch: monitor the HTTP/SOCKS 5 proxy network status.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

675 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NetWatch - Network Proxy Monitoring System

NetWatch is a high-performance PHP-based network proxy monitoring system designed specifically for monitoring the availability status of large numbers of SOCKS5 and HTTP proxies. It supports parallel processing and can efficiently monitor thousands of proxy servers.

Features

  • 🌐 Multi-Protocol Support: Supports SOCKS5 and HTTP proxy monitoring
  • 🚀 High-Performance Parallel Processing: Supports multi-process parallel detection, up to 12 concurrent processes, 500 proxies per batch
  • 📊 Real-Time Monitoring: Real-time detection of proxy server status and response times
  • 📧 Email Notifications: Automatic email notifications when proxy failures occur
  • 📈 Web Interface: Clean and beautiful web management interface
  • 📝 Logging: Detailed monitoring logs and historical records
  • 🔄 Automatic Scheduling: Background scheduled tasks for automatic monitoring
  • 📥 Batch Import: Support for batch importing proxy configurations
  • 💾 SQLite Database: Lightweight database with no additional configuration required
  • ⏱️ Timezone Support: Automatic timezone conversion with Beijing time display support

System Requirements

  • PHP 8.0+
  • cURL extension
  • SQLite extension
  • PCNTL extension (for parallel processing)
  • POSIX extension
  • Configured web server (Nginx + PHP-FPM or Apache)

Performance Configuration

The system has the following default performance parameters configured, which you can adjust according to your server configuration (modify in index.php):

define('PARALLEL_MAX_PROCESSES', 24); // Maximum number of parallel processesdefine('PARALLEL_BATCH_SIZE', 200); // Number of proxies processed per batch

💡 Performance Recommendations:

  • For 4-core 8GB servers, it's recommended to keep the default configuration
  • For higher-spec servers, you can appropriately increase PARALLEL_MAX_PROCESSES
  • If network latency is high, you can appropriately reduce PARALLEL_BATCH_SIZE

Installation Steps

1. Install Dependencies

# Install Composer dependencies
composer install

2. Configure System

Edit the config.php file and modify the following configurations:

// Email configurationdefine('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-password');
define('SMTP_TO_EMAIL', 'admin@example.com');
// Monitoring configurationdefine('CHECK_INTERVAL', 300); // Check interval (seconds)define('TIMEOUT', 10); // Timeout (seconds)define('ALERT_THRESHOLD', 3); // Consecutive failure threshold

3. Test System

php test.php

4. Import Proxies

Visit http://your-domain/netwatch/import.php or use command line:

# Import from file
php import.php

Proxy format examples:

192.168.1.100:1080:socks5
192.168.1.101:8080:http:username:password
10.0.0.1:1080:socks5:user:pass

5. Start Monitoring

# Start background monitoring service
php scheduler.php

Or use systemd service:

# Create service file
sudo nano /etc/systemd/system/netwatch.service

Service file content:

[Unit]Description=NetWatch Monitor Service
After=network.target
[Service]Type=simple
User=www-data
WorkingDirectory=/path/to/netwatch
ExecStart=/usr/bin/php scheduler.php
Restart=always
RestartSec=10
[Install]WantedBy=multi-user.target

Start service:

sudo systemctl enable netwatch
sudo systemctl start netwatch

Usage Instructions

Web Interface

Visit http://your-domain/netwatch/ to view the monitoring dashboard:

NetWatch Demo Interface

  • Statistics Overview: Shows total proxy count, online/offline status, average response time
  • Proxy List: Shows detailed status information for all proxies
  • Check Logs: Shows recent monitoring check records
  • Manual Check: Allows manual triggering of individual or all proxy checks

Proxy Import

Individual Proxy Import

Visit http://your-domain/netwatch/import.php for batch import:

  • Supports text paste import
  • Supports file upload import
  • Automatically skips incorrectly formatted lines
  • Shows import result statistics

Subnet Batch Import

Visit http://your-domain/netwatch/import_subnets.php for subnet batch import:

  • Batch Generation: Supports multiple subnets using the same port/username/password configuration
  • IP Range: Define subnet ranges through start IP and end IP
  • Multi-Subnet Support: Up to 20 different subnets can be configured simultaneously
  • Preview Function: Preview the number of proxies to be generated before import
  • Import Modes: Supports skip duplicates, overwrite updates, and other modes

Usage examples:

  • Subnet 1: 192.168.1.2 to 192.168.1.30 (29 proxies)
  • Subnet 2: 10.0.0.10 to 10.0.0.50 (41 proxies)
  • Unified configuration: Port 1080, SOCKS5 protocol, username/password

Email Notifications

The system sends emails in the following situations:

  • Failure Notifications: When proxies fail consecutively reaching the threshold
  • Daily Reports: System status reports sent daily at 9 AM

Configuration File Description

config.php

Configuration ItemDescriptionDefault Value
DB_PATHSQLite database file path./data/netwatch.db
SMTP_HOSTSMTP server addresssmtp.gmail.com
SMTP_PORTSMTP port587
CHECK_INTERVALCheck interval (seconds)300
TIMEOUTConnection timeout (seconds)10
ALERT_THRESHOLDFailure notification threshold3
TEST_URLTest URLhttp://httpbin.org/ip

Directory Structure

NetWatch/
├── config.php # Main configuration file
├── index.php # Main entry file, Web interface
├── auth.php # User authentication module
├── database.php # Database operation class
├── monitor.php # Single-process monitoring implementation
├── parallel_monitor.php # Parallel monitoring implementation
├── parallel_worker.php # Parallel worker process
├── parallel_batch_manager.php # Batch task management
├── import.php # Proxy import script
├── import_subnets.php # Subnet batch import tool
├── mailer.php # Email notification module
├── logger.php # Logging module
├── scheduler.php # Scheduled task scheduler
├── clear_proxies.php # Proxy cleanup tool
├── login.php # Login page
├── config.example.php # Configuration file example
├── composer.json # Composer dependency configuration
├── data/ # Data directory
│ └── netwatch.db # SQLite database
├── logs/ # Log directory
│ └── netwatch_*.log # Log files
├── proxy-status/ # Proxy traffic monitoring
│ ├── index.php # Traffic monitoring dashboard
│ └── update.php # Manual traffic update endpoint
├── Debug/ # Debug-related files
└── Docs/ # Documentation directory

Main File Descriptions

  • config.php - System configuration file containing database connections, email settings, etc.
  • index.php - Main entry file providing web management interface
  • monitor.php - Single-process proxy monitoring implementation
  • parallel_*.php - Parallel monitoring related files supporting high-performance batch detection
  • import.php* - Proxy import tools supporting individual proxy and subnet batch import
  • mailer.php - Email notification module for sending alerts
  • logger.php - Logging module for recording system runtime status
  • scheduler.php - Scheduled task scheduler for periodic monitoring execution

API Interface

The system provides simple AJAX APIs:

  • GET /?ajax=1&action=stats - Get statistics information
  • GET /?ajax=1&action=check&proxy_id=1 - Check specified proxy
  • GET /?ajax=1&action=logs - Get recent logs

Security Audit Notes

  • The proxy-status/ sub-application is tracked separately for security/code-quality review.
  • Audit checklist and scope: Docs/PROXY_STATUS_AUDIT.md

Troubleshooting

Common Issues

  1. Database Connection Failed

    • Check data directory permissions
    • Ensure PHP has SQLite extension
  2. Email Sending Failed

    • Check SMTP configuration
    • Confirm email password is correct
    • May need to use app-specific password
  3. Proxy Check Failed

    • Check network connection
    • Confirm curl extension is installed
    • Check firewall settings
  4. Permission Issues

    • Ensure web server has write permissions to data and logs directories
    • Check file ownership and permission settings

Log Viewing

# View latest logs
tail -f logs/netwatch_$(date +%Y-%m-%d).log
# View error logs
grep ERROR logs/netwatch_*.log

Performance Optimization

For monitoring large numbers of proxies (5000+):

  1. Adjust Check Interval: Adjust CHECK_INTERVAL as needed
  2. Concurrent Checking: Can modify code to implement multi-threaded checking
  3. Database Optimization: Regularly clean old log data
  4. Caching Mechanism: Can add Redis caching to improve performance

License

MIT License

About

NetWatch: monitor the HTTP/SOCKS 5 proxy network status.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages