トップ 検索 一覧 ヘルプ RSS ログイン

b2rイメピタ対応(旧)の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
この記事は[[b2rイメピタ対応]]の旧記事です。特段の理由がある方以外は新記事の改造のほうが手軽で有用です。
(2008/07/06分割)この記事は[[b2rイメピタ対応]]の旧記事です。特段の理由がある方以外は新記事の改造のほうが手軽で有用です。

!!!bbs2chreader(b2r)でイメピタ(imepita.jp)対応(旧)

(2008/06/23追記)[User Agent Switcher|https://addons.mozilla.org/ja/firefox/addon/59]などでInternet Explorer 7を選択することでこの方法も有効のようです。

==メリットとしては''「だんだん表示」が可能''です。デメリットとしては、導入が面倒でb2r以外に2つの拡張機能を必要とします。動作の重さに関しては、イメピタに関してはこちらが有利ですが、''イメピタ以外の全てにも毎回チェックがかかる''UAとReferer関連の拡張機能を2つも入れることを考慮すれば、全体としてはb2r改造の方が有利です。==(2008/06/24さらに追記)b2r改造は標準でIE7エミュレートになりましたので、b2r改造が手間の上でも性能の上でも有利となりました。

既にUser Agent SwitcherとRefControlを入れている方はこちらでもいいのかも知れません。また、同等のトリックをローカルプロキシソフトなどで行う方はb2rのスキンの改造だけで導入できます。
[User Agent Switcher|https://addons.mozilla.org/ja/firefox/addon/59]などでInternet Explorer 7を選択することでこの方法も有効のようです。メリット・デメリットがわかる方はこの方法も有用です。

----

いわゆる専ブラはイマイチしっくり来なくてFirefoxのアドオンである[bbs2chreader|http://bbs2ch.sourceforge.jp/](b2r)を使ってるんですが、これは標準状態だと[イメピタ|http://imepita.jp]の画像をポップアップしてくれません。

他の専ブラでは対応しているので、それならばと対応してみました。
*RefControlを改造する
*スキンを改造する
の2段階です。

この意味するところは、
*HTTPリクエストヘッダのRefererを書き換える
*b2rにイメピタのURLを画像と認識させる
*b2rに画像への直接要求をさせる
です。

!!RefControl改造
まずは[RefControl|http://www.stardrifter.org/refcontrol/]というアドオンをFireFoxにインストールします。これはHTTPリクエストヘッダのRefererを変更できるアドオンです。

RefControlはそれなりにがんばってるんですが、設定方法の自由度が足りません。ので、改造します。

Firefoxの拡張機能のフォルダ(extensions)で{455D905A-D37C-4643-A9E2-F6FEFAA0424A}というフォルダを探します。この下のcomponents\refcontrolComp.jsを編集します。プロファイルフォルダのトップからいきなりrefcontrolComp.jsを検索しても早いと思います。
 performVariableInterpolation: function(oChannel, sRef)
 {
     var vars = { '$': '$' };	// $$ is a literal $
     var arr = 
という箇所を探します。RefControlのバージョン0.8.10では18行目にあります。ここに
 performVariableInterpolation: function(oChannel, sRef)
 {
     if(sRef.match(/^script:(.+)/i)){
         return eval(RegExp.$1);
     }
     var vars = { '$': '$' };	// $$ is a literal $
     var arr = 
というように3行書き足し上書き保存します。この改造は、RefControlの設定画面から任意のJavaScriptでRefererを設定できるようにしています。

FireFoxを起動し、RefControlの設定画面を出します。
Add Siteボタンを押し、設定を追加します。
{{ref_image RefControlSetting.png}}
Site:欄にimepita.jpと書き、Action:はCustom:を選択します。
そして右の欄には
 script:oChannel.URI.spec.replace(/image\/(\d{8}\/\d{6})/i, "$1");
と書き、OKを押して戻ります。

!!スキン改造
スキンによって改造箇所・方法は異なるため、ここではbbs2chreaderバージョン0.4.11に付属のデフォルトスキンについて解説します。まずはextensions\{0B9D558E-6983-486b-9AAD-B6CBCD2FC807}\defaults\skinあたりにあるpopup.jsを適当なエディタで開きます。

まずは169行目あたりから
 for(let [index, node] in b2rPopup.xpathEvaluate(xpath)){
     if(!node.href.match(/\.jpg$|png$|gif$/i)) continue;
     node.setAttribute("onmouseover", "b2rPopup.imagePopup.mouseOver(event)");
     node.setAttribute("onmouseout", "b2rPopup.mouseOut(event)");
 }
という箇所があります。
ここに
 for(let [index, node] in b2rPopup.xpathEvaluate(xpath)){
     if(node.href.match(/http:\/\/imepita\.jp\/\d{8}\/\d{6}/i)){
         node.setAttribute("onmouseover", "b2rPopup.imagePopup.mouseOver(event)");
         node.setAttribute("onmouseout", "b2rPopup.mouseOut(event)");
         continue;
     }
     if(!node.href.match(/\.jpg$|png$|gif$/i)) continue;
     node.setAttribute("onmouseover", "b2rPopup.imagePopup.mouseOver(event)");
     node.setAttribute("onmouseout", "b2rPopup.mouseOut(event)");
 }
と5行書き足します。
これで、まずb2rがイメピタのURLを画像へのリンクと認識します。

次に187行目あたり(上記追加前は183行目あたり)から
 var image = document.createElement("img");
 image.style.width = "120px";
 image.style.borderStyle = "none";
 image.src = targetNode.href;
という箇所があります。
ここに
 var image = document.createElement("img");
 image.style.width = "120px";
 image.style.borderStyle = "none";
 if(targetNode.href.match(/(http:\/\/imepita\.jp)(\/\d{8}\/\d{6})/i)){
     image.src = RegExp.$1 + '/image' + RegExp.$2 ;
 }else
 image.src = targetNode.href;
と3行書き足します。
これでb2rが画像への直接要求を行ってくれます。

他のスキンの場合も対処の方針は基本的に一緒です。
改造箇所もb2rPopup.imagePopupの中になると思います。
ちょっとJavaScriptと正規表現がわかる方なら簡単でしょう。

そのうち専ブラ対策されちゃうかもわかりませんがね…。

!!独り言
後日気づいたんですが、ひょっとしてリファラってそこまで厳密じゃなくても良いのかな?だとすればRefControlの改造は不要かも?

まぁいいか、より正確にしてるんだし…。