はりをきば

そこにピカマンがいる限り 私はテイッハットウッをやめない

オタクショップのR18確認ページをスキップする

¯注意
この記事はを最後に更新されていない。
更新日が1年以上前の記事はリンク切れしていたり、情報としては役に立たなくなっている可能性あり。
ˆMixed Contentについて
この記事は投稿日が古い為、記事中の画像は非SSL(http://)で貼られている。(※投稿画像以外は全てSSL)
この件に関して詳しくはこちらを参照。

数ヶ月ぶりの、それも2019新年の挨拶すっぽかしといて今更なんちゅー記事書いとんねんって思うかもしんないけど
そ れ は そ れ、こ れ は こ れ。




通販サイトでよく遭遇する「18以上ですか~」的なページ。
初回表示はまぁいいのだが、あろうことか毎回のように表示するサイトが存外に多くストレスフルなので
今回は可能な限りその手のページをスキップできないか色々試してみた。

カーテンページが表示される仕組み

まずカーテンが現れる条件だが、言わずもがなCookieで判別している。
ユーザーがR18商品ページにアクセスした際、指定されたCookieを持っていればそのままアクセス許可、持っていなければカーテンへのリダイレクトorカーテンHTMLを出力するというもの。
そしてユーザーが「はい/18以上です/同意する」とかのボタンを押すとCookieが作られる。


ブラウザにCookieが書き込まれる、という点は共通だが
その書き込まれるCookieはサイトによって挙動が異なり、「静的」と「動的」の2つに分類される。
具体的には

  • ブラウザー側のセッションで管理(value固定)
  • サーバー側のセッションで管理(value変動)

つまりブラウザを開き直す度にカーテンが立ち塞がる原因は
ブラウザ側のセッション切れによるCookie破棄」と「サーバー側のセッション切れによるCookie無効」の2種類がある。


この2つの違いは大きい。
前者のパターンはユーザー側で対処可能だが、後者はサーバー側が主導権を握っている為どう足掻いても対処不可だから。


つーわけで、今回はstaticなCookieでカーテンを開閉している前者型サイトのみに焦点を絞って何とかしていく。

基本はCookieの期限を延長すればOK

静的Cookieを使ったサイトで毎回カーテンが出るのは、カーテンページの「Yes」ボタンで生成されるその静的Cookieに有効期限が設定されていない、もしくは極端に短い期限が設定されているから。
有効期限を指定せずにCookieを書き込んだ場合、そのname/valueはデフォルトでブラウザを閉じるまで有効な使い捨てのものとして扱われる。


なので、そのCookieに半永久的な有効期限を明示的に指定してやればブラウザを閉じてもカーテンCookieは残り続け、次回以降もカーテン無しでR18ページにアクセスできる。

期限延長ブックマークレット

今回のこれ用に、雛形となる即席BMLを作った。

Cookie Expires Extender (はりをきば)

BMLの使い方

使い方は至って簡単、対象サイトを開き、カーテンを開いた状態で以下に公開している各サイトのCookie Name(+必要に応じてDomain Name)を入力するだけ。
指定されたそのCookieの有効期限を『 2099/12/31 23:59:59 』に延長(再設定)する。
特に注記が無い場合、ドメインはデフォ値のままでよい。


あと言うまでもないが、サイト側が想定していないCookie操作をするので不都合が起きても自己責任で。



通販サイトのカーテンCookieリスト(随時更新)

個人的に利用するサイトを名前順に一通り書き出してみる。個人的なものなので全部は載せてないしつーか載せきれない。
それと、ここに載せているのは二次元コンテンツのサイトのみ。
…が、AV等の三次サイトもカーテンの原理は同じなので自分でカーテンCookieを探せば同BMLで対処可能なはず。

エビテン (ebten.jp)

エビテン[ebten] | エンターブレインのオンラインショッピング

  • Cookie Name: age_18

特筆すべきところは特に何も無い。

げっちゅ屋 (getchu.com)

Getchu.com 美少女ゲーム・アニメの情報&通販サイト

  • Cookie Name: getchu_adalt_flag

…お分かり頂けただろうか。
getchu_adalt_flagである。
断じてadultではない。


………それはともかく、このサイトのカーテンはちと厄介。
というのも、Cookie自体は静的だがそれを書き込むのが動的な為、BMLでは対処できない


具体的には、カーテンページのYesでCookieを生成するところまでは他と変わらないが
このサイトが他と違うのは、カーテンCookieを持った状態でwww.getchu.com/*を踏むと、踏む度に期限付きカーテンCookieを書き込んでくるところ。
他サイトではYesボタン以外でCookieが書き込まれる事はない為、サイト側でそのCookieを書き込んだ後に先のBMLを使えば
以降は明示的に削除しない限りカーテンCookieは2099年まで有効なままになる。


しかしwww.getchu.comは他と異なり、カーテンCookieを持った状態でサイトの任意のページにアクセスすると
アクセスする度にSet-CookieHTTPヘッダでカーテンCookieの期限を上書き(最終アクセスから1週間先)してくる為、BMLを使って期限を延長しても
その後サイト内を移動するとBMLによる期限延長がキャンセルされる。
その為、1週間以上げっちゅにアクセスしないと再度カーテンと対峙する羽目に…。


これを解決するには、サイト側による期限上書きを更に上書きすればいい。

// ==UserScript==
// @name  げっちゅ屋 カーテンCookie期限延長
// @match http://www.getchu.com/*
// ==/UserScript==

	document.cookie = `getchu_adalt_flag=getchu.com;expires=${new Date(2099, 12).toUTCString()};path=/`;

このユーザースクリプトを入れると、アクセスする度にカーテンCookieの期限を2099年に強制上書きする。
ゴリ押しな上にTampermonkeyが必要だが、これでカーテンを見ることは無くなる。


ちなみに、げっちゅはgcというパラメータを付ける(e.g.&gc=gc)*1と、Cookieが無くても強制的にカーテンをスキップできる。
エロゲHP製作者は覚えておいてもいいかもしれない。

駿河屋 (suruga-ya.jp)

ゲーム・古本・DVD・CD・トレカ・フィギュア 通販ショップの駿河屋

  • Cookie Name: adult

特筆すべきところは以下略。
強いて挙げるなら/check_adultにproduct idを投げるとカーテンをスキップできる。
(e.g.www.suruga-ya.jp/check_adult?product=0123456789
エロゲHP製作者は覚えておいても以下略

ソフマップ (a.sofmap.com)

祖父は以前aac*2というCookieでカーテンを設置していたが、現在は撤去されており普通にアクセス可能。

とらのあな (*.toranoana.jp)

これ今回この記事を書くに至った元凶とも言えるサイト。
いちいちカーテン閉められて鬱陶しいったらない。

同人誌・同人アイテム通販のとらのあな成年向け通信販売
同人誌・同人アイテム通販のとらのあなJOSHIBU成年向け通信販売

  • Cookie Name: adflg


店舗在庫検索 β

  • Cookie Name: afg
  • Domain Name: toranoana.jp

以前はafgというCookieで統一だったが去年6月のリニューアルで上記仕様に変わった。
リニューアル後の現行サイトではR18商品を除外フィルタするec.toranoana.shop、R18を含む全商品を表示するec.toranoana.jpとドメインでゾーニングされ、カーテンが出てくるのは後者のみになった。
以前は全年齢商品であってもカーテンが出てきたので、そこは評価できるのだが相変わらず毎回出てくる。


このサイトのみ、BMLでドメインを明示する必要がある。
前者のec.toranoana.jpはデフォのままでよいが、後者はサブドメイン(www.)を削って親ドメイン(toranoana.jp)を指定しなければならない。
というのも、在庫検索ページのR18商品ページではimg.toranoana.jp/popup_img18/*から画像を読み込んでいるのだが、
このうち/popup_img18/配下へのアクセスにはカーテンCookie(afg)を要する為
カーテンCookieの延長時にサブドメイン(www.)を含めてしまうと、画像置き場であるimg.toranoana.jpはスコープから外れ参照エラーとなってしまう。
(afg無しに/popup_img18/*へアクセスすると“18歳未満閲覧不可”と書かれたダミーGIFが返ってくる)


尚、前者のec.toranoana.jpについてだが、先述した通りカーテンはドメインで管理されている。
つまり「通販(男性向け)」「通販(女性向け)」「電子書籍(男性向け)」「電子書籍(女性向け)」のCookieは共通であり、どこか一箇所で延長BMLを使えば
後は男女物販電子版関係無くカーテンは出てこなくなる。

ネイティブ (native-store.net)

18禁フィギュアの制作・販売サイトであるネイティブ。ネコぱらで使った人もいるのではないだろうか?
このサイトは残念ながらサーバーサイドでカーテンを制御している為、ユーザー側のCookie操作ではどうにもならない。


ただ、overRateCheckingというクエリを投げるとげっちゅ屋のようにカーテンを強制オープンできる。
(e.g.?overRateChecking=overRateChecking*3
企画メーカーHP製作者は覚え(略)

メロンブックス/フロマージュ (melonbooks.co.jp)

このサイトはサーバーサイド管理なので対処不可。
但しCookieの期限が最終アクセスから1ヶ月後に設定されているので、少なくとも月1でメロブを開いている人はカーテンに遭遇する事はまず無い。

ラッセル (ec-russell.jp/*/)
  • Cookie Name: rd

