スポンサーリンク

はてなブックマークの自演は規約違反で,SEO目的でしてはいけない

はてブを自演でやりまくるのは,規約違反だ。

はてなからアカウントを停止される。

あるサイトのブックマーク数を増やそうとして,同一のサイトをブックマークしまくるのはNG。

SEO目的でブックマークしてると,逆にブックマーク停止で痛い目に遭う。

根拠となる資料

はてなブックマークのアカウントの停止のされ方とその対処方法 | アフィリエイトで稼ぐ情報商材レビューブログ
http://affiliateyota.jp/access/0031/

  • はてなブックマークの利用規約では 以下のような利用方法が禁止されています。 複数のはてなアカウントを取得して、同一のURLをブックマークすること, 同一サイトのページを大量にブックマークすること


はてなブックマークの自作自演はスパム行為にあたるので注意が必要! | 初心者アフィリエイター専門|正統派SEOアフィリエイトスタイル
http://affiliate-town.info/chapter2/h...

  • アカウントを量産して 「はてブ数」を闇雲に増やす行為はやめておきましょう。 「はてブ数」がついていても、 肝心の新着情報などにはサイトが掲載されなくなります


アクセスアップを目的に、はてなブックマークの自作自演は可能なのか? : 高橋徹のブログで学べる仕事術
http://takahashitooru.blog.jp/archive...

  • はてなブックマークに関しては現状、IPアドレスで管理されているようなので、同一IPアドレスではないアカウントを作成すれば可能

セルクマ整理用のバッチ(悪用を禁ずる)

上記の情報を踏まえたうえで,はてなダイアリー内の全記事のブックマークを自動的に行なうバッチを紹介する。

これは,あくまで自分用の「整理ページ」を作るために,ほそぼそとしたセルクマを行なうためだけに使う事。

前述のような規約違反行為のために利用しては絶対にいけない。

@if(0)==(0) ECHO OFF

rem WSHコードに,第一引数としてカレントフォルダを渡す
cscript.exe //nologo //E:JScript "%~f0" "%~dp0"


echo 終了しました。
@pause

GOTO :EOF
@end





// ---- 設定事項


// ブックマーク対象のダイアリーのはてな情報
var hatena_id = "XXXXX";


// 何ページまでページングするか
var last_paging_num = 10;


// ブックマークを実行するはてなユーザー名
var bkma_id = "YYYYY";


var paging_url_base = "http://d.hatena.ne.jp/" + hatena_id + "/archive?word=&of=";


function log(s){ WScript.Echo(s); }


// IEがビジー状態の間待ちます
function ie_wait_while_busy( ie, _url )
{   
	var timeout_ms      = 45 * 1000;
	var step_ms         = 100;
	var total_waited_ms = 0;
	
	while( ( ie.Busy ) || ( ie.readystate != 4 ) )
	{
		WScript.Sleep( step_ms );
		
		// タイムアウトか?
		total_waited_ms += step_ms;
		if( total_waited_ms >= timeout_ms )
		{
			log(
				"警告:タイムアウトのため,リロードします。("
				+ ie.LocationURL
					// http://blog.livedoor.jp/programlog/archives/298228.html
				+ ")"
			);
			
			// どこかに移動中なら,そこへの移動を再試行
			if( _url )
			{
				log( _url + "への遷移を再試行");
				ie_goto_url( ie, _url );
			}
			else
			{
				log( "リロード中");
				
				// 移動先が明示されていなければリロード
				ie.document.location.reload( true );
				ie_wait_while_busy( ie );
			}
			
			break;
		}
	}

	WScript.Sleep( 1000 )
}


// ページを移動
function ie_goto_url( ie, url ){
	ie.Navigate( url );
	ie_wait_while_busy( ie, url );
}



// IE起動
var ie = WScript.CreateObject("InternetExplorer.Application")
ie.Visible = true;
ie_goto_url( ie, "http://www.google.co.jp/" );



// ---- メイン処理


