如何使用JSOUP解析[email protected]数据

时间:2018-03-10 09:45:48

标签: email parsing jsoup

有没有办法通过JSOUP解析受这段代码保护的电子邮件地址:

<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="29484e4a404a4c50404469484e4a404a4c504044074a4644">[email&#160;protected]</a>

使用标准elements.select(".email").text();进行分析时,它会返回[email protected]。 我试图谷歌这个,但发现了很多不相关的信息。

2 个答案:

答案 0 :(得分:4)

电子邮件地址已加密&#34;通过对电子邮件地址中的每个字符进行异或,并使用随机生成的第一个字节。将十六进制字符串解码为字节数组,并使用第一个字节对所有字节进行异或,以解密地址。

例如(在Python中):

In [1]: cfemail = '29484e4a404a4c50404469484e4a404a4c504044074a4644'

In [2]: encoded_bytes = bytes.fromhex(cfemail)

In [3]: encoded_bytes
Out[3]: b')HNJ@JLP@DiHNJ@JLP@D\x07JFD'

In [4]: bytes(byte ^ encoded_bytes[0] for byte in encoded_bytes[1:])
Out[4]: b'agciceyim@agciceyim.com'

答案 1 :(得分:0)

这是 Java 中的相同登录:

int main(){
  printf("%sABCDE","%sABCDE");
  return 0;
}

public static String convertToEmail(String hex) { try { byte[] decoded = Hex.decodeHex(hex); byte firstByte = decoded[0]; byte[] newBytes = new byte[decoded.length - 1]; for (int i = 0; i < decoded.length; i++) { byte result = (byte) (decoded[i] ^ firstByte); if (i == 0) { continue; } newBytes[i - 1] = result; } return new String(newBytes); } catch (DecoderException e) { e.printStackTrace(); } return null; } 是从这里导入的 Hex in

org.apache.commons.codec.binary.Hex