2009-09-09 30 views
5

Tôi có một trang web diễn đàn bằng tiếng Anh được viết bằng perl liên tục bị tấn công bằng thư rác bằng tiếng Nga. Có cách nào sử dụng Perl và regex để phát hiện văn bản tiếng Nga để tôi có thể chặn nó không?Tôi làm cách nào để phát hiện các bài đăng spam của Nga bằng Perl?

+3

Để phát hiện tiếng Nga, bạn cần phải tìm các từ chỉ được sử dụng bằng tiếng Nga. Hay bạn chỉ muốn thử nghiệm các chữ cái cyrillic? – Gumbo

+8

nếu ($ text ~ =/vodka /) {$ language = "ru"; } – tunnuz

+0

@Gumbo chỉ phát hiện Cyrillic là đủ tốt vì diễn đàn bằng tiếng Anh. –

Trả lời

8

Bạn có thể sử dụng sau đây để phát hiện Cyrillic ký tự (được sử dụng bằng tiếng Nga):

[\u0400-\u04FF]+ 

Nếu bạn thực sự chỉ muốn ký tự tiếng Nga, bạn có thể có một cái nhìn tại các văn bản nêu trên, trong đó có phạm vi chính xác sử dụng cho bảng chữ cái tiếng Nga cơ bản là [\u0410-\u044F]. Tất nhiên bạn cũng cần phải xem xét các nhân vật Cyrillic mở rộng được sử dụng độc quyền bằng tiếng Nga - cũng được đề cập trong tài liệu.

3

sử dụng bộ mã Cyrillic unicode theo đề xuất của JG là tốt nếu mọi thứ được mã hóa như vậy. tuy nhiên, đây là spam và phần lớn, mọi thứ không phải. ngoài ra, những kẻ tung thư rác sẽ thường xuyên sử dụng kết hợp các bộ ký tự trong thư rác để tiếp tục sử dụng cách tiếp cận này.

tôi thấy rằng cách tốt nhất (hoặc ít nhất là bước sơ bộ trong quá trình này) phát hiện thư rác Nga là để grep cho bảng mã phổ biến nhất được sử dụng:

koi8-r 
windows-1251 
iso-8859-5 

bước tiếp theo sau đó sẽ là thử một số thuật toán phát hiện ngôn ngữ về những gì còn lại. nếu đó là một vấn đề đủ lớn, hãy sử dụng một dịch vụ trả phí như google translate (cũng phát hiện ra) hoặc xerox. các dịch vụ này cung cấp IMO phát hiện ngôn ngữ tốt nhất xung quanh.

+0

Tôi hiểu quan điểm của bạn, nhưng vì đây là diễn đàn bằng tiếng Anh, nên phát hiện xem bài đăng chứa ký tự cyrillic có đủ để xác định rằng đó là spam hay không. –

+0

hmmm, i * đã * nghĩ rằng poster gốc đã nói về spam email ... nếu không phải như vậy, và thư rác đang được nhập thông qua trang web (ví dụ: trên diễn đàn) thì tôi sẽ đồng ý với những gì bạn đang nói. –

Các vấn đề liên quan