File size: 5,961 Bytes
b9c61c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3ec47db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b9c61c0
 
3ec47db
b9c61c0
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>GhostSurf - Anonymous Web Proxy</title>
    <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
    <link rel="stylesheet" href="style.css">
    <script src="https://cdn.tailwindcss.com"></script>
    <script src="https://unpkg.com/feather-icons"></script>
    <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
    <script>
      tailwind.config = {
        theme: {
          extend: {
            fontFamily: {
              sans: ['Inter', 'sans-serif'],
            },
            colors: {
              primary: {
                500: '#6366f1',
                600: '#4f46e5',
              },
              secondary: {
                500: '#10b981',
                600: '#059669',
              }
            }
          }
        }
      }
    </script>
</head>
<body class="bg-gray-50 min-h-screen flex flex-col">
    <custom-navbar></custom-navbar>
    
    <main class="flex-grow flex items-center justify-center px-4 py-12">
        <div class="w-full max-w-md mx-auto">
            <div class="text-center mb-8">
                <h1 class="text-4xl font-bold text-gray-900 mb-2">GhostSurf</h1>
                <p class="text-lg text-gray-600">Browse anonymously with our invisible proxy</p>
            </div>

            <div class="bg-white rounded-xl shadow-lg p-8">
                <form id="proxyForm" class="space-y-6">
                    <div>
                        <label for="url" class="block text-sm font-medium text-gray-700 mb-1">Enter URL to visit anonymously</label>
                        <div class="relative rounded-md shadow-sm">
                            <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
                                <i data-feather="globe" class="text-gray-400"></i>
                            </div>
                            <input type="url" id="url" name="url" required
                                class="focus:ring-primary-500 focus:border-primary-500 block w-full pl-10 pr-12 py-3 border-gray-300 rounded-md"
                                placeholder="https://example.com">
                            <div class="absolute inset-y-0 right-0 flex items-center">
                                <button type="submit"
                                    class="px-4 h-full bg-primary-500 text-white rounded-r-md hover:bg-primary-600 focus:outline-none focus:ring-2 focus:ring-primary-500 transition-colors">
                                    Go
                                </button>
                            </div>
                        </div>
                    </div>

                    <div class="flex items-center">
                        <input id="remember" name="remember" type="checkbox" class="h-4 w-4 text-primary-500 focus:ring-primary-500 border-gray-300 rounded">
                        <label for="remember" class="ml-2 block text-sm text-gray-700">
                            Remember my preferences
                        </label>
                    </div>
                </form>

                <div class="mt-8 pt-6 border-t border-gray-200">
                    <h3 class="text-sm font-medium text-gray-700 mb-3">How it works</h3>
                    <ul class="space-y-3 text-sm text-gray-600">
                        <li class="flex items-start">
                            <i data-feather="shield" class="text-primary-500 mr-2 mt-0.5"></i>
                            <span>Your IP address and location are hidden</span>
                        </li>
                        <li class="flex items-start">
                            <i data-feather="lock" class="text-primary-500 mr-2 mt-0.5"></i>
                            <span>Secure encrypted connection</span>
                        </li>
                        <li class="flex items-start">
                            <i data-feather="zap" class="text-primary-500 mr-2 mt-0.5"></i>
                            <span>Fast proxy servers worldwide</span>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </main>

    <custom-footer></custom-footer>

    <script src="components/navbar.js"></script>
    <script src="components/footer.js"></script>
    <script src="script.js"></script>
    <script>
        feather.replace();
        
        document.getElementById('proxyForm').addEventListener('submit', function(e) {
            e.preventDefault();
            const url = document.getElementById('url').value;
            if (url) {
                // Show loading state
                const form = document.getElementById('proxyForm');
                form.classList.add('submitting');
                
                // Call proxy endpoint
                fetch(`/proxy?url=${encodeURIComponent(url)}`)
                    .then(response => {
                        if (!response.ok) throw new Error('Network response was not ok');
                        return response.text();
                    })
                    .then(html => {
                        // Create a new document with the proxied content
                        const proxiedDoc = document.open('text/html', 'replace');
                        proxiedDoc.write(html);
                        proxiedDoc.close();
                    })
                    .catch(error => {
                        console.error('Proxy error:', error);
                        alert('Error loading the requested URL. Please try again.');
                    })
                    .finally(() => {
                        form.classList.remove('submitting');
                    });
}
        });
    </script>
<!-- <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script> -->
</body>
</html>