Forum Moderators: martinibuster
When there are lots of results for a given query, I am getting relevant results. When there are few results, I get Alternate Ads.
In most cases, there doesn't seem to be enough content on the page to let Google figure out what the page is supposed to be about.
I wonder if a combination of page cloaking and a redirect for Mediapartners might solve this. Probably violates the TOS.
Adsense seems perfectly happy targetting ads based on title alone for new pages it has yet to spider.
How can Google know the title of a page unless it has crawled it? Are you saying that everytime Adsense is served on a new non-crawled page, Adsense even sends the title information along with the URL?
I don't think it's looking at keywords in the url at all, because the ads aren't varying at all when I change search criteria.
It does if there is nothing else to look at.
I have had adsense on a test-server that was behind a firewall, so google could not reach the site and had never seen it before, and it still served up reasonably well targetted ads, that is, targetted for the words in the url.
If adsense has nothing else, it will look at the url.
BTW, I'm not talking about the query string after the?. I'm talking about the file-name in the URL.
How can Google know the title of a page unless it has crawled it?
I am not an expert in this area, but I believe the title can be returned as past of the HTTP headers. You can make a request for the headers with requesting the body of the web page (a GET).
Since getting the headers is much faster than the document, Google can find them before the person loads the page and target AdSense accordingly. In addition, I believe a request for headers will not show up in your server logs.
All of this is simple enough to try out. Make some mostly blank pages that have
<html>
<head>
<title>Some Keywords</title>
</head>
<body>
<!-- Adsense Code -->
</body>
</html>
load them up to your server and see what ads appear.
On the other hand we also run searches of our database using pre-selected categories with set keywords (so visitors get a list of search links to separate pages). These searches give good consistent Adsense targeting. Presumably this is to do with the pages having more more consistent content.
I'm getting public service ads on my SERP's again which motivated me to look deeper. As a few others have noted, there is a google_hints variable which appears to be for premium partners. The variable's format is:
google_hints="some+text,even+more+text,some+other+stuff";
This gets passed to adsense as part of the request. I tried it out, and it made no difference to my site, which is probably because I'm just a plain vanilla adsense user and not premium.
Here is exactly what gets sent to google from your user's browser when it requests adwords. This first request asks for the javascript the browser needs to create the second request which actually requests the adwords. The second request is what sends all the data about the page.
Request one (for javascript):
GET /pagead/show_ads.js HTTP/1.1
Accept: */*
Referer: *referer containing my site's url*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
If-Modified-Since: Sat, 21 Feb 2004 04:02:31 GMT; length=5246
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98;)
Host: pagead2.googlesyndication.com
Connection: Keep-Alive
And here's the second request that is generated by the javascript from the first request:
GET /pagead/ads?*blanked out query string* HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel,
application/msword, application/x-shockwave-flash, */*
Referer: *my site URL*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98;)
Host: pagead2.googlesyndication.com
Connection: Keep-Alive
And here's the javascript that actually generates the second query:
*Edited out by owner. May be in copyright violation.*
A request is then sent to:
pagead2.googlesyndication.com
and the URL with query string looks like this. I've split each query string variable into seperate lines and blanked out stuff specific to my site:
http://pagead2.googlesyndication.com/pagead/ads?
client=*your unique adsense client ID*&
random=*a large number*&
lmt=*another large number*&
format=160x600_as&
output=html&
url=*blanked out my url*
color_bg=FFFFFF&
color_text=333333&
color_link=336699&
color_url=008000&
color_border=FFFFFF