Case 003: ดัก URL แบบสุ่ม

จาก Wiki Opensource

ปัญหา : จดหมายขยะ เนื้อความหลากหลาย แต่มี Link หน้าตาประมาณนี้

href="http://sknxpb.yaxiyopic.cn/remove.php?msgid=bdf653bd83f7aaf42e8ee&user=marjoybrockwa@psu.ac.th"> href="http://qyvp.yaxiyopic.cn/remove.php?msgid=0936fa44a9fedbdae38c2f393&user=s4635303@psu.ac.th"> href="http://nygqdw.yaxiyopic.cn/remove.php?msgid=9f398a93aa5cca8a9c0a702&user=s4635265@psu.ac.th"> href="http://sefo.dohavaxov.cn/remove.php?msgid=ae2f4b87275a215c7688a457ec1&user=somluk.n@psu.ac.th"> href="http://qcfmcr.yaxiyopic.cn/remove.php?msgid=1747a1a77aab4687dd2ed&user=a@psu.ac.th"> href="http://vwtfe.yaxiyopic.cn/remove.php?msgid=eb029c3bff72d4ba52c29ec4b064&user=usmq@psu.ac.th">


แนวทางการแก้ปัญหา :

/http:\/\/[[:alnum:]]+\.[[:alnum:]]+\.cn\/remove\.php\?msgid=[[:alnum:]]+&user=([[:alnum:]]|\.|_)+@[[:alnum:]]+/ DISCARD china-remove-spam


อธิบาย:

จาก http:// ต้องใช้ \ เพื่อบัง / ครับ จึงเป็น http:\/\/ และใช้บังเครื่องหมาย / ทุกตัวใน pattern ครับ

[[:alnum:]] เป็นตัวแทนของ Alpha-Numeric ครับ และที่ต้องในเครื่องหมาย + เป็น [[:alnum:]]+ เพื่อบอกว่า เป็นตัวเลขและตัวอักษรปนกัน ตั้งแต่ 1 ตัวขึ้นไป

ส่วน "จุด" . ต้องบังด้วย \. เพราะ ถ้าไม่บัง แปลว่า ตัวอักษรอะไรก็ได้

ส่วน ? ก็ต้องบังด้วย ที่ php\? เพราะถ้าไม่บังจะต้อง match กับ php หรือ phpp, phpppp... ไม่พบกับ php? ตามที่ต้องการครับ

และ ([[:alnum:]]|\.|_)+ แปลว่า ให้เป็นตัวเลข หรือ ตัวอักษร หรือ จุด หรือ underscore (_) ก็ได้ จึงทำให้ตรวจพบทั้ง

username
username.s
username_s