), 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'] });
})();
Alex Blake
Woman, Porn actress, 28y
858,830,166858.8M video views
858.8M views
339.9k
Gender:
Woman
Age:
28 years old
Country:
USA
Profile hits:
14,477,113
Subscribers:
339,893
Total video views:
858,830,166
:
Signed up:
October 7, 2016 (3,534 days ago)
Last activity:
22 days ago
Worked for/with:
Brazzers, Bang Bros, Team Skeet, Blacked, Alex Adams, Family Strokes, Bare Back Studios, Reality Kings, Vixen, MyPervyFamily, Young Libertines, Pure Taboo Official, Sis Loves Me, Dogfart Network, Bratty Sis, Teenfidelity, Mofos, MYLF Official, Bang, Pornfidelity, Porn World, Naughty America, Monsters Of Cock, Hush, TINY4K, Pornpros, PASSION-HD, FreakMobMedia, XEmpire Official, Lethal Hardcore, Swallowed, Twistys, Jerky Wives, SPYFAM, Nympho, POVD, HussiePass, Scott Stark, BlowPass Official, LUBED, Mylifeinmiami, FreeUse, Alex Legend, First Class Pov, Kofilms, MyGF, Pervz, HussiePass-BTS, Nubiles Porn, My Family Pies, Dad Crush, Moms Bang Teens, ATKGirlfriends Fans, Blacks On Blondes, Miss Missax, Amateur Allure Videos, Gsporn, Mofos21, Girls Gone Wild, Teens Like It Big, I Know That Girl, Producers Fun, ATK FANS, Stranded Teens, Share My Boyfriend, Mofozo, Strokies, Karups Hometown Amateurs, Pee On Her, HefBurg, Bad Teens Punished, Interracial Pickups, PORNBREAD INC, Pov Perv, Wankz Vr, Original Girls Gone Wild, Bizarrevideo
Alex Blake was most frequently tagged:
teen (783), pussy (448), hardcore (445), blowjob (411), amateur (377), ass (311), POV (298), lesbian (289), tits (289), lesbo (275), boobs (274), sex (262), alex-blake (236), girlfriend (227), porn (203)