の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
倉金家ホームページ
趣味の部屋/ホームページ余話
このサイトではアクセスログを一部(内容を限定して)公開しています。ただあやしい情報収集ロボットには見られないようにリンクの書き方を変えたり、Cookieのないアクセスには Guest Loginを要求してむやみにアクセスされないようにしていました。 ところがうっかり<a>タグで普通にリンクを書いてしまったところ、えらいことに ... |
|
|
このサイトでは話の都合上、 サイトのアクセスログを公開しています。 ただへんな情報収集ロボットにはわからないようにリンクの書き方を工夫したりしていました。 アクセスログへのリンクは上の例だと以下のように記述します。 <span class="link" onClick='window.open("accesslog.html", "NewWindow");'>サイトのアクセスログ</span>
すなわちjavascriptを介して開くので、javascriptを解しないロボットにはアクセスできません。 さらにとどめにCookieをもってこない、あるいはRefererが確認できないなどの場合には Guest Loginを要求してやります。このログインダイアログには「ユーザ名:パスワードは GUEST:GUEST だよー」と表示しますので、ちゃんと人間がアクセスしたならログインできるはずです。 ところがうっかり、このひとつ前の記事でこのアクセスログへのリンクを普通の<a>タグを使って書いてしまったのです。(実は以前に<a>タグは使わないようにしたような覚えはあったのですが、しばらく特に問題もなかったので今回は軽く考えてしまったのでした。)
|
それから幾日かしてして今日の朝、アクセスログを見てびっくり。昨夜から今朝にかけてアクセスログがアクセスログへのアクセスで埋めつくされているではありませんか。
|
その少し前にアクセスログは特に許可した検索ロボット以外、Cookieが有効でないとGuest Loginを要求するようにしてありました。今回のこれらのアクセスはすべてこのサイトの閲覧CookieをもってこないためGuest Loginを要求され結局読めてはいませんが、このままではログが穢れるとあってとりあえずGuest Loginをログ記録の前に移動して対処(すなわちログインを通過しないとログに記録されない)。そしてリンクを修正し一段落。 その後もすごい勢いで来てはいるがそのうち止むだろう。あまりしつこいようだとfail2banを使ってすべて拒否すればいいし。(→数日見てたらけっこうしつこいので結局fail2banで拒否しちゃいました。) 今まで通常の記事へのリンクを書いてもこんなアクセスをされることはなかったし、なんでアクセスログだとこんなに必死に見にくるのか不思議。" accesslog"という言葉に反応しているのだろうか。確かにアクセスログにはいろんな情報が詰まっているからね。 それに、いろんなところからこれほど集中的にしかも同じようなアクセスをされるのは偶然とは思えない。どこかでコントロールされているようにも思える。たしかにその少し前にいくつかのあやしげな情報収集ロボットと思われるものが記事を読んではいるが悪の親玉の断定はできない。 ...で、 今回の反省点。 情報収集ロボットにアクセスされたくない記事のリンクはせめて、 <span class="link" onClick='window.open("accesslog.html", "NewWindow");'>アクセスログ</span>
というふうにjavascriptを使ってアクセスするように書こう! ちなみに class "link" のcssは、 .link { color:#440066; text-decoration:underline; cursor:pointer; } .link:hover, .link:focus { color:#FF3366; }
|
|
なおこのページには<a>タグでのアクセスログへのリンク例を書いたじゃないかと心配される方もいるかもしれませんが、その部分はCookieが有効でないと表示されないようにしました。(あやしいアクセスに見られたくない部分はCookieを確認して表示するようにしています。携帯での初回アクセスでは表示されていない場合がありますのでリロードしてみてください。)
|
アクセスログにアクセスしてくるルートがわかった (2013年8月3日 追記)
アクセスログへのリンクを上記のように書き換えてもその後ずっとアクセスログへのアクセスは続いており、実はこのアクセスだけを別ログに記録して見ていました。アクセス元IPはばらばらですが、やはり同様にいくつかの同じようなRefererやAgentを使っており、どこかで制御されているように見えます。 また来るときにはまとめて大量にきたり、あるいはしばらく何もないように止んだりするアクセスの様子からもこのことが伺われます。
で、調べた結果ついにその謎が判明し、このアクセスはぴたりと止めることができました。 その謎を知りたい方は下の「表示」ボタンをクリックしてご覧ください。 なおその前にどういう可能性があるか推理してみるのもおもしろいかと...。
|
|
|
|