// 全エントリのURLを取得
var all_entry_urls = getAllEntryUrls();

// 各エントリについて
for( var i = 0; i < all_entry_urls.length; i ++ )
{
	var entry_url = all_entry_urls[ i ];
	log("ブックマーク処理" + (i+1) + ":" + entry_url.href );
	
	// このエントリの代表的なブクマタグを取得
	var bkma_tags = getBkmaTags( entry_url.href );
	
	// このエントリをブックマーク
	bookmarkPage( entry_url, bkma_tags );
}


log("全ページのブックマーク処理が完了");


// IEの制御を破棄
ie.Quit();
ie = null;






function getAllEntryUrls()
{
	var entry_urls = [];

	for( var i = 0; i < last_paging_num; i ++ )
	{
		var paging_url = paging_url_base + ( 50 * i );
		ie_goto_url( ie, paging_url );
		
		log( (i+1) + "ページ目のリンク抽出を開始" );
		
		var lis = ie.document.getElementsByTagName("li");
		for( var j = 0; j < lis.length; j ++ )
		{
			var elem_li = lis[ j ];
			if( elem_li.className == "archive archive-section" )
			{
				// はてなスターのリンクを消去
				var sps = elem_li.getElementsByTagName("span");
				for( var k = sps.length - 1; k >= 0; k -- )
				{
					// DOM要素は後ろから消す必要がある
					elem_li.removeChild( sps[k] );
				}
				
				// 記事リンク
				var as = elem_li.getElementsByTagName("a");
				var entry_obj = {};
				entry_obj.tags = [];
				for( var k = 0; k < as.length; k ++ )
				{
					if( as[k].className != "sectioncategory" )
					{
						entry_obj.href = as[k].href;
						log("抽出したリンク:" + as[k].href );
					}
					else
					{
						// 記事一覧からタグを抽出。ブクマページにタグがまだない可能性があるから。
						entry_obj.tags.push( as[k].innerHTML );
					}
				}
				
				entry_urls.push( entry_obj );
			}
		}
		
		log( (i+1) + "ページ目のリンク抽出が完了。現在" + entry_urls.length + "個" );
	}

	return entry_urls;
}


function getBkmaTags( entry_url )
{
	var bkma_url = entry_url.replace( "http://", "http://b.hatena.ne.jp/entry/" );
	ie_goto_url( ie, bkma_url );
	
	var tags = [];
	
	var divs = ie.document.getElementsByTagName("ul");
	var target_div = null;
	for( var i = 0; i < divs.length; i ++ )
	{
		if( divs[i].className == "entry-page-unit" )
		{
			target_div = divs[i];
		}
	}
	var as = target_div.getElementsByTagName("a");
	for( var i = 0; i < as.length; i ++ )
	{
		if( as[ i ].className == "tag" ) // ulを絞らずにこれだけだとページ下部の同カテゴリエントリにもヒットしてしまうので注意
		{
			tags.push( as[i].innerHTML );
		}
	}
	
	log("タグ:" + tags.join(",") );
	
	return tags;
}


function bookmarkPage( entry_url, bkma_tags )
{
	/*
	ie_goto_url( ie, "http://b.hatena.ne.jp/" + bkma_id + "/add" );
	
	ie.document.getElementById("url").value = entry_url;
	
	ie.document.getElementById("add-form").submit();
	*/
	
	ie_goto_url( ie, "http://b.hatena.ne.jp/" + bkma_id + "/add.confirm?url=" + entry_url.href );
	
	var comment_str = "[" + entry_url.tags.join("][") + "]";
	if( bkma_tags.length > 0 )
	{
		comment_str += "[" + bkma_tags.join("][") + "]";
	}
	ie.document.getElementById("comment").value = comment_str;
	
	ie.document.getElementById("private").click();
	ie_click_and_wait( ie, "submit-button" );
	log("ブックマーク完了");
}


function ie_click_and_wait( ie, dom_id )
{
	ie.document.getElementById( dom_id ).click();
	ie_wait_while_busy( ie );
}