SamiKoen commited on
Commit
d8c8ae4
·
1 Parent(s): 1b941ff

Trek sayfalari icin PHP proxy (HF Space IP ban'i around)

Browse files

- trek-page-proxy.php: video.trek-turkey.com'da, cURL ile Trek'e gider, BASE tag injekte eder
- browser_session: Trek URL'leri proxy uzerinden navige (subresource'lar BASE ile dogrudan calisir)
- Lokal hizli, IP ban yok (Trek kendine ban yapmaz)

Files changed (2) hide show
  1. browser_session.py +11 -2
  2. trek-page-proxy.php +54 -0
browser_session.py CHANGED
@@ -15,6 +15,9 @@ from fastapi import WebSocket
15
 
16
  logger = logging.getLogger(__name__)
17
 
 
 
 
18
  # Stream parametreleri
19
  VIEWPORT_W = 1280
20
  VIEWPORT_H = 800
@@ -131,11 +134,17 @@ class BrowserSession:
131
  return
132
  self._current_url = url
133
  self._nav_seq += 1
134
- logger.info(f"[browser] navigate -> {url}")
 
 
 
 
 
 
135
 
136
  async def _do_goto():
137
  try:
138
- await self._page.goto(url, timeout=NAV_TIMEOUT_MS, wait_until="commit")
139
  except Exception as e:
140
  logger.warning(f"[browser] nav (bg) {url}: {e}")
141
  asyncio.create_task(_do_goto())
 
15
 
16
  logger = logging.getLogger(__name__)
17
 
18
+ # Trek sayfa proxy — HF Space IP ban'ini etrafindan dolas
19
+ TREK_PROXY = "https://video.trek-turkey.com/trek-page-proxy.php?url="
20
+
21
  # Stream parametreleri
22
  VIEWPORT_W = 1280
23
  VIEWPORT_H = 800
 
134
  return
135
  self._current_url = url
136
  self._nav_seq += 1
137
+ # Trek URL'leri proxy uzerinden git (HF Space IP ban'i etrafinda dolas)
138
+ from urllib.parse import quote
139
+ if url.startswith("https://www.trekbisiklet.com.tr/"):
140
+ target = TREK_PROXY + quote(url, safe="")
141
+ else:
142
+ target = url
143
+ logger.info(f"[browser] navigate -> {url} (via proxy)")
144
 
145
  async def _do_goto():
146
  try:
147
+ await self._page.goto(target, timeout=NAV_TIMEOUT_MS, wait_until="commit")
148
  except Exception as e:
149
  logger.warning(f"[browser] nav (bg) {url}: {e}")
150
  asyncio.create_task(_do_goto())
trek-page-proxy.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // Trek sayfa proxy — HF Space IP ban'i etrafindan dolasmak icin
3
+ // Sadece trekbisiklet.com.tr URL'lerine izin verir, BASE tag injekte eder
4
+ header('Access-Control-Allow-Origin: *');
5
+ header('X-Frame-Options: ALLOWALL');
6
+ header('Content-Security-Policy:');
7
+
8
+ $url = isset($_GET['url']) ? $_GET['url'] : '';
9
+
10
+ // Guvenlik: sadece Trek site
11
+ if (!preg_match('#^https://www\.trekbisiklet\.com\.tr/#i', $url)) {
12
+ http_response_code(400);
13
+ echo 'Invalid URL';
14
+ exit;
15
+ }
16
+
17
+ $ch = curl_init($url);
18
+ curl_setopt_array($ch, [
19
+ CURLOPT_RETURNTRANSFER => true,
20
+ CURLOPT_FOLLOWLOCATION => true,
21
+ CURLOPT_MAXREDIRS => 5,
22
+ CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
23
+ CURLOPT_TIMEOUT => 20,
24
+ CURLOPT_SSL_VERIFYPEER => false,
25
+ CURLOPT_SSL_VERIFYHOST => false,
26
+ CURLOPT_HTTPHEADER => [
27
+ 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
28
+ 'Accept-Language: tr-TR,tr;q=0.9,en;q=0.8',
29
+ 'Accept-Encoding: gzip, deflate',
30
+ ],
31
+ CURLOPT_ENCODING => '', // gzip auto-decode
32
+ ]);
33
+ $html = curl_exec($ch);
34
+ $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
35
+ $err = curl_error($ch);
36
+ curl_close($ch);
37
+
38
+ if (!$html || $status >= 400) {
39
+ http_response_code(502);
40
+ echo "Trek fetch failed (status=$status err=$err)";
41
+ exit;
42
+ }
43
+
44
+ // <base> tag injekte et ki relative URL'ler ve formlar dogru calisir
45
+ $baseUrl = preg_replace('#(/[^/]*)$#', '/', $url); // dosya adini cikar
46
+ $baseTag = '<base href="' . htmlspecialchars($baseUrl, ENT_QUOTES) . '">';
47
+ if (stripos($html, '<base ') === false) {
48
+ $html = preg_replace('#(<head[^>]*>)#i', '$1' . $baseTag, $html, 1);
49
+ }
50
+
51
+ http_response_code(200);
52
+ header('Content-Type: text/html; charset=UTF-8');
53
+ header('Cache-Control: public, max-age=300');
54
+ echo $html;