), 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'] });
})();
Language:
Your location : India
Straight
Cable
Man, 42y
42 years old, Man
1k
Gender:
Man
Age:
42 years old
Country:
Spain
Profile hits:
46,923
Subscribers:
1,032
Total video views:
880,600
Region:
Castilla-La Mancha
City:
Toledo-españa
Languages:
Español
Personal information: Display
Seeking:
Woman, Lesbian woman, Lesbian couple
Relationship:
Single
Kids:
Yes and we live together
Religion:
Catholic
Smoking:
Occasionally
Drinking:
Occasionally
Webcam:
Yes
Signed up:
August 19, 2012 (5,039 days ago)
Physical Information: Display
Ethnicity:
Latino
Body:
Slim
Height:
164 cm
Weight:
68 kg
Hair length:
Short
Hair color:
Black
Eyes color:
Brown
About me:
Busco chica liberal sin rollos ni nada para pasarla bien y lo que surja..Sexo y Discreción..SOLO CHICAS (MUJERES)
Os Dejo Mi Correo electrónico si alguna chica quiere chatear o hablar..luego os pasare mi numero de teléfono: CORREO ELECTRÓNICO ::::[email protected] Show more