We're getting a pile of fresh spam over on Ask Ubuntu at the moment. I know these idiots cycle around the sites but what strikes me is how eye-wateringly obviously spammy this stuff is.

Now not so accurate consequences of CLX Male Enhancement gingko bilobaThere have been a few recorded incidents wherein gingko biloba became capable of purpose some discomfort inside the gastrointestinal location as well as complications. http://crappy-link.example/obvious-spam

New users should not be able to post "male enhancement" to a technical SE. It has no place there. "Gingko" and all those other terms that used to fill our inboxes before email antispam got good. This one even ends with a crappy link. This is the sort of stuff that Smoke Detector would have a literal orgasm about. How is this not blocked?

I've talked with Tim (and others) in the past about the spam detection on SE and I know it's very clever when it works... But I think it's time to start being pragmatic about things.

A new user posting about these things is —in my long experience— always a spammer.

Block the post, add them to the IP blacklist, and save all the mods and reviewers a lot of time.

As I said, I've been in discussions that conclude "blacklists don't work" before. That "spammers always find a way". I'm sure they would and I'm sure the machine learning and Bayesian modelling and all that is super clever but as I say you have to be pragmatic.

A brand new user with no history, no system-wide trust, submitted a post containing at least 4 spam-phrases. One of those was a 90s classic. The non-blacklist approach might look clever but it's letting stupidly low hanging fruit through.

Some more points that keep coming up.

  • Phrasing matters to web-spammers because they're going after search engines. Even with decent trigram-matching bastardisation of the real phrase (eg mal3 enh@ncem3nt), there's a somewhat limited set of combinations for the important phrases (the drug names, the psychic name, whatever), and the URLs.

    More importantly, forcing spammers to break language makes it even clearer that they're spammers. If something does get through, the humans reading it are more likely to get a chuckle as they flag it up.

    (nofollow links aren't effective against all search engines)

  • Blocking them is important. Shog's answered about how the current blacklist politely tells people "you can't use that word, you naughty boy, you" but I don't find it surprising that isn't effective.

    When obvious spam comes in on a first post, block the IP.
    A 90% similar post coming in on another IP, first time user, block that IP.

    It won't stop all spam but you'll wear down their pool of bots and use up their time. You just have to get this to the point where it's no longer economical for them to post on these sites.

We're talking about all sorts of drawbacks and implementation time and effort but this could be as simple as just asking smokey to rate it and using a high threshold to ban IPs. My example scored 392/400.

As a software developer and a moderator, it's excruciating to see so many easy and immediately effective options that could be rolled out in hours.

  • 5
    Variations of this have been requested for years, and the answer by SE has always been that static blacklists don't help all that much, the spammers simply adapt. – Mad Scientist Aug 1 '17 at 11:40
  • This post is your example, right? You may want to obfuscate the keywords in there. – Mithrandir Aug 1 '17 at 11:40
  • 6
    Just some stats: that post was raised by SmokeDetector, was caught by 4 reasons with a combined accuracy of 392/400, and had 3 flags automatically cast on it. It was deleted 71 seconds after being reported. – angussidney Aug 1 '17 at 11:42
  • 4
    cough static blacklists don't work? – ArtOfCode Aug 1 '17 at 11:45
  • 4
    @ArtOfCode there's a big difference between a community-maintained blacklist which can be changed instantly, and a large corporate blacklist which takes developer time, code reviews, and a deploy cycle to change :) – angussidney Aug 1 '17 at 11:47
  • Aye, that was mostly tongue in cheek, @angus. – ArtOfCode Aug 1 '17 at 11:48
  • 7
    I've been party to several discussions ending in "blacklists don't work". And here we are, years on. Doesn't look like not using blacklists is working either. It doesn't have to be perfect, just pragmatic about nixing the lowest hanging fruit (there are pills for that). I just couldn't believe that "male enhancement" was a phrase that's still getting by spam blockers in 2017. – Oli Aug 1 '17 at 11:50
  • What about legitimate technical questions about spam-blocking? *ducks* – canon Aug 1 '17 at 15:41
  • 1
    If this is any consolation, in June and July your site has set new records for spam per month, which is the all-time record outside of SO. Well, maybe this is no consolation at all. – user315433 Aug 1 '17 at 15:52
  • @canon They get blocked. It's not perfect but [using completely fictional numbers] one SE staffer handling an appeal on 1-in-10000 first posts is more efficient than 5 people handling 1-in-50 first spam posts. Even farming the appeals out to mods (something I've requested for other things) would be better but that's work to implement. – Oli Aug 1 '17 at 15:58
  • We're going through another surge of these. Automated spam detector failing miserably, smoke detector catching everything, forcing all the work back on a limited pool of users. Please don't forget about us, Ask Ubuntu gets practically as much spam as Stack Overflow. – Oli Aug 23 '17 at 8:02

The problem with a blacklist on spam content is that it presents an immediate warning to a spammer that their post will not be accepted. This happens at the time that they're actively posting, so they know their spam didn't go through and they then try combinations until it does. As a moderator, I've seen this happen many times.

