A comprehensive WordPress library for ProxyCheck.io integration, providing proxy & VPN detection, email verification, risk assessment, and complete dashboard management with intelligent caching.
- 🔍 IP Analysis: Detect proxies, VPNs, and assess risk levels
- ✉️ Email Verification: Check for disposable email services
- 📊 Usage Analytics: Track and manage API usage and quotas
- 📋 List Management: Handle whitelists, blocklists, and CORS origins
- 📈 Statistics: Access detection history and query analytics
- 🏷️ Tag Management: Track and analyze tagged queries
- 💾 Smart Caching: Optimize performance and reduce API calls
- PHP 7.4 or later
- WordPress 6.7.1 or later
- ProxyCheck.io API key
- Dashboard API Access enabled (for dashboard features)
Install via Composer:
composer require arraypress/proxycheck
use ArrayPress\ProxyCheck\Client;
// Initialize with API key
$client = new Client(
'your-key-here', // API key
true, // Enable caching (optional)
600, // Cache duration in seconds (optional)
'custom_prefix_' // Cache prefix (optional)
);
// Check single IP
$result = $client->check_ip( '1.1.1.1' );
// Check multiple IPs
$results = $client->check_ips( [ '1.1.1.1', '8.8.8.8' ] );
// Check email
$email = $client->check_email( '[email protected]', true ); // Second param enables email masking
// Configure VPN detection
$client->set_vpn( true ); // Enable VPN detection
$client->get_vpn(); // Check if VPN detection is enabled
// Configure ASN lookups
$client->set_asn( true ); // Enable ASN data inclusion
$client->get_asn(); // Check if ASN lookups are enabled
// Configure risk assessment
$client->set_risk( 2 ); // Set risk assessment level (0-2)
$client->get_risk(); // Get current risk assessment level
// Configure port checking
$client->set_port( true ); // Enable port checking
$client->get_port(); // Check if port checking is enabled
// Configure time seen data
$client->set_seen( true ); // Enable last seen data
$client->get_seen(); // Check if last seen data is enabled
// Configure history period
$client->set_days( 7 ); // Set history period in days
$client->get_days(); // Get current history period setting
// Basic check with default options
$result = $client->check_ip( '1.1.1.1' );
// Check with custom options
$result = $client->check_ip( '1.1.1.1', [
'vpn' => 1, // Enable VPN detection
'asn' => 1, // Include ASN data
'risk' => 2, // Include attack history
'port' => 1, // Check port
'seen' => 1, // Include last seen
'days' => 7 // History period
] );
// Batch check multiple IPs
$results = $client->check_ips( [ '1.1.1.1', '8.8.8.8' ] );
// Access results
if ( $result->is_proxy() ) {
echo "Proxy detected! Type: " . $result->get_type();
echo "Risk score: " . $result->get_risk_score();
}
// Check disposable email
$result = $client->check_email( '[email protected]' );
// With privacy masking
$result = $client->check_email( '[email protected]', true ); // Masks as [email protected]
if ( $result->is_disposable() ) {
echo "Disposable email detected!";
}
// Get usage information
$usage = $client->get_formatted_usage();
echo "Used today: " . $usage['used'] . " of " . $usage['limit'];
echo "Plan: " . $usage['plan'];
// Quick usage checks
$used = $client->get_used_tokens();
$remaining = $client->get_remaining_tokens();
$is_exceeded = $client->is_token_limit_exceeded();
// Get detailed query statistics
$stats = $client->get_formatted_queries( 7 ); // Last 7 days
print_r( $stats['summary'] );
// Whitelist Management
$client->get_whitelist();
$client->add_to_whitelist( '1.1.1.1' );
$client->add_to_whitelist( ['1.1.1.1', '2.2.2.2' ] );
$client->remove_from_whitelist( '1.1.1.1' );
$client->set_whitelist( ['1.1.1.1', '2.2.2.2' ] ); // Replace all
$client->clear_whitelist();
// Blocklist Management
$client->get_blacklist();
$client->add_to_blacklist( '1.1.1.1' );
$client->remove_from_blacklist( '1.1.1.1' );
$client->set_blacklist( ['1.1.1.1', '2.2.2.2' ] );
$client->clear_blacklist();
// CORS Origins Management
$client->get_cors_origins();
$client->add_cors_origins( 'https://example.com' );
$client->remove_cors_origins( 'https://example.com' );
$client->set_cors_origins( [ 'https://example.com', 'https://test.com' ] );
$client->clear_cors_origins();
// Get recent detections
$detections = $client->get_formatted_detections( 100 ); // Last 100 entries
// Get detections with pagination
$detections = $client->get_formatted_detections( 100, 50 ); // 100 entries starting from offset 50
// Force bypass cache for fresh data
$detections = $client->get_formatted_detections( 100, 0, true ); // Bypass cache
// Get tagged queries
$tags = $client->get_formatted_tags( [
'limit' => 100,
'days' => 7,
'addresses' => true
] );
// Basic Information
$ip = $result->get_ip();
$is_proxy = $result->is_proxy();
$type = $result->get_type();
$risk = $result->get_risk_score();
$is_vpn = $result->is_vpn();
// Attack History
$attacks = $result->get_attack_history();
// Network Information
$port = $result->get_port();
$seen = $result->get_last_seen();
$operator = $result->get_operator();
$operator_details = $result->get_operator_details(); // Full details including protocols
// Location Information
$continent = $result->get_continent();
$country = $result->get_country();
$region = $result->get_region();
$city = $result->get_city();
$coordinates = $result->get_coordinates();
$timezone = $result->get_timezone();
$currency = $result->get_currency();
// Block Status
$should_block = $result->should_block();
$block_reason = $result->get_block_reason();
$block_details = $result->get_block_details();
[
'used' => 1234, // Queries used today
'limit' => 5000, // Daily query limit
'total' => 50000, // Total queries made
'plan' => 'Premium', // Account tier
'burst_available' => 100, // Available burst tokens
'burst_limit' => 1000, // Burst token allowance
'percentage' => 24.68, // Usage percentage
'remaining' => 3766 // Remaining queries
]
[
'period' => 7, // Days included
'days' => [ // Daily statistics
[
'day' => 'TODAY',
'proxies' => 10,
'vpns' => 5,
'undetected' => 85,
'total_queries' => 100
// ... more metrics
]
],
'totals' => [ // Period totals
'proxies' => 50,
'vpns' => 25,
// ... more totals
],
'percentages' => [ // Usage percentages
'proxies' => 15.5,
'vpns' => 7.8,
// ... more percentages
],
'summary' => [ // Overview
'period_days' => 7,
'active_days' => 5,
'total_queries' => 500,
'detected_threats' => 75,
'detection_rate' => 15.0,
'average_daily_queries' => 71.4
]
]
The library uses WordPress's WP_Error
for consistent error handling:
$result = $client->check_ip( 'invalid-ip' );
if ( is_wp_error( $result ) ) {
$code = $result->get_error_code();
$message = $result->get_error_message();
echo "Error ($code): $message";
}
The library implements intelligent caching to optimize performance:
// Configure caching
$client->set_cache_enabled( true );
$client->set_cache_expiration( 3600 ); // 1 hour
$client->set_cache_prefix( 'my_plugin_' );
// Force bypass cache for specific requests
$result = $client->export_detections( 100, 0, true ); // Bypass cache for raw data
$formatted = $client->get_formatted_detections( 100, 0, true ); // Bypass cache for formatted data
// Clear cache
$client->clear_cache(); // All cache
$client->clear_cache( '1.1.1.1' ); // Specific entry
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Licensed under the GPLv2 or later license.