#!/usr/bin/env python3 """ Test script for Cloudflare bypass functionality """ import asyncio import aiohttp import json import sys from urllib.parse import quote async def test_cloudflare_bypass(api_url, api_key, test_url): """Test Cloudflare bypass on a specific URL""" headers = { 'X-API-Key': api_key, 'Content-Type': 'application/json' } # Test the new Cloudflare bypass endpoint test_endpoint = f"{api_url}/test-cloudflare?url={quote(test_url)}" print(f"šŸ” Testing Cloudflare bypass for: {test_url}") print(f"šŸ“” Endpoint: {test_endpoint}") print("-" * 60) try: async with aiohttp.ClientSession() as session: async with session.get(test_endpoint, headers=headers) as response: if response.status == 200: result = await response.json() print("āœ… Request successful!") print(f"šŸ“„ Status: {result.get('status')}") print(f"🌐 Final URL: {result.get('final_url', 'N/A')}") print(f"šŸ“ Title: {result.get('title', 'N/A')}") print(f"šŸ›”ļø Cloudflare Bypassed: {result.get('cloudflare_bypassed', False)}") print(f"šŸ“ Content Length: {result.get('content_length', 0)} characters") # Show Cloudflare indicators indicators = result.get('cloudflare_indicators', {}) print("\nšŸ” Cloudflare Detection Indicators:") for indicator, value in indicators.items(): status = "āŒ Detected" if value else "āœ… Not Detected" print(f" {indicator}: {status}") if result.get('cloudflare_bypassed'): print("\nšŸŽ‰ SUCCESS: Cloudflare protection was successfully bypassed!") else: print("\nāš ļø WARNING: Cloudflare protection may still be active") else: error_text = await response.text() print(f"āŒ Request failed with status {response.status}") print(f"Error: {error_text}") except Exception as e: print(f"āŒ Error during test: {e}") async def test_regular_endpoint(api_url, api_key, test_url): """Test regular endpoint to compare with Cloudflare bypass""" headers = { 'X-API-Key': api_key, 'Content-Type': 'application/json' } print(f"\nšŸ” Testing regular endpoint for: {test_url}") print("-" * 60) try: async with aiohttp.ClientSession() as session: async with session.get(f"{api_url}/?url={quote(test_url)}", headers=headers) as response: if response.status == 200: result = await response.json() print("āœ… Regular endpoint successful!") print(f"šŸ“„ Status: {result.get('status')}") if 'content' in result: content_length = len(result['content']) print(f"šŸ“ Content Length: {content_length} characters") if content_length < 1000: print("āš ļø Content seems short - might be blocked") else: print("āœ… Content length looks normal") else: error_text = await response.text() print(f"āŒ Regular endpoint failed: {error_text}") except Exception as e: print(f"āŒ Error during regular test: {e}") async def main(): """Main test function""" if len(sys.argv) < 4: print("Usage: python test_cloudflare_bypass.py ") print("Example: python test_cloudflare_bypass.py http://localhost:8000 your-api-key https://example.com") sys.exit(1) api_url = sys.argv[1].rstrip('/') api_key = sys.argv[2] test_url = sys.argv[3] print("šŸ›”ļø Cloudflare Bypass Test Script") print("=" * 60) # Test Cloudflare bypass endpoint await test_cloudflare_bypass(api_url, api_key, test_url) # Test regular endpoint for comparison await test_regular_endpoint(api_url, api_key, test_url) print("\n" + "=" * 60) print("šŸ Test completed!") if __name__ == "__main__": asyncio.run(main())