|
16 | 16 | # under the License. |
17 | 17 |
|
18 | 18 | import http.server |
19 | | -import socket |
20 | 19 | import socketserver |
21 | 20 | import threading |
22 | 21 |
|
|
29 | 28 | from selenium.webdriver.common.window import WindowTypes |
30 | 29 |
|
31 | 30 |
|
32 | | -class FakeProxyHandler(http.server.BaseHTTPRequestHandler): |
| 31 | +class FakeProxyHandler(http.server.SimpleHTTPRequestHandler): |
33 | 32 | def do_GET(self): |
34 | | - print(f"[Fake Proxy] Intercepted GET request to: {self.path}") |
| 33 | + print(f"[Fake Proxy] Intercepted request to: {self.path}") |
35 | 34 | self.send_response(200) |
36 | | - self.send_header("Content-Type", "text/html") |
37 | 35 | self.end_headers() |
38 | | - self.wfile.write(b"<html><body>proxied response</body></html>") |
39 | | - |
40 | | - def do_POST(self): |
41 | | - print(f"[Fake Proxy] Intercepted POST request to: {self.path}") |
42 | | - self.send_response(200) |
43 | | - self.send_header("Content-Type", "text/html") |
44 | | - self.end_headers() |
45 | | - self.wfile.write(b"<html><body>proxied response</body></html>") |
46 | | - |
47 | | - def do_CONNECT(self): |
48 | | - """Handle CONNECT requests for HTTPS tunneling.""" |
49 | | - print(f"[Fake Proxy] Intercepted CONNECT request to: {self.path}") |
50 | | - |
51 | | - self.send_response(200, "Connection established") |
52 | | - self.end_headers() |
53 | | - |
54 | | - try: |
55 | | - request_data = b"" |
56 | | - while True: |
57 | | - try: |
58 | | - chunk = self.rfile.read(1024) |
59 | | - if not chunk: |
60 | | - break |
61 | | - request_data += chunk |
62 | | - if b"\r\n\r\n" in request_data: |
63 | | - break |
64 | | - except socket.timeout: |
65 | | - break |
66 | | - |
67 | | - if request_data: |
68 | | - print(f"[Fake Proxy] Received tunneled request: {request_data[:100]}...") |
69 | | - response = ( |
70 | | - b"HTTP/1.1 200 OK\r\n" |
71 | | - b"Content-Type: text/html\r\n" |
72 | | - b"Content-Length: 37\r\n" |
73 | | - b"Connection: close\r\n" |
74 | | - b"\r\n" |
75 | | - b"<html><body>proxied response</body></html>" |
76 | | - ) |
77 | | - self.wfile.write(response) |
78 | | - self.wfile.flush() |
79 | | - except Exception as e: |
80 | | - print(f"[Fake Proxy] Error handling CONNECT: {e}") |
81 | | - finally: |
82 | | - self.wfile.close() |
83 | | - |
84 | | - def log_message(self, format, *args): |
85 | | - pass |
| 36 | + self.wfile.write(b"proxied response") |
86 | 37 |
|
87 | 38 |
|
88 | 39 | def start_fake_proxy(port): |
89 | 40 | server = socketserver.TCPServer(("localhost", port), FakeProxyHandler) |
90 | | - server.timeout = 5 |
91 | 41 | thread = threading.Thread(target=server.serve_forever, daemon=True) |
92 | 42 | thread.start() |
93 | 43 | return server |
|
0 commit comments