Proxomitron Part20

このエントリーをはてなブックマークに追加
926名無し~3.EXE:04/02/18 01:05 ID:o44np1EM
>>922
> 「広告を削除」が本来広告が表示されるスペースに広告の画像を表示せず、
> 白地表示だけにする、という意味であれば出来るんじゃないかな。
白地表示にするは現在やっている。

> 広告が表示されるスペース自体を削除しつつ、デザインを崩さない(=広告スペースを削除しない)
> ということであれば、矛盾してるから出来ない。
やっぱそうだよねぇ。広告しかない行をズサーと消して上にあげてくれればいいんだが。
単純に消すと左にコンテンツ、右に広告とかでデザイン崩れたりするし。

>>924
> 特定のページだけを思い通りのレイアウトに
> することは可能。 どのページでもそうしたいのなら不可能。
特定のページじゃなくていろんなページにです。

> それをやるには画像の大きさ
> とかを取得しなきゃいけないわけだけど、ソースにその大きさを書いてないページも多いからね。
それは出来そうな気がする。JavaScriptやbehaviorを使って。処理は読み込んだ後になるけど。
927名無し~3.EXE:04/02/18 01:07 ID:o44np1EM
ところでヘッダフィルタのフィルタ適用の順番って
フィルタ名順?

でもフィルタ名の最初の方ってフィルタの種類で決まる
好きにフィルタの順番かえられないよね。
928名無し~3.EXE:04/02/18 01:10 ID:GExOmbuV
>>919
<img src="ad.gif">

<img src="ad.gif" style="visibility:hidden">

こういうフィルタを作ればいいのでは。
画像(やその他リンク要素など)の本来のスペースは保持される。

この方法だと画像を読みに行くことにはなるが、
ブロードバンド環境だと気になら無いんじゃないかな。
929名無し~3.EXE:04/02/18 01:14 ID:PsfolLTt
>>927
ttp://www.pluto.dti.ne.jp/~tengu/proxomitron/docs/ChangesJ.txt
のNaoko 4.5 (beta 2003/04/18) の更新点のところに書いてある。
930名無し~3.EXE:04/02/18 12:21 ID:p24bCZoG
>>929 これのおかげで↓のフィルタでリファーが完全に消せないことがあるんだよね、どうにか出来ないかな・・
<<リファー加工フィルタ>>
[HTTP headers]
In = FALSE
Out = TRUE
Key = "Referer: Control Referer (Out)"
Match = "\9$LST(RefererControl)"
Replace = "\0"

[HTTP headers]
In = FALSE
Out = TRUE
Key = "Referer: Control Referer After(Out)"
Match = "(^?)"