ArtOfCode points out the Smoke Detector, which catches spam after it has been posted. That's been very effective in stopping spammers because it lets them post and think they've succeeded, only to have the spam be destroyed minutes later and the post be fed into the SE anti-spam system. They aren't working around the Smoke Detector blacklist because they aren't hit with it immediately at the time of posting.

There is an updated blacklist on SE sites, and SE has added a number of common spam URLs to it that have been persistent problems on Stack Overflow. Those were only added once they became repeat problems, and targeting the URLs is more effective than going after specific phrases. Even so, they often worked around that by using URL shorteners (leading to a blacklist of those) or alternative URLs. Some even started posting links to other forums with weaker anti-spam systems where they have spammed their posts.

For a phrase-based blacklist to work well, you're going to need a way to delay the notification that something was spam so that the poster doesn't immediately see it. Maybe let them post, but have it be immediately deleted. Maybe hide the deletion colors and notice from these posts to these new users for system-deleted posts, as a kind of limited hellban. Don't know how hard that would be do, or if it would be truly effective, just speculating.

  • This is not unlike the hellbanning proposal from years ago, except at the post level instead of the user level. There's much less risk of false positives this way. – mmyers Aug 1 '17 at 16:38
  • 1
    For an example of when blacklists have utterly failed and outright backfired, see Banned content in comments/flags/questions? – Jon Ericson Aug 2 '17 at 2:40
  • 4
    Instant notification is apparently something that already happens. The problem isn't that we're telling them, it's that we're telling them then giving them unlimited edits until they pass the filter. Ban them. Ban anything like it coming within 10 minutes. Get a second opinion from Smoke Detector, or allow single human spam flags to affect a network-wide account destruction of the spammer. There are so many easy and obvious things to do here, it's frustrating to repeatedly see "nah, doesn't work". It's the current system that doesn't work. – Oli Aug 2 '17 at 9:10
  • @BradLarson, to avoid "an immediate warning to a spammer", there should be Tachy Goes To Coventry on StackExchange. – Cœur Aug 23 '17 at 5:54

Trivia: there already exists a big ol' pile of spammy words defined within the system that block new users from posting if they make up a significant portion of a post. It blocks about 10 posts a day on Ask Ubuntu alone.

90% of the authors then go on to tweak their posts until something goes through, at which point they get deleted. It works ok for purely automated spam, not really at all for the human-generated spam that ends up being seen.

  • status-tried-and-sorta-failed? – gnat Aug 2 '17 at 5:14
  • 6
    Maybe this would be effective if, rather than politely telling them not to post spam, you stuck obvious spammers straight on the IP blocklist. That's what I'm suggesting. Spammer posts spam, you don't let them try again. 99% match comes in on a different IP 10 minutes later? Instablock. I recognise botnets are big but adding a more tedious barrier to entry for obvious spam isn't a bad thing. – Oli Aug 2 '17 at 7:54

I totally agree that a spam filter should be implemented, but as far as I can tell, it's not practical.

Reason 1

Do you still remember the badly-received title word filter on Stack Overflow? Well, it worked fine by blocking the word "problem" from question titles. However, people seemed not to be wording better, but instead used blatant workarounds like deliberately misspelling the word, which even became a popular meme as a result. Thank God it was stopped!

As others have already pointed out, existing filters on SE are "preventive", not "offensive". They warn users about inappropriate content before they are posted, instead of deleting in after. The spam filter will more or less be similar to the "problem" filter, and will presumably have identical consequences. Should it be implemented, we won't see any more "Male Enhancement"s, but "Male Emhancement", "Male Enhancment" or "Ma-le En-hance-ment" instead. A static word filter can never effectively stop spams because blatant workarounds are circumventing it.

Reason 2

Another thing that makes a word filter not so effective is there's too many ways to spam. Assume you've blocked 1,000 words from spamming today, and people are no longer seeing "Male Enhancement". Tomorrow spammers will be taking "One Day Learn C++", "Profitable Online Casino" and even "Magic Car Rims" here. Can you block them all? No. Artificial Intelligence will be doing this job well but we're talking about static word filters! You're never catching up the speed new spammers are evolving. Stack Overflow stopped culling inactive users because eligible accounts are growing far faster than the culling limit.

Well, let's say, the community is made up of humans. Many humans have always been stronger than AIs. The community is reliable on removing spams. I've seen 2 spams today, both of which disappeared (with 6 red flags) in merely 30 seconds after showing up. So an automatic spam filter won't be very useful compared to real humans' activites. We'd better let SE developers focus on more progressive tasks than a spam filter.

Reason 3

While most words are, and should never be posted in normal questions, there are quite a few "edge cases" where those words may appear, or scattered up. We don't know when someone will have a problem about writing a livestock management system, and he'll likely post words "male" and "enhancement" in separate places. (We do know, however, that these two words should never come together.) Nor do we know when someone will be attempting to inject some code into a virtual casino game. Car rims are quite popular among racing games, though. We are blocking real questions from being posted, despite being only a minor part. Now the situation falls to Reason 1: Real questions have to work around the filter blatantly, degrading overall post quality.

