Archive Page 2

Protecting your privacy from Google with Squid and FoxyProxy

There is no doubt about it; this has definitely been Google’s Privacy Week.

Relevant news:

Privacy International’s open letter to Google
Danny Sullivan defending Google
Matt Cutts defending his employer
Google’s official response (PDF letter)
Google Video flaw exposes user credentials

It’s only human nature to defend ourselves (and those close to us) when we are under public scrutiny. I am not surprised to see Matt or Danny stand behind Google on this matter. I do think it is far more wise and beneficial to look into criticism and determine for ourselves what we can do to remedy it. I am glad to see that Google took this approach on their official response:

After considering the Working Party’s concerns, we are announcing a new policy: to anonymize our search server logs after 18 months, rather than the previously-established period of 18 to 24 months. We believe that we can still address our legitimate interests in security, innovation and anti-fraud efforts with this shorter period … We are considering the Working Party’s concerns regarding cookie expiration periods, and we are exploring ways to redesign cookies and to reduce their expiration without artificially forcing users to re-enter basic preferences such as language preference. We plan to make an announcement about privacy improvements for our cookies in the coming months.

You can take any side you want. But, I feel that none of the people covering this topic has addressed two critical issues: 1) How do you opt-out of data collection by Google or other search engines at will? 2) And, do you want to wait 18 months for your data to be anonymized?

My answer is no. You can anonymize your data with Squid, configured as an anonymous proxy, and using the FoxyProxy Firefox extension. This solution assumes that you have access to a Linux box, where you can install Squid (if it’s not already installed), and you can make the relevant changes to the proxy’s configuration. If you don’t have such access, there is a Windows port or you might search for a good anonymous proxy service. I don’t use any and can’t point you to anyone in particular.

What is an anonymous proxy?

A proxy is basically a server software that intercepts all your traffic before it reaches its destination. Proxies usually do something with your traffic. They can filter it, modify it, block it, cache it, etc. Depending on the Internet Protocol they serve (HTTP, SMTP, etc.) and the protocol used to access them (SOCKS5, HTTP, etc.), there are different types of proxies,. Your web browser comes with all you need to access proxy servers.

If you use a proxy server, the IP address of your proxy is the one that is going to show up on the referrer’s logs of sites you visit. That is unless their scripts read the HTTP server variable: HTTP_X_FORWARDED_FOR. This variable contains the list of proxies you used to get to the current server. Typical proxies pass this information along.

An anonymous proxy server is a proxy server that does not pass HTTP_X_FORWARDED_FOR, and removes all identifiable information from the user, — including requests. JavaScript makes it really difficult to be completely anonymous, so it is often a good idea to turn it off is you don’t need it. Squid is an open source proxy server. You can find the installation instructions here. To make it an anonymous proxy, add the following lines to your squid.conf file, and restart the server:

forwarded_for off
anonymize_headers allow Allow Authorization Cache-Control
anonymize_headers allow Content-Encoding Content-Length
anonymize_headers allow Content-Type Date Expires Host
anonymize_headers allow If-Modified-Since Last-Modified
anonymize_headers allow Location Pragma Accept Charset
anonymize_headers allow Accept-Encoding Accept-Language
anonymize_headers allow Content-Language Mime-Version
anonymize_headers allow Retry-After Title Connection
anonymize_headers allow Proxy-Connection

fake_user_agent Mosaic/0.1 (CP/M; 8-bit)

Now that you have done the hardest part and you have an anonymous proxy server, you need to setup your client to take advantage of this. Since, I use Firefox as my browser, I will use this to illustrate my point.

Why use a FoxyProxy extension, if I can simply setup my own anonymous proxy?

You might only want to enable the proxy while you are using Google and other search engines, and not when you are browsing elsewhere. FoxyProxy is very handy for this. Do the following to use it:

  1. Install FoxyProxy
  2. Add your anonymous proxy via the Add New Proxy button. (Squid port is usually 3128)
  3. On the patterns tab for your proxy, define one wildcard pattern for each search engine. ie.: *

Now you can surf the web with absolutely certainty that Google, and other search engines will not be able to link your searches to you. For maximum protection, do not login to any Google service while the proxy is on. You might also want to install a few more anonymizing proxies and add them to your FoxyProxy configuration.


The power of sharing

