作者swallowcc (罹患重度能年病的燕叔)
看板Ajax
标题[问题] parse ptt web 的问题
时间Mon May 15 14:47:35 2017
小弟有写一个 parse web ptt 推文统计的服务给乡民使用,
这一阵子有人反应统计後的数量不太对,
不过因为工作也忙, 所以没太仔细看.
今天早上稍微看了一下才发现, 原来是有些推文似乎被当作电子邮件
因为目前分隔符号使用 @, 所以有好几个推文都变成了 [email protected],
而且 parse 回来的内容有些也会自动被转换成那样的格式,
即使网页上看到的是正常的.
目前灾情实际状况的连结:
https://webptt.com/cn.aspx?n=bbs/LoveLive_Sip/M.1493798864.A.36B.html
而被转换过後的选项点下去後连到这边
https://webptt.com/cn.aspx?n=/cdn-cgi/l/email-protection
而里面有一段是这样的
You must enable Javascript in your browser in order to decode
the e-mail address.
从这看起来似乎有办法在前端就 decode 了,
所以想请问一下有人实作过这一段吗? 如果没办法就只好换个分隔符号了 囧rz
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.137.41.198
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1494830858.A.E73.html
1F:→ jmlntw: 关键字 Cloudflare Email Protection Decoder 05/15 15:33
也对齁, 都忘了先找一下 keyword 了. 金拍谢. XD
有找到後端的 decode sample code 了, 感恩~
附上 python/php sample code, 有需要的人就不用花时间找惹 ._.
http://blog.safebuff.com/2016/06/01/Cloudflare-Email-Protection-Decoder/
go language sample code
https://gist.github.com/AbeEstrada/11e4511f9915b00f9714
刚把 code 转成 java 版, 顺便贴一下
public static Integer hexdec(String c) {
return Integer.parseInt(c, 16);
}
public static String deCFEmail(String c) throws IOException {
int h = hexdec(c.substring(0, 2));
StringBuffer str = new StringBuffer();
for(int i = 2; i < c.length() - 1; i += 2) {
str.append((char) (hexdec(c.substring(i, i + 2)) ^ h));
}
return new String(str.toString().getBytes("ISO8859-1"));
}
※ 编辑: swallowcc (220.137.41.198), 05/15/2017 18:13:03