fengやHARUKAZE、ま~まれぇど、ぱれっと、ゆずソフト等々
いわゆるエロゲメーカーの販売代行システム、公式通販サイトとしてよく目にするラッセル。
カーテンCookie(rd)の値はYesを押す度に毎回異なる数列が生成されるが*4、実際に値は見てないらしく、エントリ(rd)さえあればカーテンは出てこない。


このサイトはサブディレクトリ形式で各メーカーの通販ページを区分けしている。
(e.g.ec-russell.jp/palette/ec-russell.jp/yuz/...etc)
虎の項でも書いたが、Cookieはドメインごとに記録されている為
一度どこかのブランドの通販で期限延長BMLを使えば、以後ラッセルを使うエロゲ通販ではカーテンが出てこなくなる。



Amazon.co.jp/アニメイト/ゲーマーズ/カドカワストア/まんが王/アミューズクラフト通販 ...etc

これらのサイトはサーバーサイドカーテンの為、残念ながら打つ手なし。
まぁ個人的にメイトゲマでR18買う機会はまず無いし、カドカワストアにあるR18商品は原則として同じ角川運営のエビテンにもあるからそっち使えば済むとして、Amazonのカーテンが対処不可なのは地味に応える。



通販サイト製作者に一言

い ち い ち カ ー テ ン 閉 め る な 💢
何でクレカ登録されたアカウントでログインしてるのに年齢確認ページ出すの?馬鹿なの??(二言目)

*1:値は何でもよい

*2:Adult Age Checkの略。Advanced Audio Codingではない

*3:やはり値は何でもよい

*4:Unix TimeともセッションIDとも異なるし… 何だろ?