Link building vs. spamming
In this article, I will explain spamming in guestbooks, how to aviod it. If you become the target of spam assassins, I will tell you how to successfully fight against these practices.
If you run a website, you have probably found out how important inbound links are. If you bought a link building service or if you established these links by yourself, you maybe found sites with guestbooks or forums filled with outgoing links. You asked yourself if it’s normal and if webmasters agreed on that.
OK, from my experience, I can tell you that most of links in guestbooks are spam! There are special guestbooks designed for links, but ordinary guestbooks are designed for people, their comments, questions and answers. Some time ago, when so-called SEOs didn’t know anything about guestbooks, they weren’t interested in them. I first became the victim of link builders on my photography dedicated site. I didn’t know anything about SEO and this site was designed to tell people something about my hobby and my interests. Sometimes, somebody posted a message into the guestbook, I replied and so on.
About 1 year ago, the first messages containing outgoing links were added to my message board. Fortunately, phpmyadmin allows a user to easily delete any record and since my guestbook stores the messages in only one table, they’re very easy to erase. So every time someone left a link containing message, I deleted it manually. Please note, that my guestbook is using htmlspecialchars() function from the beginning, so no-one was able to post real links. Everything appeared as normal text on my pages. Anyway, Google is very sophisticated and it interprets a text based link as a normal link. I think it isn’t a very good solution.
Some time ago, I received about 5 messages each day on my guestbook! Then I decided to fight against this evil. Since most guestbooks and internet applications are built on PHP and MySQL technology, the following source code should help 99% of you. But first let me explain the background of spammers.
Spammers are aimed at two, possibly three goals. Firstly, they’re doing link building. Once you successfully cut all links from your message board and spammers find it out, they focus on the second goal, which is posting stupid messages under fictitious email addresses. They used to post email addresses as the messages too. Why? Email addresses are stored by robots especially designed for spammers. Then they sell their emails lists which is the reason why your email account can receive unwanted emails which offer products. Because of this reason, be aware where you publish your email address. The last reason why spammers do spamming, is that if they want you to get mad and to disable your guestbook.
However, there are simple ways to avoid spamming on your site. Try the following methods:
- 1) Use registration, so only registered users will be able to post comments on your message board, and/or
- 2) Use email verification, and/or
- 3) Use images in the forms. Robots aren’t able to read images.
Here then are at least three ways how to avoid spamming supposing you are already a victim. Let’s analyse your situation and possible strategies.
Generally, there are two kinds of spammers. The first class are people who visit a site manually and they spam, spam and spam. When a spammer becomes tired of this work, he usually create some automated robot which finds guestbooks and fills them with links, or stupid messages. There’s no guarantee to successfully flag these robots or people by a single method. As you know, messages are basically determined by two main points.
Firstly is the IP. Banning some IPs is a very powerful tool and I use it. It even does what is says, you also know that there are many IPs in the world and every computer connected to the internet could become a spamming robot. The second thing is to determine the content of a message. This might be quite difficult since some words could be a normal part of any message. Even if there’s some risk of this method, you should use it if you want to fight successfully.
When you start to analyse IPs, you will find out that spammers work worldwide. I saw one forum where users were talking about spammers from Russia only. Some other forum was about spammers from India. I was wondering if there are spammers from these two countries only. Of course I considered there are spammers from the whole world, not only from these countries. Even though I’m not from Russia or India, I consider it as a kind of racism! So I analysed all IPs and I found out that there are spammers from South America as well as from Australia, England, USA. Simply from the whole world. So there’s no need to ban any country, because you would get spammed from another IPs as well as previously.
OK, so why to use an IP and word based ban engine? Isn’t it better to ban only some words or IPs? Imagine, that you successfully ban some IP from posting messages to your guestbook. It’s good, but if any other spammer visits your site and finds your guestbook, you will become a victim again. The same goes to banning some words. If any spam robot sends messages to your message board on a regular basis, you will easily find out that there are many words you should filter from the messages.
Finally, let’s take the source code below and install it to your message board in order to avoid spamming. It’s written in PHP and it is really very simple. Copy and paste it before your engine stores anything in the database. You can find the word and IP based ban engine. If you want to add some IP or new word, simply copy any line and define your word or IP. It doesn’t use MySQL, because it is faster and it can be implemented easily into any PHP source code even it isn’t using a MySQL database.
function is_contained($content,$what)
{
$found = 0;
for($i=0;$i<=strlen($content);$i++)
{
$new_tag = “” ;
for($j=0;$j<=strlen($what)-1;$j++)
$new_tag = $new_tag.$content[($i+$j)];
if(strtolower($new_tag)==strtolower($what))
$found = 1;
}
return $found;
}
$p = 1;
$hard[$p] = “www”; $p++;
$hard[$p] = “http”; $p++;
$hard[$p] = “bmw”; $p++;
$hard[$p] = “hydrocodone”; $p++;
$hard[$p] = “phentermine”; $p++;
$hard[$p] = “valium”; $p++;
$hard[$p] = “paxil”; $p++;
$hard[$p] = “zithromax”; $p++;
$hard[$p] = “amoxicillin”; $p++;
$hard[$p] = “sciatica”; $p++;
$hard[$p] = “steroid”; $p++;
$hard[$p] = “flexeril”; $p++;
$hard[$p] = “tamiflu”; $p++;
$hard[$p] = “allegra”; $p++;
$hard[$p] = “side effect”; $p++;
$hard[$p] = “penis”; $p++;
$hard[$p] = “nude”; $p++;
$hard[$p] = “pokemon”; $p++;
$hard[$p] = “blowjob”; $p++;
$hard[$p] = “xanax”; $p++;
$hard[$p] = “hentai”; $p++;
$hard[$p] = “ass”; $p++;
$hard[$p] = “aciphex”; $p++;
$hard[$p] = “poison ivy”; $p++;
$hard[$p] = “fioricet”; $p++;
$hard[$p] = “buy”; $p++;
$hard[$p] = “casino”; $p++;
$hard[$p] = “ultracet”; $p++;
$hard[$p] = “purchase”; $p++;
$hard[$p] = “yoga”; $p++;
$hard[$p] = “soma”; $p++;
$hard[$p] = “mortgage”; $p++;
$hard[$p] = “cash”; $p++;
$hard[$p] = “real estate”; $p++;
$hard[$p] = “refinance”; $p++;
$hard[$p] = “money”; $p++;
$hard[$p] = “debt”; $p++;
$hard[$p] = “cheap”; $p++;
$hard[$p] = “wellbutrin”; $p++;
$hard[$p] = “cialis”; $p++;
$p–;
$comment = nl2br(strip_tags($_REQUEST['comment'])); //the variable which contains the comment $stupid_word = 0;
for($i=1;$i<=$p;$i++)
if(is_contained($comment,$hard[$i])==1)
$stupid_word = 1;
$p = 1;
$hard[$p] = “125.240.113.194″; $p++;
$hard[$p] = “140.127.139.248″; $p++;
$hard[$p] = “82.236.237.63″; $p++;
$hard[$p] = “200.130.15.10″; $p++;
$hard[$p] = “218.233.65.206″; $p++;
$hard[$p] = “144.140.53.38″; $p++;
$hard[$p] = “216.207.123.200″; $p++;
$hard[$p] = “61.39.71.85″; $p++;
$hard[$p] = “211.38.113.101″; $p++;
$hard[$p] = “206.54.70.243″; $p++;
$hard[$p] = “208.66.193.62″; $p++;
$hard[$p] = “195.175.37.71″; $p++;
$hard[$p] = “200.237.79.194″; $p++;
$hard[$p] = “193.220.40.207″; $p++;
$hard[$p] = “85.255.117.18″; $p++;
$hard[$p] = “200.237.79.193″; $p++;
$hard[$p] = “195.226.244.78″; $p++;
$hard[$p] = “200.69.10.173″; $p++;
$hard[$p] = “195.225.176.77″; $p++;
$hard[$p] = “201.0.4.148″; $p++;
$hard[$p] = “81.177.14.241″; $p++;
$hard[$p] = “195.225.176.73″; $p++;
$hard[$p] = “200.225.194.49″; $p++;
$hard[$p] = “200.65.0.25″; $p++;
$hard[$p] = “194.126.164.5″; $p++;
$hard[$p] = “195.39.170.102″; $p++;
$hard[$p] = “141.85.37.4″; $p++;
$hard[$p] = “193.188.77.2″; $p++;
$hard[$p] = “217.78.51.254″; $p++;
$hard[$p] = “200.89.217.66″; $p++;
$hard[$p] = “203.190.163.214″; $p++;
$hard[$p] = “72.232.213.210″; $p++;
$hard[$p] = “81.177.15.236″; $p++;
$hard[$p] = “81.177.15.238″; $p++;
$hard[$p] = “62.75.219.205″; $p++;
$hard[$p] = “195.225.177.90″; $p++;
$hard[$p] = “200.65.127.163″; $p++;
$hard[$p] = “200.55.15.243″; $p++;
$hard[$p] = “211.24.161.18″; $p++;
$hard[$p] = “200.30.79.126″; $p++;
$hard[$p] = “218.133.30.88″; $p++;
$hard[$p] = “221.250.231.194″; $p++;
$hard[$p] = “212.184.102.131″; $p++;
$hard[$p] = “202.179.108.221″; $p++;
$p–;
$stupid_ip = 0;
for($i=1;$i<=$p;$i++)
if($REMOTE_ADDR==$hard[$i])
$stupid_ip = 1;
if(($stupid_ip==1)||($stupid_word==1))
{
//do nothing
}
else
{
//insert data into the database; don’t forget to insert data using htmlspecialchars()!
}
Happy banning:).