), so idempotency matters.) // 2) try/catch around defineProperty — some browsers lock HTMLMediaElement.prototype.src as // non-configurable on the parent prototype, shadowing it would throw. // If the override fails, the setAttribute and MutationObserver below still catch most // dynamic src assignments, so the page still works. const videoProto = HTMLVideoElement.prototype; const srcDesc = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'src') || Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'src'); if (srcDesc) { try { Object.defineProperty(videoProto, 'src', { configurable: true, enumerable: true, set(v) { srcDesc.set.call(this, rewriteUrl(v)); }, get() { return srcDesc.get.call(this); } }); } catch (e) { /* parent src is non-configurable; rely on setAttribute/MutationObserver */ } } // Override source element src const sourceProto = HTMLSourceElement.prototype; const srcDesc2 = Object.getOwnPropertyDescriptor(sourceProto, 'src'); if (srcDesc2) { try { Object.defineProperty(sourceProto, 'src', { configurable: true, enumerable: true, set(v) { srcDesc2.set.call(this, rewriteUrl(v)); }, get() { return srcDesc2.get.call(this); } }); } catch (e) { /* parent src is non-configurable; rely on setAttribute/MutationObserver */ } } // Override img.src property const imgProto = HTMLImageElement.prototype; const imgSrcDesc = Object.getOwnPropertyDescriptor(imgProto, 'src') || Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'src'); if (imgSrcDesc && imgSrcDesc.set) { try { Object.defineProperty(imgProto, 'src', { configurable: true, enumerable: true, set(v) { imgSrcDesc.set.call(this, rewriteUrl(v)); }, get() { return imgSrcDesc.get.call(this); } }); } catch (e) { /* parent src is non-configurable; rely on setAttribute/MutationObserver */ } } // Override setAttribute for video, source, AND img const origSetAttr = Element.prototype.setAttribute; Element.prototype.setAttribute = function(name, value) { if ((name === 'src' || name === 'data-src') && (this.tagName === 'VIDEO' || this.tagName === 'SOURCE' || this.tagName === 'IMG')) { value = rewriteUrl(value); } return origSetAttr.call(this, name, value); }; // Patch HLS.js if loaded const origAppendChild = Node.prototype.appendChild; const origInsertBefore = Node.prototype.insertBefore; // MutationObserver to catch dynamically added video/source/img elements const observer = new MutationObserver(mutations => { for (const mut of mutations) { for (const node of mut.addedNodes) { if (node.tagName === 'SOURCE' || node.tagName === 'VIDEO' || node.tagName === 'IMG') { const s = node.getAttribute && node.getAttribute('src'); if (s) { const rewritten = rewriteUrl(s); if (rewritten !== s) origSetAttr.call(node, 'src', rewritten); } const ds = node.getAttribute && node.getAttribute('data-src'); if (ds) { const rewritten = rewriteUrl(ds); if (rewritten !== ds) origSetAttr.call(node, 'data-src', rewritten); } } if (node.querySelectorAll) { node.querySelectorAll('source[src], video[src], img[src], img[data-src]').forEach(el => { const s = el.getAttribute('src'); if (s) { const rewritten = rewriteUrl(s); if (rewritten !== s) origSetAttr.call(el, 'src', rewritten); } const ds = el.getAttribute('data-src'); if (ds) { const rewritten = rewriteUrl(ds); if (rewritten !== ds) origSetAttr.call(el, 'data-src', rewritten); } }); } } // Also handle attribute changes on existing elements if (mut.type === 'attributes' && (mut.attributeName === 'src' || mut.attributeName === 'data-src')) { const el = mut.target; if (el.tagName === 'IMG' || el.tagName === 'VIDEO' || el.tagName === 'SOURCE') { const val = el.getAttribute(mut.attributeName); if (val) { const rewritten = rewriteUrl(val); if (rewritten !== val) origSetAttr.call(el, mut.attributeName, rewritten); } } } } }); observer.observe(document.documentElement, { childList: true, subtree: true, attributes: true, attributeFilter: ['src', 'data-src'] }); })();

All channels being watched in India

Bindastimes

190 videos

X Vault

177 videos

Golupaa

222 videos

YourPriya

395 videos

Uttaran20

5,389 videos

Pureveg

240 videos

Neonxvip

119 videos

Hotxvip

55 videos

Neha Varun

387 videos

Fucklesson

18 videos

Indianxworld

530 videos

Toptenxx

616 videos

sexworld

153 videos

Xfilmmakers

124 videos

Bkfilms1

134 videos

Hotxcreator

581 videos

YellowPlum

1,940 videos

Pinki_cutee

111 videos

Couplegoldx

374 videos

HotyNitu

80 videos

IndianXXXReality

416 videos

Your_eshita

105 videos

Bollywood Porno

167 videos

Janvibhabhii

312 videos

Mya Mya

87 videos

Oliveyou

163 videos

desi_saara_bhabhi

290 videos

Indian Pornstar Punam

144 videos

Indian Big Ass

15 videos

Desislimgirl

718 videos

Animxyzn

29 videos

Hamaribhabhi1

339 videos

Shivany

20 videos

Ammukutty88

31 videos

Telugu hot queen

214 videos

Heartpoint2

36 videos

Sarakhan

30 videos

Foxsinban1999

180 videos

Savitabhabhi

47 videos

TheYourQueenX

612 videos

Lalitasingh

527 videos

Piyabhabhi

39 videos

XXX Soniya

339 videos

Fantacy-Couple

98 videos

Sistya

1,020 videos

Mumbai Ashu

306 videos

DIPALISHARMA

127 videos

Billo Gulnaz

265 videos

Alpana Bengali Xxx

160 videos

Yourneha

58 videos

Cumriya

138 videos

Netuandhubby

1,333 videos

Desisexcreator1

83 videos

Tannuxx

520 videos

Sr Online

75 videos

ModelMedia

547 videos

Anushka0014

60 videos

Freedeell

58 videos

Hunnybunnyofficial

633 videos

Thedeepmyth

57 videos

Saarabhabhi6

378 videos

Xxx Neelima

419 videos

Esenetwork

74 videos

nagmanaeemx

276 videos

FireeCouple

334 videos

Horny Girl Muskaan

47 videos

Localsex31

359 videos

Konikabhabi1

226 videos

Indian Shabnam

259 videos

Websexpremium

49 videos

Jav HD

8,393 videos

Minglehere

18 videos

Pakistanicouple1

247 videos

Amrita1100

479 videos

GeetaBhabhi

154 videos

Sobia Nasir

335 videos

DESI REKHA

205 videos

Remove ads - Upgrade to Premium Ads by TrafficFactory