Google Webmaster Tools External links ++

By Joost de Valk Last update Mar 16, 2007 — Installed 423 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
// ==UserScript==
// @name			Current page NOT indexed!
// @namespace		http://www.joostdevalk.nl/code/greasemonkey/current-page-indexed/
// @description		Shows a message if the current page has not been indexed by Google
// @include		*
// @exclude		http://www.google.*
// @exclude		http://google.*
// @exclude		http://search.yahoo.*
// ==/UserScript==

(function () {
	var url = window.location.href;
	GoogleCheck(url);
})();

function printBox(message) {
	var id = "currentpagespidered";
	div = document.createElement("div");
	div.id = id;
	div.innerHTML = '<div style="position: absolute; left: 0px; top: 0px;' +
	'text-align: center; width: 200px; margin-bottom: 5px; z-index: 100; background-color: #000; padding: 2px;">' +
	'<p style="margin: 2px 0; background-color: inherit; font: bold 10px Verdana; color: #fff; font-weight: bold;"> ' 
	+ message + '</p></div>';

	document.body.insertBefore( div, document.body.firstChild );
	window.setTimeout(
		function() {
			var div = document.getElementById( id );
			if ( div ) {
				div.parentNode.removeChild( div );
			}
		}
	, 7500 ); 
}

function GoogleCheck(url) {
	var url1 = "site:"+url;
	var url2 = exclude( url ).replace( /_/, "%5F" );
	var ch = strord(url1);
	var chSum = googleCH(ch);
	var newCh = googleNewCh(chSum);
	var myURL = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=" + "6" + newCh + "&ie=UTF-8&output=XML&oe=UTF-8&q=site:" +url;
	
	GM_xmlhttpRequest({
		method: 'GET',
		url: myURL,
		headers: {
			'User-agent': 'Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)',
			'Accept': 'application/atom+xml,application/xml,text/xml',
		},
		onload: function(responseDetails) {
			doc = responseDetails.responseText;
			if (doc.search("<R N=\"1\">") == -1) {
				printBox("Page has <b>NOT</b> been indexed by Google");
			}
		}
	});
}
 
function googleCH( url ) {
	var init = 0xE6359A60;
	var length = url.length;
	var a = 0x9E3779B9;
	var b = 0x9E3779B9;
	var c = 0xE6359A60;
	var k = 0;
	var len = length;
	var mixo = new Array();

	while( len >= 12 ) {
	   a += (url[k+0] +(url[k+1]<<8) +(url[k+2]<<16) +(url[k+3]<<24));
	   b += (url[k+4] +(url[k+5]<<8) +(url[k+6]<<16) +(url[k+7]<<24));
	   c += (url[k+8] +(url[k+9]<<8) +(url[k+10]<<16)+(url[k+11]<<24));
	   mixo = mix(a,b,c);
	   a = mixo[0]; b = mixo[1]; c = mixo[2];
	   k += 12;
	   len -= 12;
	}
	c += length;
	switch( len ) {
		case 11:
			c += url[k+10]<<24;
		case 10:
			c+=url[k+9]<<16;
		case 9 :
			c+=url[k+8]<<8;
		case 8 :
			b+=(url[k+7]<<24);
		case 7 :
			b+=(url[k+6]<<16);
		case 6 :
			b+=(url[k+5]<<8);
		case 5 :
			b+=(url[k+4]);
		case 4 :
			a+=(url[k+3]<<24);
		case 3 :
			a+=(url[k+2]<<16);
		case 2 :
			a+=(url[k+1]<<8);
		case 1 :
			a+=(url[k+0]);
	}
	mixo = mix( a, b, c );
	if( mixo[2] < 0 ) {
		return ( 0x100000000 + mixo[2] );
	} else {
		return mixo[2];
	}
}

function googleNewCh(ch ) {
	ch = ( ( ( ch / 7 ) << 2 ) | ( ( myfmod( ch,13 ) ) & 7 ) );
	prbuf = new Array();
	prbuf[0] = ch;
	for( i = 1; i < 20; i++ ) {
		prbuf[i] = prbuf[i-1] - 9;
	}
	ch = googleCH(c32to8bit( prbuf ), 80 );
	return ch;
}

function myfmod( x, y ) {
	var i = Math.floor( x / y );
	return ( x - i * y );
}

function c32to8bit( arr32 ) {
	var arr8 = new Array();
	
	for( i = 0; i < arr32.length; i++ ) {
		for( bitOrder = i * 4; bitOrder <= i * 4 + 3; bitOrder++ ) {
			arr8[bitOrder] = arr32[i] & 255;
			arr32[i] = zeroFill( arr32[i], 8 );       
		}
	}
	return arr8;
}
	 
function exclude( url ) {
	return escape(url).replace(/\+/g, '%2B').replace(/\"/g, '%22').replace(/\'/g, '%27');
}

function strord(string) {
	var result = new Array();
	for(i = 0; i < string.length; i++ ) {
		result[i] = string[i].charCodeAt( 0 );
	}
	return result;
}	

function mix( a, b, c ) {
	a -= b; a -= c; a ^= (zeroFill( c, 13 ) );
	b -= c; b -= a; b ^= ( a << 8 );
	c -= a; c -= b; c ^= (zeroFill( b, 13 ) );
	a -= b; a -= c; a ^= (zeroFill( c, 12 ) );
	b -= c; b -= a; b ^= ( a << 16);
	c -= a; c -= b; c ^= (zeroFill( b, 5 ) );
	a -= b; a -= c; a ^= (zeroFill( c, 3 ) );
	b -= c; b -= a; b ^= ( a << 10);
	c -= a; c -= b; c ^= (zeroFill( b, 15 ) );
	var ret = new Array( (a), (b), (c) );
	return ret;
}

function zeroFill( a, b ) {
	var z = hexdec( 80000000 );
	if( z & a ) {
		a = a >> 1;
		a &= ~z;
		a |= 0x40000000;
		a = a >> ( b - 1 );
	}
	else {
		a = a >> b;
	}
	return (a);
 }

function hexdec( str ) {
	return parseInt( str, 16 );
}

function oc(a) {
	// Taken from http://www.snook.ca/archives/javascript/testing_for_a_v/
	var o = {};
	for(var i=0;i<a.length;i++) {
		o[a[i]]='';
	}
	return o;
}