[問題] parse ptt web 的問題
小弟有寫一個 parse web ptt 推文統計的服務給鄉民使用,
這一陣子有人反應統計後的數量不太對,
不過因為工作也忙, 所以沒太仔細看.
今天早上稍微看了一下才發現, 原來是有些推文似乎被當作電子郵件
因為目前分隔符號使用 @, 所以有好幾個推文都變成了 [email protected],
而且 parse 回來的內容有些也會自動被轉換成那樣的格式,
即使網頁上看到的是正常的.
目前災情實際狀況的連結:
https://www.ptt.cc/bbs/LoveLive_Sip/M.1493798864.A.36B.html
而被轉換過後的選項點下去後連到這邊
https://www.ptt.cc/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://www.ptt.cc/bbs/Ajax/M.1494830858.A.E73.html
→
05/15 15:33, , 1F
05/15 15:33, 1F
也對齁, 都忘了先找一下 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
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章