I hope one day an AI filter is available and Stack Exchange buys it. Good programmers are expensive, but good programs are cheap, respectively.


Blacklisting spam should be a feature all Stack Exchange sites should have. There is spam on StackOverflow from time to time, and in some cases the posters are probably not aware they are posting spam (instead of adding code to a solution, they add a link to the Google Play listing, or some other link to download the app). This is often considered spam, but also off-topic on SO.

And I have as well seen targeted spam, where as many tags as possible are added to reach the largest audience possible (for an instance and other tags where there is a large amount of developers) to spread the spam as quickly as possible. It is, however, my experience that these are detected quickly, flagged as spam and downvoted a lot. I don't know how the moderators handle the account (ban IP, block account, etc) but I assume the account is at least deleted.

While I see your point of having a blacklist, to prevent and block spam, there should also be a human component. Spam-like messages can be automatically reported where someone reviews it (just another review queue). If this feature is added correctly, this could even be training an AI to detect and delete real spam, and not just someone adding a link to their app because they think that is how debugging works.

The most effective way as far as I see, is to block it before it gets asked. Take a bunch of spam questions, feed it to an AI and teach it to tell the difference between spam and stupid asking. As for the "first time users" part, that is something that needs to be defined from multiple variables.

If a new user means have been on the site less than a month, someone may create an account, wait a month and then ask without risk of black listing.

If is a low rep limit (say 10 or 20) it is possible to make edits until the point where 10 or 20 rep is reached and then spam. While it is a hard way, some may do it.

If it is a question or answer limit, it all depends on what a question/answer counts as. Say the user asks 3 questions by copy-pasting from elsewhere and all gets closed, that should not count towards the question limit. Same with answers. If the question or answer is deleted and/or closed, it should not count towards that limit.

The limit itself is something that has to be discussed further if a blacklist actually is to be added.

As for the hard part about this proposed blacklist:

What should it block?

It isn't just to block phrases that say a given text, as someone could mask that with other letters (replace s with 5 or $, turn letters and in other ways make it look like it isn't a regular letter). Like that one could also detect the spam though. There is a large amount of data to detect, which is why I earlier proposed some kind of AI and an initial review queue for those questions and answers.

As you mentioned in your question:

As I said, I've been in discussions that conclude "blacklists don't work" before. That "spammers always find a way"

While they may, that is the point of having an AI behind it and not looking for regex or common phrases and/or words. Having some kind of AI behind it that learns what a spam question/answer is and the difference between spam and low quality would mean the AI evolves with the spam.

A suggestion on how to implement this is to feed all the posts that have been flagged as and confirmed to be spam (someone flags as spam -> flag is deemed helpful -> feed to AI). this would also mean any new types of spam that appear after the blacklisting is started would be flagged by users, fed to the AI and the AI blocks it. There is still bound to be some spam that gets through, but a potential AI would be able to learn the new types of spam and block it.

This has to be really advanced though, as there is a risk of blocking real questions and answers that are not spam.

There are a lot of new and old users who have bad English, so that isn't something that should be used for detection. Detecting other languages isn't a good idea either as it ins't necessarily spam, it could just belong on a different site. For an instance, a question in Russian is asked on Stack Overflow. This is a valid question, but it is in the wrong language for Stack Overflow. This question is not spam, it is not appropriate for the site (language-wise). They are closed as unclear. This Russian question would be better on Russian Stack Overflow. However, there is also a real chance the same question is spam. But there is also an equal chance it isn't.

Just using regex isn't feasible for a filter to detect spam, as spam can grow to outsmart the filter. That is why an AI filter is useful, as when spam outsmarts the filter, the filter can then outsmart the spam.

I would love to have a blacklist for spam, but is is very complicated to create something like that. There are a ton of things to think about, and there is a lot of work to create it. That is one of the main reasons I think there will never be a spam blacklist, as a good blacklist would involve a lot of work. But yes, it would benefit the users, and would take a load off the moderator queue(I think mods review spam, don't remember if any users can).

I would say the most important thing with a spam blacklist filter is to save close votes and lower the load on the close vote review queue. On Stack Overflow, there are about 9000 questions in the close vote review queue, and having filters that can help remove some of these and prevent them from ever being asked would lower that load

  • 4
    You're talking about a clever solution to devious spammers. I've suggested something very like (and beyond) this before. Honestly, while phrases like "male enhancement" are littering our sites, I'll settle for a stupid blacklist with the most idiotically spammy phrases in it. We can be clever when we need it. I know it's an arms race but not competing doesn't mean you win. – Oli Aug 1 '17 at 13:21
  • 4
    From my experience with SmokeDetector, I’ve learned one important rule: spammers are stupid. The goal here isn’t to catch every single spam post, because the community can handle the edge cases. If we could catch ¼ of the spam before it got posted, that would be a significant improvement. – J F Aug 1 '17 at 16:00
  • Catching more is an even more improvement. – Princess Celestia Aug 1 '17 at 16:39
  • @JF Normal people are also stupid. – iBug Aug 1 '17 at 17:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .