Spaces:
Running
Running
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)
- browser_session.py +11 -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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 135 |
|
| 136 |
async def _do_goto():
|
| 137 |
try:
|
| 138 |
-
await self._page.goto(
|
| 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;
|