Forum Moderators: martinibuster
I've blocked his IPs from visiting my websites. Denying access to my sites normally would help prevent click fraud, but he has now learnt how to use anonymous proxies.
I'm doing my best to block him, and I am denying access to over 9000 proxies and update the list in .htaccess almost every week. As you probably guess, he finds new proxies everytime. I can't keep up.
I really don't want this individual to jeopardize my little "business relationship" with Google.
What could I do?
He is currently blocking a huge list of known proxies. These proxies are known because they have been published on certain sites. I see serious problems with this methodology, and I would like to suggest an improvement and find out if anyone could offer coding suggestions. The problems are:
1. The proxy lists will never be complete unless you happen to use the exact same list as your attacker.
2. The proxy lists will never be completely up to date.
3. To ban every proxy known in the world probalby puts a serious load on the server when processing the .htaccess file. I can't believe helleborine isn't already seeing degraded performance iwth the number of IPs he is blocking.
This is what I suggest as a (perhaps) superior scheme:
Run a robot that, each time your site is accessed with a new IP address that you have not seen before, checks to see if the IP is a proxy. If it is, disallow access. Of course, more sophisticated versions could allow access and just remove AdSense ads. This has the advatage that it is always up to date, and you don't have to ban tens of thousands of proxies -- you only ban the ones that people are actually using to visit your site. It has the drawback of being reactive rather than proactive (the person has already accessed your site, and then you check, and decide if you want to allow them to acess it a second time). You could do the checking in real time, and make the block/not block decision before showing the page for the first time, but I suspect that the latency that would cause would be unacceptable.
Anyone have suggestions, improvements, know of code that exists to do something like this?
But you need scripting if you want to report the numbers in real time or take action based on the pattern of clicks.
A great free ad server (.php) script is called PHPAdsNew. It works wonders for my site. You can run ads by impressions, clicks, or day-to-day. You are able to provide your advertisers a username/password to log in and view their stats. As suggested you should deliver fake ads to the proxy IP Addresses...this can be accomplished easily with this software. You can rotate your Adsense ads with your other ads so you don't have to worry about showing two different contextual ads on the same page. You can even weigh your ads...such as: give Adsense a weight of 3 which means it will be displayed 3 times as more as other ads or ads with a weight of 1. Its just a thought...it worked for me.
My point is have diversity and other options even if mostly you rely on Adsense. It works out best in the long run for you and your visitors.
each time your site is accessed with a new IP address that you have not seen before, checks to see if the IP is a proxy
Nice idea. Except your database of IP addresses could get really big, really fast. Even one hit to the database onPageLoad, that's still a big job when your table has a kajillion records.
... How do you detect if a visitor's IP is a proxy?
Google/Yahoo! needs to respond to us (webmasters) in attempts to deliver IP addresses or any other data so that customers of Adsense/Overture can monitor who is and is not the origin of the click-throughs.
I think everyone has the right to see why they are being charged not just that they have been charged for a supposedly legit click-through.
Why does this seem so hard to come by using the Adsense or Overture systems?
I wish they would respond to this so that click fraud can be managed much better and more accurately.
Anyone feel the same on my idea here, I can't be the only one thinking about this.
Hollywood
Well, yes, especially if they aren't doing well. But advertisers how ARE doing well will be tempted to under-report. There would be considerable room for creative reporting in such a system, and it could lead to publishers seeing more of the low-converting ads and fewer of the high-converting ads. That would not exactly be a good thing....
I think pay by levels is a better suggestion. Such as: Track a visitors click point to end point. When a visitors clicks on your link it is tracked. Then when he clicks on links within your site that is also tracked. If a visitor goes at least 3 levels deep within your site then the advertiser pays...otherwise, the advertiser does not pay or pay the very minimum just for the click.
Like this:
<?php include("inc/ads.php");?>
-- inc/ads.php :
include("blocked_ips.php");
$ip = $_SERVER['REMOTE_ADDR'];
$ad_client = "<< YOUR PUBLISHER ID >>";
if(in_array($ip,$blocked_ips)) $ad_client="";
// print << ADSENSE CODE... $ad_client ...ADSENSE CONTINUED >>
-- inc/blocked_ips.php :
$blocked_ips = array(
'xx.xx.xx.xx', 'xx.xx.xx.xx', 'xx.xx.xx.xx'
);
Also makes it easier to maintain ad(sense) styles and sizes across your entire website.