While most developers and technical people are used to sharing useful information, most entrepreneurs and consultants do not, or share very little. The logic is: “why share information if you can charge for it?”

Let me give you my thoughts on this, as I’ve been on both sides of the camp and therefore, I can offer an unique perspective.

Right after college, back in 1996, I landed a job as a Windows c++ software developer. I remember that I used to spend 20-30% of my time reading news groups, looking for other developers facing the same compiler errors that I was facing. This was far easier and less time consuming than trying to figure out the problem myself. Occasionally, I did have to solve some difficult problems on my own, however, the newsgroups proved to be a very valuable resource.

I met Linux while at college and I immediately felt in love with all things open source. I remember downloading “Slackware” over a 28kb/s line and copying it to 700 floppy disks! worried that they might remove it and I wouldn’t be able to download it later. I did not think this free OS would last long. I’m glad I was wrong.

I’ve came across colleagues that protected their knowledge with iron claws. They felt that having their knowledge out in the open would make them replaceable. They did this to protect their job.

Benefits of Sharing

On my next job, I worked as a Solaris/Linux system administrator and I was surprised to learn that the senior administrator was not sharing information with others. His reasoning was that if he shared, others would take his place. Paradoxically, I became the senior admin by doing exactly the opposite. As I was willing to share, others listened to my opinions, I gained more responsibility, and obtained better and higher paying positions.

Before I started my first company, I was very comfortable with sharing. Being a Linux/Open source fan, there was no point in keeping things to myself. Later, when I started to learn marketing I realized that while developers and technical people are more prone to share, marketers were not so altruistic. The affiliate marketer, that inspired me to move my young company in the right direction, would not share a single bit of information for competitive reasons. I’m glad that the few words he did say were enough for me to find the right path (you can find them in my about page).

Why would I tell a potential customer how to solve their problem? The customer can pretty much do it on his or her own after learning how to do it.

My basic principle is that there are other things to earn besides money. Branding is one of them.

I firmly believe that the easiest way to receive is to give. Try to share as much as you can, but first try to have a sustainable business model.

I think that now it is easier and cheaper than ever to create a start-up with no external funding. Even if you have the money to spend, it is wiser to go low budget. What you are trying to build with a lot of money has probably been built by somebody else. Probably using open source software and free content that provides the same value.

Now, coming up with a viable business model is increasingly difficult. Some experts offer advice for free and make your buy their e-books, others offer e-books for free and sell the tools, others offer tools and e-books for free and sell advice or ads. How can you come up with a winning formula in such a market? Over-delivering and offering unique value is one way to achieve this.

Every rule has it’s exception, so sharing your information is NOT always a good idea.

One of my developers faced this predicament while doing some after-hours freelance work for one of the companies I used to work for. They tried multiple times to squeeze that information out of him, in order to avoid having to pay him for his services. I recommended him to not tell them how to solve their problem. Sharing this information with them would not be “economically sustainable”.

Find out what you can share and what you can’t, but please, start sharing!


Why Viralinks are a waste of time?

I’m new to blogging, and I’m catching up with a lot of interesting things. One of them is the Viralink, coined by Andy Coates.

I was exposed to the concept while reading John’s blog. One of the readers mentioned he was trying out a Viralink on his blog and he was getting a little bit of traffic.

What is a Viralink? A Viralink is basically a new scheme to build up the PageRank of the participating sites. The instructions at Andy’s blog explain everything better.

———copy and paste the Viralink and instructions below this line———

Below is a matrix of 120 stars, I have already added a link to my blog onto one of the stars, all you need to do is copy and paste the grid into your blog and add your own link to one of the other spare stars, and tell others to do the same!



When I receive a ping back once you have added the Viralink to your site I will add your link to this grid, and each person who copies the grid from here will also link to your site!

No Porn Sites
Only 1 link per person (i.e don’t hog the viralink!)
Please don’t tamper with other peoples url’s

———copy and paste the Viralink and instructions above this line———

I have to admit that it is a very clever idea. By participating in a Viralink, you can potentially get hundreds or thousands of links, and a very nice PageRank.

Now, let me give you the specific reasons why I think this is risky, and pretty much a waste of time.

  • There is no direct or indirect benefit for your readers. The links don’t even have text or descriptions. You can’t expect readers to mouse over the links, and try to guess from the URL whether they want to click to the linked page or not. This is simply designed to fool the search engines.
  • There is no anchor text benefit. I am not sure who wants to be #1 for the highly popular phrase ‘*’.