RefererControl (記述例
------------
$URL(http://aaa.com/)$SET(0=\9)
#aaa.comにアクセスするときはリファーを加工せずそのまま送る
$URL(http://bbb.com/)$SET(0=http://uso.com/)
#bbb.comにアクセスするときは http://uso.com/ を送る
$URL(http://ccc.com/)$SET(0=\u)
#ccc.comにアクセスするするときはアクセス先のURLをリファーとして送る
$TST(\9=http://ero.com/*)$SET(0=http://uso.com/)
#本来のRefererが ero.com/ だった場合は http://uso.com/ を送る
$TST(\9=(http://ddd.com/)\1*)$SET(0=\1)
#本来のRefererが ddd.com/ だった場合は本来のリファーのドメイン部のみ送る
  :(中略)
$URL(*)$SET(0=) →上記にマッチしないものはここでリファーが削除される
         ただしそのままでは「 Referer: 」という空ヘッダが残るので
         Referer: Control Referer After(Out)で完全に消す。
931名無し~3.EXE:04/02/18 14:40 ID:XWWbygfg
オミトロンを2つ通せばいい。
932名無し~3.EXE:04/02/18 16:04 ID:7Ffmh/Gq
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/< 先生! 「リファー」って何ですか?
 _ / /   /   \ _____________________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
933名無し~3.EXE:04/02/18 20:03 ID:8VT4iPvL
>>930
$URL(*)$SET(0=) を消して、
2番目のフィルタをこうするとか?
Match = "\9(^$LST(RefererControl))"
934930:04/02/18 21:31 ID:ExwK1+3O
>>933
サンクス! それで残ることは無くなりました。 ありがと!!
935名無し~3.EXE:04/02/19 04:19 ID:RtGchthM
ファイルの拡張子じゃなくて中身を見てMIMEを
変更するフィルタってどうかけばいいの?
拡張子が無くてtext/htmlでjsファイルを返してくる
サイトで誤爆して困っている。
936名無し~3.EXE:04/02/19 04:59 ID:lkgiGKbD
>>935
ヘッダをいじるのはファイルを読み込む前にやる必要があるから無理な気がする。

htmlのフィルタでスクリプトのURLを探してリストにぶっこんで、
そのURLだけMIMEを変更するてのはどうよ?
(まあ特定のサイトだけなら自分でリスト作ればいいだけの話だが…。)
937名無し~3.EXE:04/02/19 05:02 ID:lkgiGKbD
ところで、 (<*>&&*(abc|def)\1*) * </$TST(\1)> が
<abc>-</abc> にマッチしないんだけど なんで?
938名無し~3.EXE:04/02/19 12:13 ID:bp/l3Yp8
>>937
変な挙動だな。

&&の左右を入れ替えたがダメ。
(*(abc|def)\1*&&<*>) * </$TST(\1)>

&&の左辺で終端を確定するとマッチする。
(*(abc|def)\1*>&&<*>) * </$TST(\1)>

でも、&&の左右を元に戻すとマッチしない。
(<*>&&*(abc|def)\1*>) * </$TST(\1)>

そもそもこれ↓でマッチしない。(納得いかん)
(<abc>&&<(abc)\1>)-</$TST(\1)>

&&左辺で\1を使うとOK
(<(abc)\1>&&<abc>)-</$TST(\1)>

939名無し~3.EXE:04/02/19 14:09 ID:AA4b8nlK
212 名前: 名無し~3.EXE 投稿日: 02/01/21 22:09

相対パスを絶対パスに変換するフィルタを
作れる方がいらっしゃったら、作って頂けないでしょうか。
よろしくお願いします。



213 名前: 名無し~3.EXE 投稿日: 02/01/21 22:16

>>212
ttp://proxomitron.netfirms.com/Filter.html#RPC
ここにある。

…サーバーがなくなっている。ショボーン。
940937:04/02/19 16:10 ID:lkgiGKbD
$LOGコマンドを使っていろいろ試してみたところ、
評価の順序が単純に左から右ではないのが原因らしい。
( A && B ) C の場合、A→C→B の順で評価される。
したがって (<*>&&*$TST(\1)*) * </(abc|def)\1> ならマッチする。

ちなみに ( A & B ) C なら A→C→B→C の順。
(A&B&C)D(E&F&G)H なら ADEHFHGH BDEHFHGH CDEHFHGH
なんかすごく効率悪く見えるんですが…。

>>939
閉店したようですね。
http://wind.prohosting.com/proxmine/contents/
941名無し~3.EXE:04/02/19 16:11 ID:QxhvdOXq
>>938
つまり&&の右辺で代入した場合は$SET(\1=abc)と同様に$TST(\1)が使えないってことかな?

>>939
>>131-132を書き換えるだけで出来そう。
([^/]+/)+{4} とか使えばもっとすっきりしそう。
グローバル変数と$TSTを使えば1つのフィルタで出来そう。
しかしいざやるとなるとかなり苦労しそう。('A`)
942名無し~3.EXE:04/02/19 16:12 ID:7w5ZxIEp
943名無し~3.EXE:04/02/19 16:32 ID:QxhvdOXq
>>940
(=゚ω゚)ノへーへーへー
944937:04/02/19 22:49 ID:lkgiGKbD
あ、 ( A )+{1} B みたいにすれば、A が完全に評価されてから
Bが評価されるようだ。(ちなみにBがマッチしなくてもAは再評価されない。)
ようするに (<*>&&*(abc|def)\1*)+{1} * </$TST(\1)> とすればよかったんだな。
やっと解決…。
945名無し~3.EXE:04/02/20 07:10 ID:gLKg5G5L
ProxomitronについているWindowOpen.jsなんだけど、コードを
読み間違っていなければwindow.openの関数を変更してPrxOpenにしている。
(本来のwindow.openはPrxRealOpenに変更)

一定時間たった後はPrxRealOpenで通常どおり新しいウインドウを開いて
通常どおり新しく開いたウインドウオブジェクトを返しているけど、

一定時間未満、つまり新しいウインドウを開かない場合、
PrxOpenが返しているのが、return(new PrxNW());の行なんだけど、
これって具体的に何を返しているの?
なんかウインドウオブジェクトじゃない気がするんだけど。
newが余計なんじゃないかと思って。

> function PrxNW(){return(this.window);}
> function PrxOpen(url,nam,atr){
> if(PrxLC){
> var cdt=new Date();
> cdt.setTime(cdt.getTime()-PrxLC.getTime());
> if(!PrxLd && cdt.getSeconds()<2){
> if(atr){ return(PrxRealOpen(url,nam,PrxWOA(atr))); }
> else{ return(PrxRealOpen(url,nam)); }
> }
> }
> return(new PrxNW());
> }
946945:04/02/20 07:19 ID:gLKg5G5L
でもnewをなくしたら呼び出し元のウインドウになって
それもちょっと都合が悪いんだよね。
ウインドウオブジェクトと同じメソッド、プロパティを持つ
ダミーのオブジェクトを返そうと思っているんだけど、
その前に、元のコードの意味というか意図を知りたいんで。
947名無し~3.EXE:04/02/20 08:47 ID:04iMvXQh
そろそろ次スレかぁ、長いようで長かったな
948名無し~3.EXE:04/02/20 18:26 ID:PkCPPMa0
>>945
return(new PrxNW());の行はなんなんだろうね。
PrxNWというオブジェクトを初期化してPrxNWオブジェクトそのものを返してるだけ。
new演算子を取り去れば、確かにwindowオブジェクトを返すから意味が出てくる。
new演算子をくっつけてしまった現在は全く意味をなしてないと思われ。
<script>
myWin = window.open("");
myWin.document.open();
myWin.document.write("advertisement...")
myWin.document.close();
</script>
こんな広告POPUPの場合、
本来なら新しいウィンドウが開いて広告のためのHTMLが新窓に後書きされるけど
(件の行からnew演算子を取り去った)kill pop-up windowsを適用しておくと
その場にdocument.write()される。
広告だったらむしろ不必要だけど、これを最初に作った人の頭には
「新窓を開くタイプのフローティングメニュー」があったのかも知れない。
なるほど、それならその場に書かれないとメニューが無くなるから困る。

それから現在は上のようなスクリプトでエラーが起こるから、
それを出来る限り回避したかったのかな。

>ウインドウオブジェクトと同じメソッド、プロパティを持つ
>ダミーのオブジェクトを返そうと思っているんだけど
と同じ動機(?)で。
949名無し~3.EXE:04/02/20 20:23 ID:HkUuoFXL
(AB++|CD++)++

これも順番が変な気がする。
950名無し~3.EXE:04/02/20 23:02 ID:PsAVTQWP
>>754
これって変更して意味あるの?
951945:04/02/20 23:19 ID:gLKg5G5L
>>948
やっぱよくわかんないよね。ということで修正した。
これでいままでエラーになっていたページがエラーにならなくなった。
そこwin=window.open(〜); win.blur(); と良くある後ろに
ポップアップ(ダウン?)する命令でエラーになっていたんだよね。

いる人がいるかもしれないので修正個所を書いておく。
まず、WindowOpen.jsのPrxOpenのreturn(new PrxNW());を
return(PrxNW2());に変更。
あとは、次の関数を追加。
function PrxNW2(){
return(PrxCreateDummyWindow());
}

function PrxDummyFunction() {}

function PrxCreateDummyWindow() {
var o = new Object();
PrxSetDefaultProperty(o);
o.blur=o.alert=o.open=o.focus=o.resizeBy=o.resizeTo=o.moveBy=o.moveTo=PrxDummyFunction;
return o;
}
952945:04/02/20 23:19 ID:gLKg5G5L
function PrxSetDefaultProperty(o) {
for (var prop in this.window) {
switch(typeof(this.window[prop])) {
case "function":
o[prop] = PrxDummyFunction;
break;
case "number":
o[prop] = 0;
break;
case "object":
o[prop] = null;
break;
case "string":
o[prop] = "";
break;
case "boolean":
o[prop] = false;
break;
default:
}
}
}
953945:04/02/20 23:23 ID:gLKg5G5L
PrxSetDefaultProperty()でウインドウオブジェクトと同じ
プロパティを作成しているんだけど、一部というかほとんどのメソッドが
自動で取得できないので、PrxCreateDummyWindow()の
o.blur=o.alert=o.open=o.focus=o.resizeBy=o.resizeTo=o.moveBy=o.moveTo=PrxDummyFunction;
でダミーのメソッドを作っている。まあPrxSetDefaultProperty()はいらないかもね。
必要そうなのしか書いてないから、他に必要なのがあったら付け加えて。
954名無し~3.EXE:04/02/20 23:41 ID:1TufrsCj
--------------------
43 名前:ひよこ名無しさん[sage] 投稿日:04/02/17 16:27 ID:???
[Patterns]
Name = "kill window.open"
Active = TRUE
Limit = 256
Match = "window.open\("
Replace = "window.unopen("

コレで十分な気がする。

---------------------
というレスが入門スレにありますがこれじゃ防げないポップアップもあるんでしょうか。
955945:04/02/21 00:09 ID:gmsdl0jW
>>954
w = window;w.open() や with(window){open()}なんてのに対応できない。

なんてマイナーケースもあるが、それ以上に
余計なポップアップまで消えてしまうのが嫌。
ユーザーのクリックでwindow.open()するのも結構あるんで。

デフォルトの奴は、ページ開いている最中に次から次に
勝手に開くのだけを防いでいる。

ちなみにユーザーのクリックを含めてwindow.open()をすべて
無効にしたい場合は、window.unopen()なんかに変更するのではなく。
window.open = function (){} をページの最初に挿入した方がいい。
2行目のマイナーケースにも対応できるし、window.unopen()でエラーになることもない。
956945:04/02/21 00:10 ID:gmsdl0jW
×余計なポップアップまで消えてしまうのが嫌。
○必要なポップアップまで消えてしまうのが嫌。

957名無し~3.EXE:04/02/21 11:26 ID:e2VaL5Y7
なんかこのスレのレベル下がったなぁ。
入門スレ行けよ。
958名無し~3.EXE:04/02/21 11:44 ID:dojs7c/J
下がった原因=957
959954:04/02/21 12:08 ID:f9hAu8Ns
>>955
そんなコードもあるんですか、ありがとうございました!

>window.open = function (){}

なるほど〜Ф(・_・;)

あと、>951のコードも頂きました、激感謝〜m(_ _)m
960ata:04/02/21 16:24 ID:xVC9dyRp
The Proxomitronでブラウザを変更する方法を知っている方いますでしょうか?
前その記事を載せていたサイトが消滅してやり方がわからなくなってしまいました。。。
どうかよろしくお願いします!

実際はブラウザAなのにブラウザBに見せかけるということです。
961名無し~3.EXE:04/02/21 16:48 ID:wfpB0W17
>>960
スミスの事か?アンダーソン君。
962名無し~3.EXE:04/02/21 17:54 ID:UgwC30Ot
UserAgent?
963名無し~3.EXE:04/02/21 17:56 ID:3BlcW99K
>>962
しちーはんたー思い出した。
964名無し~3.EXE:04/02/21 19:27 ID:Ua6GEY3M
>>960
■Proxomitron入門スレッド■3
http://pc2.2ch.net/test/read.cgi/pcqa/1076737809/
965名無し~3.EXE:04/02/21 23:19 ID:bTU/ZZxU
966948:04/02/22 01:37 ID:pCDazsif
>>951-951
おぉ。本当にダミーオブジェクトだ。

948であげたスクリプトがやっぱりエラーなのが悔しいな。
改造してdocumentもダミーオブジェクトにしてみた。

window.open=function(){return PrxCreateDummyWindow(window)} //簡略化
function PrxCreateDummyWindow(obj) {
if(!obj) obj = window;
var o = new Object();
PrxSetDefaultProperty(o, obj);
o.blur=o.alert=o.open=o.focus=o.resizeBy=o.resizeTo=o.moveBy=o.moveTo //window
=o.write=o.writeln=o.close //document
=PrxDummyFunction;
return o;
}
function PrxDummyFunction() {}
function PrxSetDefaultProperty(o, obj) {
if(!obj) obj = window;
for (var prop in obj) {
switch(typeof(obj[prop])) {
case "function": o[prop] = PrxDummyFunction; break;
case "number": o[prop] = 0; break;
case "object": o[prop] =
(prop == "document")? PrxCreateDummyWindow(obj[prop]): null; break;
case "string": o[prop] = ""; break;
case "boolean": o[prop] = false; break;
default: break;
} } }
967948:04/02/22 01:37 ID:pCDazsif
最初は↓みたいにやろうとしたけど、
case "object": o[prop] = PrxCreateDummyWindow(obj[prop]); break;
無限ループしそう。そうでなくとも処理量が膨大だし。

それにしても、IEだとfor...inステートメントでメソッドを取得できないのは何でだ。
window["open"]("")
こういう記述は可能なのにな。
968名無し~3.EXE:04/02/22 04:05 ID:1tM9S9c7
(A++)+A (A+)++A (A++)++A (A+)+A
969945:04/02/22 05:24 ID:X9sgvoph
>>967
> それにしても、IEだとfor...inステートメントでメソッドを取得できないのは何でだ。
DontEnum属性というものがあるらしい。
ちなみにたぶんIE専用なものじゃない。
実際MozillaやOperaでも取得できない物があるらしい。
970948:04/02/23 01:31 ID:DzRIzoh3
>>969
なるほど。DontEnumは初耳だった。
Mathオブジェクトなんかは全部DontEnumみたいね。

Operaだとfor...in windowではメソッドのみの取得になっちゃうなぁ。
DOMにおけるDontEnum属性はブラウザ依存と。
971名無し~3.EXE:04/02/23 01:36 ID:bM1mzLMb
また馴れ合いか
あげるか
972名無し~3.EXE:04/02/23 06:57 ID:WQSXaDLu
>>971
2ch専用ブラウザが浸透してるこのご時世に
スレ番号なんて誰も気にしてないよ。
973名無し~3.EXE:04/02/23 10:21 ID:tfO3xQ2D
出た >>972のヲタクでデブである自分を標準であると
考える「2ch専用ブラウザが浸透してる」発言!!!!
きゃはははははは さすがデブヲタ。
974名無し~3.EXE:04/02/23 10:26 ID:hLemfSq0
必死だなw
975名無し~3.EXE
イッツナレア〜イアゲイン? アイレイズアディススレッド