使い回せそうなパターン、本体/Error.cssのカスタマイズなど(裏技、便利技、知識)

ソース画面の変更 Edit

CSSを書き換える Edit

http://Local.ptron/ViewSrc.css = ./html/ViewSrc.css

横スクロールバーを出さない Edit

http://pc5.2ch.net/test/read.cgi/win/1084124599/870-871

870 :名無し~3.EXE :sage :04/07/23 10:06 ID:LypusYek
HTML Debug Infoでデバグ情報を表示した時に、
CSSを利用して横スクロールバーを出さない方法

いずれもViewSrc.cssのbody{ }内に挿入
・IEの場合
line-break:normal;
word-break:break-all;
word-wrap:break-word;
・Mozilla
white-space:-moz-pre-wrap;
・Opera
white-space:-pre-wrap;


871 :名無し~3.EXE :sage :04/07/23 10:09 ID:LypusYek
失礼、pre{ }内

ホストエラー画面の変更 Edit

CSSを書き換える Edit

http://Local.ptron/Errors.css = ./html/Errors.css

http://pc2.2ch.net/test/read.cgi/win/1054480719/18

18 :名無し~3.EXE :03/06/02 18:09 ID:HK6ulLxC
あのホストエラー画面とやっとおさらば出来る・・・
ついでにgoogleキャッシュとWebarchiveへのリンクをつけるスタイルシート。(IE5.5?〜)
キャプチャ http://www2.wbs.ne.jp/~go-to/prx/Errors.png
Errors.css http://www2.wbs.ne.jp/~go-to/prx/Errors.txt

ttp://web.archive.org/web/20031127230252/www2.wbs.ne.jp/~go-to/prx/Errors.png
http://web.archive.org/web/20031127230252/www2.wbs.ne.jp/~go-to/prx/Errors.txt

本体を書き換える Edit

http://pc2.2ch.net/test/read.cgi/win/1047857088/220

220 :196 :sage :03/04/03 09:31 ID:wBezrTX+
>>196

バイナリエディタ(Stirling等)で直接行う方法として、
00030F3B -> 00030F74 番地を以下に書き換える。

<body text=#00ff00 bgcolor=#330044 background="Gradient.gif">
↓
<frameset rows="*"><frame src="hostingerror.html"></frameset>

(htmlフォルダ内にhostingerror.htmlを作成)

接続切断画面の変更 Edit

./html/killed.html (画像以外) Edit

Google、archive.org、ウェブ魚拓キャッシュへのリンクを表示 Edit