Quality guidelines

These quality guidelines cover the most common forms of deceptive or manipulative behavior, but Google may respond negatively to other misleading practices not listed here (e.g. tricking users by registering misspellings of well-known websites). It’s not safe to assume that just because a specific deceptive technique isn’t included on this page, Google approves of it. Webmasters who spend their energies upholding the spirit of the basic principles will provide a much better user experience and subsequently enjoy better ranking than those who spend their time looking for loopholes they can exploit.

If you believe that another site is abusing Google’s quality guidelines, please report that site at http://www. Google prefers developing scalable and automated solutions to problems, so we attempt to minimize hand-to-hand spam fighting. The spam reports we receive are used to create scalable algorithms that recognize and block future spam attempts.

Quality guidelines – basic principles

  • Make pages for users, not for search engines. Don’t deceive your users or present different content to search engines than you display to users, which is commonly referred to as “cloaking.”
  • Avoid tricks intended to improve search engine rankings. A good rule of thumb is whether you’d feel comfortable explaining what you’ve done to a website that competes with you. Another useful test is to ask, “Does this help my users? Would I do this if search engines didn’t exist?”
  • Don’t participate in link schemes designed to increase your site’s ranking or PageRank. In particular, avoid links to web spammers or “bad neighborhoods” on the web, as your own ranking may be affected adversely by those links.
  • Don’t use unauthorized computer programs to submit pages, check rankings, etc. Such programs consume computing resources and violate our Terms of Service. Google does not recommend the use of products such as WebPosition Gold™ that send automatic or programmatic queries to Google.
  • Your competitor will see this and report you.
  • This is very easy for search engines to detect automatically. They just need to look for blocks of links with ‘*’ in their anchor text.

Doing this is probably very time consuming. Why not spend the time creating useful content that attracts links naturally (Linkbait)?

Dynamic Keyword Insertion for Landing Pages

One critical aspect of highly successful search marketing campaigns is making sure searchers find what they are looking for. I posted this before.

To accomplish this, we first need to grab the visitors’ attention, get them to click through our pages, and ensure that the pages’ content matches the search.

Whether you are doing SEO or PPC, it is imperative that your ads (title and description if SEO) include the search terms.

Advanced PPC management platforms (such as Adwords) provide a very useful feature for this purpose: Dynamic Keyword Insertion (DKI). The purpose of this feature is to help the advertiser create dynamic ads that include the queried keywords in the ad copy, automatically.

DKI works by creating a place holder text (ie.: {Widgets}) where you want the keywords to be included. A typical ad that says: “Buy Widget” will say the same, no matter what the user is searching for. Now, using DKI, for the ad: “Buy {Widget}”, the text inside the brackets, and the brackets will be replaced with whatever the users types in the search box. If he or she types “blue widgets”, the ad will say “Buy Blue Widgets”, etc. This is very useful. DKI can be used to replace all the text in an ad (the title, text and landing page). Jennifer Slegg wrote an interesting article on using DKI for changing the URL of the landing page in the PPC ad.

The point is that the closer the ad is to the search query, the more likely the visitor is going to click on it. In addition to this, Google highlights the keywords if they match the query. This helps a lot too.

Now, what happens when the visitor gets to the landing page? Well, chances are that the page will not include the exact keywords the visitor used to conduct the search; especially, if you are doing PPC. In order to fix this, I use a very simple technique: I use client-side or server-side dynamic pages to get the keywords from the referring URL (search engine) and to automatically replace those keywords in the landing page copy.

This can be done with Javascript on the client-side, or with PHP, ASP, etc. on the server-side. I will use Django and Python to illustrate this concept. It’s been a while since the last time I wrote something in PHP or Perl, and if you’ve read some of my previous posts, you’d probably know that I am a big fan of Python. Let me tell you that I am a big fan of Django too. Django is a rapid web development framework, similar to Ruby on Rails or Cake PHP. It makes web development a lot more productive.

The logic in my code is to capture the search query live on the dynamic code, pass the captured keywords to the template, and let the template code dynamically replace the keywords where appropriate on the landing page text. We will borrow the relevant code to parse the keywords from my previous post.

Django uses four main files for a basic web application:,, and template.html. We are not going to use a database, so we don’t need the file Please visit to get help in setting up Django and a simple web application.

