【js逆向 | 网络爬虫】简单 js 逆向实践,获取邮箱地址

news2024/9/20 23:29:45

网站: https://australia51.com/citywide/

在各个城市分类下,可以看到商家链接
在这里插入图片描述

而部分商家介绍中,含有邮箱
在这里插入图片描述
在这里插入图片描述

我们通过 f12 检查元素,发现邮箱字段在 html 里面。
在这里插入图片描述

但是抓包发现,该字段是
<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="86ede5e7f3f2e9eee9f3f5e3c6eee9f2ebe7efeaa8e5e9eb">[email&#160;protected]</a>
在这里插入图片描述

这个字段是需要 js 解密后,把新的 html 元素节点添加到文本中。 基本可以确定 data-cfemail 与邮箱有关系。我们可以通过 data-cfemail 属性来定位解密邮箱的 js 。

这里穿插一个小知识:标签中,以 data 开头的字段是自定义的字段。js 获取该字段可以通过 dataset.cfemailgetAttribute("data-cefmail")来获取。

因此,我们在 network 中 ctrl+f 粘贴 cfemail
在这里插入图片描述

data-cfemail 被赋值给了 f

查找 f ,发现 f 被 o.getAttribute 给了 i 。i = "86ede5e7f3f2e9eee9f3f5e3c6eee9f2ebe7efeaa8e5e9eb"。接着,如果 i 为 true,l = n(i, 0);,然后 createTextNode(l) 创造节点,把 d 节点替到 a 中。因此,邮箱节点是在 n 函数中创建的。一眼丁真,解密也是通过 n 函数实现的。
在这里插入图片描述

查找 function n 或者 n = function,调用了 r 函数。重复上述步骤得到如下代码
在这里插入图片描述

function r(e, t) {
    var r = e.substr(t, 2);
    return parseInt(r, 16)
}
function n(n, c) {
   for (var o = "", a = r(n, c), i = c + 2; i < n.length; i += 2) {
        var l = r(n, i) ^ a;
        o += String.fromCharCode(l)
    }
}

function n :

  1. 参数 n : 是 data-cfemail 的值
  2. 参数 c : 传递进来的时候是个固定值 0

function r :

  1. 参数 e : 从 n 中调用发现,e = n = data-cfemail
  2. 参数 t : 每次增加 2

r 函数把每次把 n 中以 t 开头的两个字符截取,这两个字符表示 16 进制的数。通过 parseInt 转为 10 进制,返回给 l 。用前两个字符的 10 进制值和后面的字符 10进制值 求异或,得到一个数字。再通过 n 中 String.fromCharCode 获取该数字表示的 ascii 字符,添加到 o 中。循环结束后,得到 邮箱地址

把这段代码改写为 java。以 “86ede5e7f3f2e9eee9f3f5e3c6eee9f2ebe7efeaa8e5e9eb” 为例

public class Cfemail {
    public static void main(String[] args) {
        String cfemail = "dbb0b8baaeafb4b3b4aea8be9bb3b4afb6bab2b7f5b8b4b6";
        String email = n(cfemail);
        
        System.out.println("邮件地址:" + email);
    }

    public static String n(String cfemail) {
        StringBuilder email = new StringBuilder();
        int start = 0,
                a = r(cfemail, start);
        start += 2;
        
        for (; start < cfemail.length(); start += 2) {
            email.append((char) (r(cfemail, start) ^ a));
        }
        return email.toString();
    }

    public static int r(String cfemail, int index) {
        return Integer.parseInt(cfemail.substring(index, index+2), 16);
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Anaconda环境Python中xlrd库的配置方法

本文介绍在Anaconda环境下&#xff0c;安装Python读取.xls格式表格文件的库xlrd的方法。 首先需要说明的是&#xff0c;由于xlrd库在读取.xlsx格式文件时具有安全漏洞&#xff0c;因此在其2.0.0及以后的版本中&#xff0c;只能读取.xls格式的表格文件&#xff1b;如果需要读取其…

C语言中字符串库函数

目录1.求字符串长度strlen模拟实现strlen2.长度不受限制的字符串函数strcpy模拟实现strcpystrcat模拟实现strcatstrcmp模拟实现strcmp3.长度受限制的字符串函数介绍strncpy模拟实现strncpystrncat模拟实现strncatstrncmp模拟实现strncmp4.字符串查找strstr模拟实现strstrstrtok…

POE交换机全方位解读(下)

POE供电在安防系统中的应用 安防行业应用PoE组网主要有简化布线、节能灵活、安全方便等优势。众所周知&#xff0c;一般的网络摄像机除了需要通过网线来传输视频信号外&#xff0c;还必须全天候为其提供足够的电力。而在现实施工中&#xff0c;经常会出现因为无法提供稳定的电源…

[SSL]微信实机测试 request:fail -2:netLERR_FAILED

request:fail -2:netLERR_FAILED 微信小程序开发过程中&#xff0c;实机测试调用服务器链接报错。 SSL证书已安装&#xff0c;通过下面工具检查&#xff0c;中间证书安装有问题。 下面是检查证书链和补全证书链的工具网站&#xff0c;亲测有效。 w​​​​​​​​​​​​​…

[数仓]埋点数据接入

第40个视频的1&#xff1a;03&#xff1a;31一、采集flume日志服务器&#xff1a;将日志采集到本地&#xff0c;共有两个日志服务器&#xff0c;因此要安装两台flume&#xff0c;每个flume采集其所在服务器上的日志source:taildir source可以实时的读取文件中的数据&#xff0c…

详解Linux中网络文件系统

目录 前言 一、samba服务简介 1、windos如何共享文件 2、在linux中访问共享文件 二、samba基本信息 三、samba的安装与启用 1.服务端 2.客户端 3.服务启用 四、建立samba服务共享目录 五、samba用户的建立 六、 samba用户访问加目录 七、samba的访问控制 八、 sa…

Web(十一)

Request 1. request对象和response对象的原理 1. request和response对象是由服务器创建的。我们来使用它们 2. request对象是来获取请求消息&#xff0c;response对象是来设置响应消息 2. request对象继承体系结构&#xff1a; ServletRequest -- 接…

Kafka知识概况

Kafka知识概况Kafka简介Kafka 生产者Kafka BrokerKafka 消费者Kafka-Eagle 监控Kafka-Kraft 模式集成 SpringBootKafka简介 消息队列简介&#xff1a; 目 前企业中比较常见的消息队列产 品主 要有 Kafka、ActiveMQ 、RabbitMQ 、RocketMQ 等。在大数据场景主要采用 Kafka 作为…

【ElasticSearch8.X】学习笔记(一)

【ElasticSearch8.X】学习笔记一、8.x与7.x的对比二、安装elk8.x2.1、下载2.2、集群规划2.3、安装2.4、配置环境2.5、修改配置文件2.6、启动2.5、安装其他结点三、Kibana 安装3.1、下载3.2、配置环境3.2、修改配置文件3.4、启动一、8.x与7.x的对比 减少内存堆使用&#xff0c;…

JavaScript 进阶--charater2

系列文章目录 提示&#xff1a; JavaScript进阶笔记 &#xff0c;希望各位看官可以高抬小手一键三连 上一章测试题 答案在最后给出 文章目录系列文章目录前言一、深入对象1.1创建对象三种方式1. 利用对象字面量创建对象2.利用new Object 创建对象3. 利用构造函数创建对象1.2 构…

设计师百度百科词条创建怎么做?

设计分为平面设计、空间设计、工业设计、珠宝设计、游戏设计、家具设计、建筑设计、室内设计、景观设计、服装设计、网页设计、系统设计、剧场设计、动漫设计、品牌设计、造型设计、三维设计师、杂志封面设计师、包装设计师、形象设计师等领域。 设计师是一个提供创意的工作&a…

Hive(8):Hive内、外部表

关键字&#xff1a;EXTERNAL 1 什么是内部表 内部表&#xff08;Internal table&#xff09;也称为被Hive拥有和管理的托管表&#xff08;Managed table&#xff09;。 默认情况下创建的表就是内部表&#xff0c;Hive拥有该表的结构和文件。换句话说&#xff0c;Hive完全管理…

Hue(2):Hue 的安装

1 上传解压安装包 Hue 的安装支持多种方式&#xff0c;包括 rpm 包的方式进行安装、tar.gz 包的方式进行安装以及 cloudera manager 的方式来进行安装等&#xff0c;我们这里使用 tar.gz 包的方式来进行安装。 Hue 的压缩包的下载地址&#xff1a; http://archive.cloudera.…

SSH远程登录RaspberryPi命令行响应缓慢问题

SSH远程登录RaspberryPi命令行响应缓慢问题1. 问题2. 分析3. 解决3.1 去掉PAM部分鉴权模块3.2 去掉sshd的DNS设置3.3 无线WiFi信号优化方法一&#xff1a;ifconfig操作方法二&#xff1a;内核自动检测4. 结果5. 补充资料5.1 [排除wifi网卡功率自管理问题](https://raspberrypi.…

LeetCode刷题---21.合并两个有序链表(双指针)

文章目录一、编程题&#xff1a;19. 删除链表的倒数第 N 个结点&#xff08;双指针-快慢指针&#xff09;1.题目描述2.示例1&#xff1a;3.示例2&#xff1a;4.示例3&#xff1a;5.提示&#xff1a;二、解题思路1.思路2.复杂度分析&#xff1a;3.算法图解三、代码实现总结一、编…

【Linux】调试器 gdb 及 ‘\r‘ 的使用

目录 前言 gdb 断点 打断点 查看、删除断点 断点使能 调试 显示数据 其他指令 ‘\r’的使用 行缓冲区 小程序 前言 &#x1f951;在 Linux 下我们可以通过 gcc 进行编译&#xff0c;但与 vs 相比若想对代码进行调试&#xff0c;我们还需要学会使用调试器 gdb 。 &am…

Elastic Job学习笔记

目标&#xff1a; 第一章&#xff1a;概述 1、理解任务调度的概念 2、理解分布式任务调度的概念 3、能够说出Elastic-Job是什么 第二章&#xff1a;Elastic-Job快速入门 1、能够搭建Elastic-Job快速入门工程环境 2、能够编写Elastic-Job快速入门的程序 3、理解Elastic-Job整体架…

Studio 3T怎么用mysql语句执行查询

目录说明说明 mongo图形界面 Studio 3T怎么执行mongo的原生语句进行查询 就先说到这\color{#008B8B}{ 就先说到这}就先说到这 在下Apollo\color{#008B8B}{在下Apollo}在下Apollo 一个爱分享Java、生活的小人物&#xff0c;\color{#008B8B}{一个爱分享Java、生活的小人物&…

【前端】Vue项目:旅游App-(20)home:点击跳转至带参数的动态路由

文章目录目标过程与代码详情页detailhome中设置点击跳转效果总代码修改或添加的文件router/indexdetailhome-content参考本项目博客总结&#xff1a;【前端】Vue项目&#xff1a;旅游App-博客总结 目标 点击热门精选的item跳转至对应详情页&#xff1a; 详情页&#xff1a; 路…

什么是HTTPDNS?HTTPDNS有哪些作用?

近几年来&#xff0c;HTTPDNS技术大火&#xff0c;很多大的网站都开始部署自己的HTTDNS服务器&#xff0c;那么什么是HTTPDNS&#xff0c;HTTPDNS和传统的DNS技术相比有哪些区别&#xff1f;HTTPDNS又有哪些作用呢&#xff1f;针对这些问题&#xff0c;本文中科三方做下简单介绍…