<script type="text/javascript">
document.write('<a target="_blank" href="http://web.archive.org/*/' +location+ '">internet archive</a> - '
+ '<a target="_blank" href="http://www.google.co.jp/search?q=cache:' +encodeURIComponent((''+location).match(/^[^#]+/))+location.hash+ '">Google cache</a> - '
+ '<a target="_blank" href="http://megalodon.jp/?url=' +encodeURIComponent((''+location).match(/^[^#]+/))+location.hash+ '">&#x30a6;&#x30a7;&#x30d6;&#x9b5a;&#x62d3;</a>')
</script>

./html/killed.gif (画像) Edit

タスクトレイアイコン右クリックでのウザイ現象を直す Edit

※4.5June+7は既に適用されている

http://pc8.2ch.net/test/read.cgi/win/1145863257/903,938

903 :名無し~3.EXE :sage :2006/12/11(月) 10:55:51 ID:xwLq9Wus
proxomitronのタスクトレイアイコン上で右クリックしてコンテキストメニューを出す際、エクスプローラのタスクバーのメニューも一緒に出るよな?

必ずそうなるわけじゃなくて、いくつか条件があるんだけどな
(1)タスクトレイにフォーカスが無い
(2)右クリックを押してから離すまでの時間を素早くやる

これは右クリックを*押した*時にメニューが出るプログラムだと、右クリックを*離した*時にエクスプローラのメニューが出る為らしい
ttp://forums.belution.com/ja/vc/000/320/07s.shtml

WM_RBUTTONDOWN 0x0204
WM_RBUTTONUP    0x0205

つうことで、右クリックを*離した*時にメニューが出るようにパッチ当てようとしたんだが、バイナリエディタで検索かけてもそれらしき場所が見つかんねぇ
誰か、解析してパッチを当てる場所を教えれ


938 :名無し~3.EXE :sage :2006/12/25(月) 11:46:18 ID:PMteNb4u
需要あるか分からんけどせっかくだから書いとくか

通知領域のアイコンの右クリックメニューを、マウス右ボタンを押したときじゃなくて
離したときに表示させてみるテスト for 4.5June系

00013397: 03 04

local.ptron で参照できるローカルのファイルを更新しても、ブラウザのキャッシュを見てしまうバグ対策 Edit

If-Modified-Sinceを見てない?(未検証)ため発生するバグ
(他にも、Last-Modified: が GMTから9時間引いた時間 = JSTから18時間引いた時間になっているというバグがある ※GMT=JSTから9時間引いた時間)

対策

  1. バイパスリストの local.ptron/ をコメントアウトする
  2. 以下のフィルタをぶち込む
    [HTTP headers]
    In = TRUE
    Out = TRUE
    Key = "Pragma: local.ptron bug fix  no-cache (both)"
    URL = "local.ptron/$FILTER(false)"
    Replace = "no-cache"

JSでProxomitronを検出する Edit

http://shinshu.fm/MHz/14.30/archives/0000167355.html

http://local.ptron/killed.gif が読み込めればオミトロンが起動していると見なす と言うもの。
これを利用してアクセスを拒否してくるサイトが出てくるかも知れない。(関連:スラッシュドット ジャパン | Firefoxユーザをブロックするキャンペーン

対策 案1
バイパスリストの
local.ptron/
の前の行に
local.ptron/killed.gif $JUMP(http://local.ptron/a.gif)
を追記する。
killed.gif は RDIR でしか見ない筈なのでOK
対策 案2
バイナリエディタで本体の local.ptron を全て適当な物に書き換え、全フィルタ、全リスト、オミトロンがあるフォルダ/html/以下の全ファイルの local.ptron も同じ物に書き換える。

案1の方が簡単だが、案2の方が確実

変更前の元々のヘッダを保存、参照する Edit

ProxomitronはHTTP-Headerの処理順が決まっていないので*1、以下の様な事が起こる。

パターンA) 元々の Referer: は A → Referer: が A なので グローバル変数を設定とか、何か処理 → Referer: を B に書き換え
パターンB) 元々の Referer: は A → Referer: を B に書き換え → Referer: が B なので 何もしない

どっちでも元々のRefererは同じなので、同じ動作をしないとまずい。

案1 元々のヘッダを4.5以降のグローバル変数に保存しておく Edit

Refererの場合、Referer: フィルタ全ての、マッチ部分の頭に、

($TST(default_referer=?)|($OHDR(referer: \0)&$SET(default_referer=\0)))

を置く。 ※この部分は必ずマッチする

後は、元々のRefererを参照したい場合は、$OHDR(referer:) や、Referer: ヘッダフィルタではなく、$TST(default_referer=...) か、$GET(default_referer) を使えば良い。

案2 Edit

補助Proxyで何とか出来ないか。
新しく、「何とかかんとか-Referer: 元々のReferer」ヘッダを出力(Proxomitronに渡す)して、サーバーに送る時は削除すればいけそう。
何とかかんとかの部分は被らない様に考えないといけないが。

Proxomitronに送信する前にローカル何かファイルを作り、Proxomitronがそれを参照して…でも行ける様な気がする。

Referer: はoutのみなので、
  ブラウザ → 補助串 → オミトロン → ネット
  ブラウザ ← 補助串 ← オミトロン ← ネット
になる。

理解出来ない Content-Encoding: (in) で強制バイパスになるのを回避する Edit

[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Encoding: Kill incorrect Encoding (In) [2007/08/08] test1a"
Match = "(^*(gzip|deflate))"

検証:http://abc.s65.xrea.com/tools/filtertest/nph-test.cgi

Webページフィルタでは参照できないContent-Encoding(in)ヘッダをWebページフィルタで参照する方法 Edit

  1. 以下のフィルタをぶち込む
    [HTTP headers]
    In = TRUE
    Out = FALSE
    Key = "Content-Encoding: backup (in)"
    Match = "?&\0"
    Replace = "\0$SET(Content_Encoding=\0)"
  2. $IHDR(content-encoding:〜)

    $TST(content_encoding=〜)
    に書き換える

Replaceに4096Byte以上いれる方法 Edit

Match の方で $SET(0=出力)$SET(1=したい) のようにして、Replace を \0\1コメント のようにすればおk
他に $FILE を使う方法もある

文字コードとか Edit

http://euc.jp/i18n/charcode.ja.html

ASCII       0x00-7F
Shift_JIS   0x81-9F + 0x40-FC    0xA0-DF(半角カナ)    0xE0-EF + 0x40-FC
EUC-JP      
JIS         

コード一覧表 Edit

ASCII http://www.psl.ne.jp/perl/pdojo00b.html
Shift_JIS http://who.sakura.ne.jp/doc/shift_jis.html
EUC-JP http://who.sakura.ne.jp/doc/euc_jp.html
Unicode http://code.cside.com/3rdpage/jp/utf-8/

Shift_JIS/EUC-JP/JIS/UTF-8 どの文字コードのページでもProxomitronなどでマルチバイト文字を挿入する Edit

文字列 → 数値文字参照 ※IEの場合こっち推奨
を使用すれば一応可能(HTMLとして表示した場合限定)

POSTデータを書き換える Edit

Apache(自鯖*2) & モジュール版PHP & Proxomitron & POSTデータを書き換えるPHPスクリプト でPOSTデータを書き換える Edit

  1. Proxomitron で $RDIR(POSTデータを書き換えるPHPスクリプト)
    1. 更に「x-honurl: 本来のURL」の様な特別なヘッダにURLをセットして送信
  2. POSTデータを書き換えるPHPスクリプト が fsock で x-honurl: のURLを取得
    1. リクエストヘッダは "$_SERVER{'REQUEST_METHOD'} $_SERVER{'REQUEST_URI'} $_SERVER{'SERVER_PROTOCOL'}" と apache_request_headers() で取得可能
    2. 送信するPOSTの生データは $stdin = fopen('php://input', 'r'); で取得可能
    3. 後は好きなように書き換えて、fsock で送信、返って来たデータを header() と echo で出力して Proxomitron に渡すだけ

但し、$RDIRを使っているので、レスポンスヘッダを見て更に$RDIRを使うことはできない

コメントを挿入する Edit

Perlの正規表現で言う「(?#comment)」のような物は無いが、
検索表現に「((^(^?))|(^?)|comment)」としてコメントを書く事は可能。
※「(^(^?))」の部分が、後ろに何か文字がある場合に消費せずにマッチし、「(^?)」の部分が、後ろに何の文字もない場合に消費せずにマッチするので、「comment」の部分は絶対検索されない

また、少々鬱陶しいが、 $LOG(comment) としてコメントを書く事も可能
<start>または<end>が有効である場合は、そのフィルタにおけるBoundsは無視されるので、Boundsにコメントを書くことも可能 な筈

使い回せそうなパターン Edit

GoogleCache の URL Edit

URL Match の頭に置くと、GoogleCache でもマッチするようになる

##↓リスト形式
# GoogleCache
(
  ([^/]++.|)google.co(m|.jp)
  |
  [0-9]+.[0-9]+.[0-9]+.[0-9]+
 )/search\?(q|[^#]++\&q)=cache(:|%3A)
  ((^http)[^:]+:|)
  (http(s|)(:|%3A)(/|%2F)+|)

title.txt Edit

NTFSで利用できない文字
?  "  /  \  <  >  *  |  :

FAT16, VFAT, FAT32 で利用できない文字
. " / \ [ ] : ; | = ,
<a href="hogehoge.php?id=aaa">ペポ|+ %bbb</a>
  何てのを
<a href="http://proxo/ペポ&#xFF5C;+ %25bbb.txt?hogehoge.php?id=aaa">ペポ|+ %bbb</a>
  というリンクに書き換えるフィルタ
  (Windowsで保存すると、「ペポ|+ %bbb.txt」になる)


[Patterns]
Name = "title.txt  for Shift_JIS"
Match = "<a href=$AV(\0)>(^(^\1</a>))"
        "("
        "(([^#%\\/:*?"<> |%81-%9F%E0-%EF]+([%81-%9F%E0-%EF][%40-%FC]|))+)\#"
        ""
        "(\s$SET(#= )"
        "|\"$SET(#=&#x201D;)"
        "|#$SET(#=%23)"
        "|%$SET(#=%25)"
        "|\*$SET(#=&#xFF0A;)"
        "|/$SET(#=&#xFF0F;)"
        "|:$SET(#=&#xFF1A;)"
        "|(^</a>)<$SET(#=&#xFF1C;)"
        "|>$SET(#=&#xFF1E;)"
        "|\?$SET(#=&#xFF1F;)"
        ""
        "|\\$SET(#=&#xFFE5;)"
        "|\|$SET(#=&#xFF5C;)"
        "|)"
        ""
        ")+</a>"
Replace = "<a href="http://proxo/\@.txt?\0">\1</a>"


[Patterns]
Name = "title.txt  for EUC-JP, UTF-8"
Match = "<a href=$AV(\0)>(^(^\1</a>))"
        "("
        "([^#%\\/:*?"<> |]+)\#"
        ""
        "(#$SET(#=%23)"
        "|%$SET(#=%25)"
        "|\\$SET(#=&#xFFE5;)"
        "|/$SET(#=&#xFF0F;)"
        "|:$SET(#=&#xFF1A;)"
        "|\*$SET(#=&#xFF0A;)"
        "|\?$SET(#=&#xFF1F;)"
        "|\"$SET(#=&#x201D;)"
        "|(^</a>)<$SET(#=&#xFF1C;)"
        "|>$SET(#=&#xFF1E;)"
        "|\|$SET(#=&#xFF5C;)"
        "|\s$SET(#= )"
        "|)"
        ""
        ")+</a>"
Replace = "<a href="http://proxo/\@.txt?\0">\1</a>"

上のフィルタのリスト版

HTMLタグの属性値を囲む文字は "'` (0x22 0x27 0x60) のどれか Edit

※` はInternetExplorerのみ
Shift_JISの文字が 0x81〜9F + 0x40〜FC   0xA0〜DF(半角カナ)   0xE0〜EF + 0x40〜FC なので、
` (0x60)が、Shift_JISの2Byte目に含まれる可能性がある。
 例:? (0x8760) 他にも、Aチ汁柿港形 など
これはちょっとした問題を起こす。

例えば、IMGタグからALT属性値を抜き出す場合、
 Match = "<img [^>]++alt=(\"\1\"|'\1'|`\1`)*>"
の様にすると思われるが、  ※$AV, $AVQは ` に対応していない上にエスケープされている場合閉じ文字として処理されない=スクリプト用
 <img alt=`イ? と書いてある看板` src="hogehoge">
を処理した場合、
 \1 = イ?
となってしまう。
理由は勿論?の2Byte目を閉じる文字として処理した為。

この様な誤爆を回避する場合、
 Match = "<img [^>]++alt=(\"\1\"|'\1'|`(([%81-%9F%E0-%EF]`|[^`])+)\1`)*>"
の様にすると良い。

*1 同じ順になることもあるが、フィルタをリロードしたり、追加・削除したりすると変わる様子
*2 IPが同じになるように

添付ファイル: fileErrors.css 9件 [詳細]

  複製 名前変更
QRコード(トップページのアドレス)