The mysite’s project files contents:

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^/landing_page/$', 'mysite.views.landing_page'),

) contents:

import re
from urlparse import urlparse
from cgi import parse_qsl

def landing_page(request):

	p = r’[^”]+”GETs([^s]+)[^”]+”s2[^”]+”([^”]+(?:google|yahoo|msn|ask)+[^”]+)”‘

	referrer = request.META[HTTP_REFERER]
	m =, referrer)

	if m:

	 	(internal, link) = m.groups()

			elements = urlparse(link)

			if elements[4]: #check to see if there is query string

				params = parse_qsl(elements[4])#break qs in keyword, value pairs

				for (param,keywords) in params:

					if param == ‘p’ or param == ‘q’:

						return render_to_response('/page.html', {'keywords': keywords})

page.html (template) contents:

    <title>{{keywords}}<!-- here we dynamically replace the page title with the searched for keywords --></title>
    <img src="sitelogo.gif" alt="Logo" />
	<h1>Articles for {{ keywords }}<!-- here we dynamically replace part of a heading with the searched for keywords --></h1>


When somebody lands on the dynamic page, coming from a search engine, the HTTP_REFERRER will be analyzed to extract the keywords. The keywords will then be passed to the HTML template, as well as anywhere we want the keywords to appear. (We only need to include {{ keywords }} as a text holder). This is very similar to the functionality of DKI of Google Adwords, but for landing pages.

Preventing duplicate content issues via robots.txt and .htaccess

Rand of posted an interesting article on duplicate content issues. He uses the typical blog to show different examples.

In a blog, every post can appear in the home page, pagination, archives, feeds, etc.

Rand suggests the use of the meta robots tag “no-index”, or the potentially risky use of cloaking, to redirect the robots to the original source.

Joost the Valk recommends WordPress users change some lines in the source code to address these problems.

There are a few items I would like to add to the problem and to the proposed solution.

As willcritchlow asks, there is also the problem of multiple URLs leading to the same content (ie.:,,, etc.). This can be fixed by using HTTP redirects and by telling Google what is our preferred domain via webmaster central.

Reader roadies, recalls reading about a robots.txt and .htaccess solution somewhere. That gave me the inspiration to write this post.

After carefully reviewing Google’s official response to the duplicate content issue, it occurred to me that the problem might not be as bad as we think.

What does Google do about it?
During our crawling and when serving search results, we try hard to index and show pages with distinct information. This filtering means, for instance, that if your site has articles in “regular” and “printer” versions and neither set is blocked in robots.txt or via a noindex meta tag, we’ll choose one version to list. In the rare cases in which we perceive that duplicate content may be shown with intent to manipulate our rankings and deceive our users, we’ll also make appropriate adjustments in the indexing and ranking of the sites involved. However, we prefer to focus on filtering — rather than ranking adjustments … so in the vast majority of cases, the worst thing that’ll befall webmasters is to see the “less desired” version of a page shown in our index.

Basically, Google says that unless we are trying to do something purposely ill intended (like ‘borrowing’ content from other sites), they will only toss out duplicate pages. They explain that their algorithm automatically detects the ‘right’ page and uses that to return results.

The problem is that we might not want Google to choose the ‘right’ page for us. Maybe they are choosing the printer-friendly page and we want them to choose the page that includes our sponsors’ ads! That is one of the main reasons, in my opinion, to address the duplicate content issue. Another thing is that those tossed out pages will likely end up in the infamous supplemental index. Nobody wants them there :-).

One important addition to Rand’s article is the use of robots.txt to address the issue. One advantage, this has over the use of the meta robots tag “no-index”, is in the case of RSS feeds. Web robots index them, they contain duplicate content but the meta tag is intended for HTML/XHTML content and the feeds are XML content.

If you read my post on John Chow’s robots.txt file, you probably noticed that some of the changes he did to his file, were precisely to address duplicate content issues.

Now, let me explain how you can address duplicate content via robots.txt.

One of the nice things about Google’s bot is that it supports pattern matching. This is not part of the robots exclusion standard. Other web bots probably don’t support it.

As I am a little bit lazy, I will use Googlebot for the example as it will require less typing.

User-Agent: Googlebot

#Prevents Google's robot from accessing paginated pages

