有没有办法通过JSOUP解析受这段代码保护的电子邮件地址:
<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="29484e4a404a4c50404469484e4a404a4c504044074a4644">[email protected]</a>
使用标准elements.select(".email").text();
进行分析时,它会返回[email protected]
。
我试图谷歌这个,但发现了很多不相关的信息。
答案 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