Disallow: /page/*

Disallow: /*?* #Some blogs use dynamic URLs for pagination.
#For example:

#Prevents Googlebot from accessing the archived posts
Disallow: /2007/05

Disallow: /2007/06 # It is not a good idea to use * here, like /2007/*,
# because that will prevent access to the post as well. ie.:/2007/06/06/advanced-link-cloaking-techniques/

#Prevents Googlebot from accessing the feeds

Disallow: /feed/

To address print-friendly pages duplication, I think the best solution is to use CSS styles.

Now, let’s see how you can address the problem of the same content accessible from multiple URLs, by using .htaccess and permanent redirects. This assumes you use Apache and mod_alias. More complex manipulation can be achieved via mod_rewrite.

You just need to create a .htaccess file in your website’s root folder with this content:

RedirectPermanent /index.php

Or alternatively:

Redirect 301 /index.php

Or, in the event that you plan to use regular expressions, try this:

RedirectMatch 301 /[Ii]ndex.php$ 
# this matches Index.php and index.php

Google allows you to tell them what is your preferred canonical name ( vs via Webmaster Central, so this step is no longer necessary. At least, if your only concern is Google.

To force all access to your site include www in the URL (ie.: instead of You can use redirection via .htaccess file.

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} !^ [NC] 
# Redirect to

RewriteRule ^(.*)$1 [L,R=301]

As I said. These additional lines are probably unnecessary, but it doesn’t hurt to do add them.

Update: Reader identity correctly pointed out that secure pages (https) can cause duplicate content problems.  I was able to confirm that at least Google is indexing secure pages.

To solve this, I removed the redirection lines from the .htaccess file and I recommend you use a separate robots.txt for with these few lines:

User-Agent: Googlebot

#Prevents Google's robot from accessing all pages

Disallow: /


Advanced link cloaking techniques

The interesting discussion between Rand and Jeremy had me thinking about some of the things affiliates do to protect their links. I am talking about link cloaking — the art of hiding links.

We can hide links from our potential customer (in the case of affiliate links), and we can hide them from the search engines as well (as in the case of reciprocal links, paid links, etc.).

While I think cloaking affiliate links to prevent others from stealing your commissions is useful, I am not encouraging you to use the techniques I am about to explain. I certainly think it is very important to understand link cloaking in order to protect yourself when you are buying products, services or links.

When I am reading a product endorsement, I usually mouse over the link to see if it is an affiliate link. Why? I don’t mind the blogger making a commission’; but, If I see he or she is trying to hide it via redirects, Java-script, etc. I don’t perceive it is as an endorsement.  I feel it is a concealed ad. When I see <aff>, editor’s note, etc. I feel I can trust the endorsement.

Another interesting technique is the cloaking of links to the search engines. The reasoning behind this concept is so that your link partners think you endorse them, but you tell the search engines that you don’t. Again, I am not supporting this.

Cloaking links to the potential customers.

Several of the techniques, I’ve seen are:

Script redirects — the use of simple script that takes a key (i.e: merchant=eBay), pulls the affiliate link from a database or from an in-line dictionary (programming term), and sends the visitor’s browser an HTTP 302 or 301 (temporary or permanent redirect) to the merchant site.

Meta refreshes — the use of blank HTML pages with the meta refresh tag and the affiliate tracking code embedded. This is very popular.

In-line Java-script— the use of Java-script to capture the mouse over, and the right click event from the target link, in order to make the status bar display the link without the tracking code. I feel this one is very deceptive.

Encoding URLs — the use of HTML character entities or URL encoding to obfuscate the tracking links or tracking codes from your visitors. This works because browsers understand the encoding and humans are unable to understand them without some work.

Java-script + image links — This is really advanced. I haven’t seen this being used much. The idea is to use Java-script to capture the on_click event and have the code pull a transparent image before transferring control to the new page. The trick is that the URL of the transparent image, is in reality a tracking script, that receives the tracking code as a parameter or as part of the URL.

Cloaking links to the search engines.

These are some of the techniques I’ve seen:

Use of rel=”no-follow” anchor attribute. I would not say this is technically cloaking, but the results are the same. Search engines (Google, Yahoo and Live) will not ‘respect’ those links.

Use of no-follow and/or no-index meta tag. There is a slight difference between the use of no-follow in the anchor link tag vs the meta robots tag. When used on the robots meta tag it means: “do not follow the links on this page”. When used on the anchor tag it tells the search engine “do not consider my link for your scoring” ( this link is not a vote/endorsement).

Crawler user agent check. This consists in detecting the search engine crawler by user agent via the HTTP REFERRER header and hiding the link or presenting the search engine a link with rel-no-follow. Normal visitors will not see this.

Crawler IPs check. Black hat SEOs keep a list of search engine crawler IP addresses to make cloaking more effective. While search engine crawlers announce their presence via the user agent header, when using cloaking detection algorithms they don’t.  Keeping a record of crawler IPs help detect them.

Once the crawler is detected, the same technique I just mentioned is used to hide the target links.

Robot.txt disallow. Disallowing search engine crawlers access to specific sections of your website (ie: link partner pages)via robot.txt, is another way to effectively hide those links from the search engines.

The use of robots-nocontent class. This is a relatively new addition (only Yahoo supports this at the moment). With this CSS class, you can tell the Yahoo crawler that you don’t want it to index portions of a page. Hiding link sections is another way to cloak links.

Robot.txt disallow + crawler IPs check. I haven’t seen this being used, but it’s technically possible. The idea is to  present search engines a different version of your robot.txt file than you present to users. The version you present to the search engines prohibits sections of your site where the links you want o hide are. You detect the search engine robot either by the user agent or by a list of known robots’ IP addresses. Note that you can prevent the search crawler from caching the robot.txt file making detection virtually impossible.

Now, as I said before, I am not exposing these techniques to promote them. On the contrary, here’s why it’s important to detect them.

The best way to detect cloaked links is to look closely at the HTML source and robot.txt file, and specially at the cache versions of those files. If you are buying or trading links for organic purposes (assuming you don’t get reported as spam by your competitors), don’t buy or trade links that use any of these techniques or that prevent the search engines from caching the robots.txt file or page in question.

Estimating visitor value

We love traffic.  We want as much traffic as possible.  It is really nice to see our traffic graphs jump really high.  With our PPC campaigns we pretty much obsess over our click-through rates.  We like to go after the keywords phrases that drive the most traffic.  Everybody is in love with Digg and Social Media.

All traffic is not equal, even search traffic coming from similar phrases.  What we really need is traffic that converts.  Visitors that take whatever action we expect them to take.  Buy an e-book, subscribe to our newsletter or download our software, etc.  We need traffic motivated to take action.

There is a big difference between running a site that get 10,000 visitors a day that makes $10,000 a month and one that gets 1,000 visitors a day that makes $20,000 a month. For the first, the visitor is worth 3 cents, and for the second is worth 66 cents — 22 times more.

While some might say that non-converting traffic is good for branding, I prefer branding that actually gets results.

The most cost effective way to get branding traffic, in my opinion, is via Viral Marketing, Social Media, Organic Search or very cheap CPM based deals.  I do not like the idea of big PPC budgets for branding only.

If you are planning or working on your start-up, you need to make the best use of your time and money, possible.

Here is a simple tip I use to get traffic that takes the action I want by measuring the potential visitor value before hand.

My tool of choice is Google’s Adwords Traffic Estimator.  I know it is not very accurate and many times the estimates are way off, but it serves my purposes.

1. Use the Google Keyword Research Tool to find as many relevant keywords as possible for the target content.
2. Include those keywords in the traffic estimator .
3. Set the maximum click to $100. Don’t panic! This is just for getting the #1 slot estimates.
4. Sort the results by cost per day. That is — the number of clicks times the maximum bid.

The reasoning is the following: If advertisers are willing to pay x for some particular keywords, that means that they are making at least that to break even.

It is a good idea to run the estimates several times during the week to rule out inexperienced advertisers bidding blunders.

If we sort by number of clicks, we only care about the volume of traffic. If we sort by the max cost per click we only want to target the most expensive keywords. Now, targeting the keywords with the max cost per day means we are after the money makers.
Use PPC, SEO or buy relevant ads or reviews on sites rankings for those keywords.

Subscribe to my Full RSS Feed

Add to Technorati Favorites

My Top Affiliate Sites

  • TripScan - "vacation package" - 50 million competitors - #13 - Yahoo
  • ReferralPay - "best affiliate programs" - 60 million competitors - #8 - Yahoo | 2 million competitors - #2 - Live
  • InkTrack - "ink cartridge" - 8 million competitors - #5 - Live
  • My Nice Gateaway