Proxomitron フィルター作成スレッド Part6at SOFTWARE
Proxomitron フィルター作成スレッド Part6 - 暇つぶし2ch400:名無しさん@お腹いっぱい。
07/02/25 00:51:04 SRmz9w6X0
>>391
ADListに www.google-analytics.com/urchin.js を追加。

401:名無しさん@お腹いっぱい。
07/02/25 01:24:02 7eejlz4U0
>>354
"2ch thread list Tabler [HOME]-R subback [070216]"
何故かまた効かなくなりました。
ページソースを見ても問題ないような気がするのですが・・・
お手数ですが、再び改訂版をお願いいたします。

402:名無しさん@お腹いっぱい。
07/02/25 18:04:00 K9lZt87Q0
>>401
俺の環境ではちゃんと動いてるんだが

403:名無しさん@お腹いっぱい。
07/02/25 22:53:43 FZ67Frsr0
390のフィルター、一昨日はいけたけどまたダメになってるね…
なんなんだGoogle image

404:名無しさん@お腹いっぱい。
07/02/25 23:33:03 ddW5q+L40
387は問題なく使えてる

405:名無しさん@お腹いっぱい。
07/02/26 00:16:46 EbqblFqF0
>>404
それが>>390と同じでうちだと>>387は動かないんだよ
なんだろうね

406:名無しさん@お腹いっぱい。
07/02/26 00:30:43 Fn52+iDi0
なにか他のフィルタが干渉してるのでは?
例えばAdd Link

407:名無しさん@お腹いっぱい。
07/03/02 12:05:17 dihVs1M00
静かですね

408:名無しさん@お腹いっぱい。
07/03/02 17:04:14 eAbtRiGR0
うちも >>405と同じでだめです。
4.4 4.5j フィルター全部はずしてもどっちもダメ
わがんね

409:名無しさん@お腹いっぱい。
07/03/02 18:51:02 KOh5VbwA0
スクリプトタグ無いの
urchinTracker();
って部分だけフィルターで消したいのですが、
タグ内の一部分だけ消す方法が良くわかりません。

どなたか教えてくれませんか?

410:名無しさん@お腹いっぱい。
07/03/02 20:18:25 fhmIoiDy0
>>387とか>>390って何?
Googleイメージで検索して出た画像クリックするとホームページじゃなしに
元のサイズで画像を表示するってフィルタ↓使ってたんだけど、使えなくなった
これの新しいのってあります?>>387>>390は違うみたいでした

Name = "Google: Replace natural sized img [2006.04.20]"
Active = TRUE
URL = "images.google.co(m|.jp)/im(ag|gr)es\? $TYPE(htm)"
Limit = 512
Match = "(<a\s[^>]++href=)\#$AV((/imgres\?imgurl=[^&]+(^*\&frame=small)?+)\0)(^(^[ >]))"
"$SET(#="\0&frame=small")|"
"<a\s[^>]++href=$AV((http(://|s://)?+)\0)[^>]+>"
" <img\s[^>]++src=$AV(/images\?q=tbn:[^:]+:$TST(\0))[^>]+> </a>"
"$SET(#=<img style="margin: 5px; border-style: none" src="\0">)$STOP()"
Replace = "\@\r\n"

411:名無しさん@お腹いっぱい。
07/03/02 20:33:19 HkvjeHx70
ようつべの認証が必要なページをスルーする方法ない?

412:名無しさん@お腹いっぱい。
07/03/02 20:34:32 HkvjeHx70
ちなみに直接flvにリダイレクトすればflv動画保存はできた。
でも動画タイトルとか説明とか載ってるページが見たい

413:名無しさん@お腹いっぱい。
07/03/02 20:42:55 YSlvBEF80
>>410
387を使ってるけどクリックすると元画像サイズになるよ
>>409
文面通りの意味だと
Limit 1024 (適当)
Match <script\s\0urchinTracker\(\);\1</script>
Replace <script \0\1</script>
こういう事?
もっと深い意味があるのかな

414:名無しさん@お腹いっぱい。
07/03/02 20:45:52 fhmIoiDy0
>>413
ありがとう
マジですか、俺>>387>>390ともに試したけど全然だめでした
もしかして、Javaとかオンじゃないとだめなのかなあ
>>410のはJavaなしでもいけたんだけど、う~ん

もう一度試してきます

415:名無しさん@お腹いっぱい。
07/03/02 20:53:36 fhmIoiDy0
だめだ、出来ないorz
Firefox使ってるんだけど、もしかしてIE限定かな?

416:名無しさん@お腹いっぱい。
07/03/02 20:55:22 YSlvBEF80
>>414
ほんとだ
Script Offだと効かないね
387効かないって人が多かったのはそのせいだったのか

417:名無しさん@お腹いっぱい。
07/03/02 20:56:49 YSlvBEF80
ちなみに私はIEエンジンのタブブラウザですね

418:名無しさん@お腹いっぱい。
07/03/02 21:00:20 fhmIoiDy0
>>416
そうなんだ
Firefox2.0.0.2でJavaオフ = 普通にホームページに飛ばされる
Firefox2.0.0.2でJavaオン = サムネイル画像すら表示されず、なすすべなし(泣)

誰かFirefox用の>>410のフィルタ作ってくださいm(_ _)m

419:名無しさん@お腹いっぱい。
07/03/02 21:14:30 RWK0oXTa0
FxならgreasemonkeyいれてGreased Lightbox使った方が便利だと思う
GoogleImage以外でも使えるし。


420:名無しさん@お腹いっぱい。
07/03/02 21:46:35 WUebI47X0
このスレはOperaユーザが多いからそのせいもあるんじゃない?

421:名無しさん@お腹いっぱい。
07/03/02 22:51:58 fhmIoiDy0
>>419
Greasemonkeyは入れてるけど、Greased Lightboxってのは初耳です。
さっそく探してきます、ありがとう

422:409
07/03/02 23:04:03 KOh5VbwA0
>>413
どうもです。
狙いはその通りで、試してみましたが、
ロード時に読み込まれるので、後ろの</script>が読み込まれる前に
urchinTracker()を呼び出そうとするみたいで、

とりあえず、後ろの</script>を削って
Match <script\s\0urchinTracker\(\);\1

でやってみたら動いてるようです。

こんな感じでいいんでしょうか?

423:名無しさん@お腹いっぱい。
07/03/03 00:09:34 kMgiw1TB0
>>422
ん、テストページが無いので良くわからない。
入れ子でおかしくなるかもなので
Match
$NEST(<script\s[^>]\0+>,\1urchinTracker\(\);\2,</script>)
Replace
<script \0>\1\2</script>
のほうが安全かな。

424:名無しさん@お腹いっぱい。
07/03/03 06:33:14 KNGGVaeK0
>>422
>>413を使えばブラウザにurchinTracker();が削除されHTMLたソースが渡されるから
urchinTracker();が動くなんてことはありえないよ。

425:名無しさん@お腹いっぱい。
07/03/03 06:34:55 KNGGVaeK0
↑フィルターが正しく動いてればの話ね。 limitが足りなかったとかそういう原因かも知れない。

426:名無しさん@お腹いっぱい。
07/03/03 06:53:45 UgcnQ/NE0
URLリンク(dat.2chan.net)
上の掲示板への特定のIPからの書き込みを返信の場合はそれのみ
投稿の場合は広告、画像から子ツリーまですべて
痕跡も残さず消せるフィルターを作ってもらえないでしょうか
おねがいします

427:名無しさん@お腹いっぱい。
07/03/03 07:07:54 KNGGVaeK0
ふたばのオミトロンスレ見れよ

428:名無しさん@お腹いっぱい。
07/03/03 07:13:16 UgcnQ/NE0
気づきませんでした
いってきます

429:409
07/03/03 09:31:45 fwIzo8pg0
>>423
>>424
どうもです。
いろいろ勘違いがあったみたいです。
とりあえず以下のようにしました。

まれに
urchinTracker();
に引数が入ってるのがあるのでMatchに*を入れてみました。
後はBounds指定ってこれだと意味ないんでしょうか?

[Patterns]
Name = "Kill urchinTracker"
Active = TRUE
URL = "$TYPE(htm)"
Bounds = "<script($INEST(<script,</script)</script>|*)"
Limit = 1024
Match = "<script\s\0urchinTracker\(*\);\1</script>"
Replace = "<script \0\1</script>"

430:名無しさん@お腹いっぱい。
07/03/03 11:08:29 KNGGVaeK0
inestの使い道が違う。 この場合はnest。

$NEST(<script,\1urchinTracker\(\);\2,</script>)

これで十分だからboundsはいりません。

431:名無しさん@お腹いっぱい。
07/03/03 19:14:24 7WHuJ2Be0
>>420
Operaなら確かGreasemonkeyいれないで直にGreased Lightbox使えた気がする。


432:409
07/03/03 19:43:56 fwIzo8pg0
>>430
ありがとうございます。NESTの件、了解しました。

また別件というか別パターンが出てきました。
<a href="/index.html" onclick="javascript:urchinTracker('/sample/2007/misc/');">
みたいな感じでタグのイベント属性で追加されるパターンがあるみたいです。

なんかこのパターンを考えるとキリが無いのですが、
このパターンも消すとするとフィルターは別途書く必要があるので負荷が高くなるので、
ダミーのスクリプトを入れるフイルターを作った方が良いかと思うようになりました。

<head>タグの直後あたりにスクリプトブロック込みでダミーのurchinTracker()ファンクションを入れる
事で対応しようかと思い、以下の感じで作りましたが、なんか手抜きというか情けないような内容です。
アドバイスいただけますでしようか。

[Patterns]
Name = "New HTML filter"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "<head>"
Replace = "<head>"
"<script type="text/javascript">function urchinTracker(){};</script>"

433:名無しさん@お腹いっぱい。
07/03/03 20:41:14 kMgiw1TB0
ひとつのフィルタに纏める事できるよ
match欄
matchpattern1 $SET(9=replacepattern1)|
matchpattern2 $SET(9=replacepattern2)
replace欄
\9
みたいな感じ

434:名無しさん@お腹いっぱい。
07/03/03 20:59:36 kMgiw1TB0
具体的に書くと
例えばこんな感じ。
これだとurchinTrackerの記述のあるscriptタグ全部消しちゃうけど。
Match
$NEST(<a\s[^>]++href=$AV(*urchinTracker*),</a>) $SET(9=)|
$NEST(<script\s[^>]+>,*urchinTracker*,</script>) $SET(9=)
Replace
\9
>>432なんだけど
空の関数の後に実際のソースに実態があれば効かないんじゃない?
テストしてないからわからないけど

435:名無しさん@お腹いっぱい。
07/03/03 21:01:30 NAXtb9SN0
>>432
その方法なら1ページにつき一度のマッチングで済むので$STOPコマンドが使えますよ。

436:名無しさん@お腹いっぱい。
07/03/03 21:24:52 jp1tAzDC0
<script\s[^>]+>

437:名無しさん@お腹いっぱい。
07/03/03 21:26:50 jp1tAzDC0
早漏した

<script\s[^>]+>って<script>にマッチしたっけか
こっちで確認した限りではしないようだが

438:名無しさん@お腹いっぱい。
07/03/03 21:36:53 pF+sHsLa0
あぁ
<script>だけの場合? それは想定外でした。

439:名無しさん@お腹いっぱい。
07/03/04 00:06:25 tBx8TrfH0
↓これじゃだめなの?

400 :名無しさん@お腹いっぱい。:2007/02/25(日) 00:51:04 ID:SRmz9w6X0
>>391
ADListに www.google-analytics.com/urchin.js を追加。

440:名無しさん@お腹いっぱい。
07/03/04 00:19:46 73lxeMGz0
これがONになっているとアマゾンで検索したときに画像が出ません。
どうしてですか?

Name = "Banner Blaster (limit text)"
Active = TRUE
Multi = TRUE
Bounds = "<a\s[^>]++href=*</a>|<input*>|<ilayer*</ilayer>|<iframe*</iframe>|<object*</object>"
Limit = 900
Match = "(<(ilayer|iframe|object)*|\1<i(mg|mage|nput)*src=$AV(*)*>\3)"
"&(*(href|src)=$AV($LST(AdKeys)*)|"
"*URLリンク(*<i)(mg|mage|nput)\s(*>&&"
"(*width=[#460-480]&*height=[#55-60]*)|"
"(*width=[#88]&*height=[#31]*)))"
"&(*alt=$AV((?+{18})\2*|\2)|$SET(2=Ad))"

441:409
07/03/04 01:13:16 9b7LgS8o0
>>434
本物の関数は常に別ファイルで読み込まれるので、AdlistでBlockしてます。

>>435
どうもです。
HEADなんで$STOPは効果的ですね。

>>439
それだけだと、関数の呼び出しが残っているので、
Javascriptエラーが毎回でるので。

結果はこんな感じでにしました。
[Patterns]
Name = "Kill urchinTracker"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "<head*>$STOP()"
Replace = "<head>"
"<script type="text/javascript">function urchinTracker(){};</script>"

このフィルターは他人の所に足跡を残したくないのではなくて、
自分が管理してるサイトの分析に自身のアクセス記録を入れない為なので、
実際にはURLには実サイト名が入ってます。

Googgle Anlytics側にもフィルターがあるのですが、
出先で内容を確認したりする時のまでフォローしきれないので。

442:名無しさん@お腹いっぱい。
07/03/04 07:26:16 2pUUjDDU0
OperaでUAがMozilla含まれてないからこれでUA変更してるんだけど
バージョン変わるたびに修正するの面倒だから変更するときに
変更元のUAのバージョンつけられないかな?

今こんな感じの設定
key:User-Agent: Opera 9 (out)
URL:
Match:Opera
Replace:Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; U; ja) Opera/9.10

443:名無しさん@お腹いっぱい。
07/03/04 13:29:48 hlyDBHQO0
[HTTP headers]
In = FALSE
Out = TRUE
Key = "User-Agent: Opera (out)"
Match = "Opera/\0(\s|(^?))"
Replace = "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; U; ja) Opera/\0"

444:名無しさん@お腹いっぱい。
07/03/04 13:41:01 2pUUjDDU0
>>443
ありがとうございます~

445:名無しさん@お腹いっぱい。
07/03/05 23:25:27 4aRF74xu0
URLリンク(www.jtw.zaq.ne.jp)
↑のサイトの歌詞を表示してるページで
コピペや右クリックができるフィルタ希望です


446:名無しさん@お腹いっぱい。
07/03/05 23:36:20 E9YpSH1g0
華麗にスルー

447:名無しさん@お腹いっぱい。
07/03/05 23:41:29 2RxO/zSP0
www.jtw.zaq.ne.jp/animesong/y.js への接続を遮断するだけ

448:名無しさん@お腹いっぱい。
07/03/05 23:42:34 gh6EZIJM0
>>445
from
<BODY BGCOLOR="#CCFF99" onselectstart="return false" oncontextmenu="return false">
to
<BODY BGCOLOR="#CCFF99" onselectstart="return true" oncontextmenu="return true">

449:名無しさん@お腹いっぱい。
07/03/06 12:11:59 iB1jvKZy0
任意のタグ群から任意の要素群を除去するフィルタを書いてみた。
とりあえずはbodyとimgからoncontextmenu, onselectstaart, oncopyを除去できる感じに。
ひどいスパデティ状態だけど要は<body >みたいなスペースが入らないようにしたかったので。

[Patterns]
Name = "oncontextmenu deleter"
Active = TRUE
Limit = 256
Match = "$NEST(<(body(^(^\s))|img(^(^\s)))\#,((\s|)on(contextmenu|selectstart|copy)=$AV(*)|((\s|)[^=\s]+(=$AV(*)|))\#)+,>)"
Replace = "<\@>"

450:名無しさん@お腹いっぱい。
07/03/06 12:13:41 iB1jvKZy0
書き忘れてたけどサンプル
before : <body onselectstart="return false" oncontextmenu="return false" bgcolor="#ccff99">
after : <body bgcolor="#ccff99">

451:名無しさん@お腹いっぱい。
07/03/06 14:43:34 9zhYO6rw0
Firefox のように、ブラウザ側で
コンテキストメニューを強制的に使用可能にする手もある。フィルタ不要だし。

452:名無しさん@お腹いっぱい。
07/03/06 19:03:44 mTAaejSY0
>>449
要望者ではないがGJ

453:名無しさん@お腹いっぱい。
07/03/06 20:12:47 5wFR0ABi0
>>449
恐ろしく細かなところなんだが
JISコードのページで「alt="連携"」と言う文字が含まれてたりするとダメだよね?

2バイト目が「"」とかの文字だと$AV系は誤爆するから

454:think ◆MM0nnAOCiQ
07/03/06 20:57:29 74I35w2I0
>>449-450
そのフィルタは <body bgcolor="#ccff99"> にもマッチしてしまう問題を持っていますね。
((\s|)[^=\s]+(=$AV(*)|))\# を (([^>]++)\#\son(contextmenu|selectstart|copy)=$AV(*))+{1,*} に変更してはどうでしょうか?

[Patterns]
Name = "oncontextmenu deleter type2 [2007/03/06]"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "<(body|img)\#(^(^\s))"
"(([^>]++)\#\son(contextmenu|selectstart|copy)=$AV(*))+{1,*}"
Replace = "<\@"

455:名無しさん@お腹いっぱい。
07/03/06 22:42:58 +rFDbjSB0
Proxymoitronのフィルターなんですけど 以下のレスを参考にしたんですが、
もう少しキレイにするならどうしたらいいでしょう。


>【デボジット】Google AdSense初心者スレ 8PIN目
>スレリンク(affiliate板:370番)
>
>370 名前:クリックで救われる名無しさんがいる[] 投稿日:2007/03/05(月) 08:17:45 ID:5uG+lPlH0
>こんなの見つけたんだけど便利かな?
>URLリンク(isawseashell.blogspot.com)
>
>俺にはちょっとハードル高いんだけど、安心感が得られるならやろうかと思ってる。

[Patterns]
Name = "Adsense"
Active = TRUE
URL = "*.googlesyndication.com/$TYPE(htm)"
Limit = 1024
Match = "<a\s\0href="*123456789012"
Replace = "<a \0 href="about:blank"

これでやると、about:blank&nm=13 みたいに about:blnakの後ろにパラか残ってしまうんです。

実際のURLは
URLリンク(pagead2.googlesyndication.com)
みたいに入ってきてるんですが、タグ全体がフレームの中なので見えなくて どうやったら調べたりしたらいいかわからず困ってます。

456:名無しさん@お腹いっぱい。
07/03/06 23:18:09 ToBVIAPe0
マッチの部分をhref=$AV(*12345678912*)
にすりゃいいのでは。about:blnakはともかくProxymoitronってなんやねん。

457:名無しさん@お腹いっぱい。
07/03/07 17:22:42 /8mO2Jfl0
$NEST(<a\s(*href=$AV(\1)*|)&(*title=$AV(\3)*|)&(^(*(href|title)*)\7|)[^>]+>,\0,</a>)
aタグのhrefとtitleの値を\1,\3に順不同で入れるのには成功したんですが、
それ以外のものを\7に入れる事ができません。
とりあえず(^(*(href|title)*)\7|)としてますが効きません。
助言お願いします。
ソース例
<a href="/aaa/bbb/ここは1に" title="これは3に" class="これは7に">ここは0に</a>

458:449
07/03/07 18:08:54 JUv0ENxk0
思ったよりも反響があったようでビックリ。

>453
なるほど、そういうケースもあり得るのでしたら汎用フィルタとした使うためには手を加える必要がありますね。
手っ取り早いのは$AV(*)を使う代わりに [^=]+=[^ ]+ とすることでしょうか。
これでもまだ誤爆例がありましたら教えてください。
#ところで今までずっと[^\s]としていたのですがこれは大きな誤りであると分かりましたorz

>454
確かに、例えば <body> で終わらない全てのbodyタグに(極端な例では<body >にも)マッチしますが、そこに何か問題があるとは思えません。
<body bgcolor="#ccff99"> を挙げれば、それ全体を\#に代入して<\@>で出力しているので一見してムダではありますが。
そこで試しにプロファイルで速度比較をしてみました。
私のver1とthinkさんのver2では、ver2がver1の1.5倍多くの時間が掛かるようです。
<img alt="hogehoge" src="hogehoge.jpeg"> を29986バイト分だけコピペしたサンプルでの計測です。
<img alt="hogehoge" src="hogehoge.jpeg" oncopy="hogehoge"> とした場合も速度比はほぼ同じでした。
もしマッチングさせたくないという場合にはver2を選択すると良いでしょう。

459:名無しさん@お腹いっぱい。
07/03/07 18:16:46 eYPYjnoZ0
肝心の445が出てこない件

460:名無しさん@お腹いっぱい。
07/03/07 18:23:04 JUv0ENxk0
>457
目的がよく分からなんのですが、\1と\2と\3と\0に属性値を入れるわけですね。
\1はhrefに対応しなければならないんですか?
たいていの場合は必ずしもそういう対応関係を成り立たせなければならないわけではないと思いますが。
例えば
(href|title|((^(href|title)[^=])+))\1=$AV(\2) \s (href|title|((^(href|title)[^=])+))\3=$AV(\4) \s (href|title|((^(href|title)[^=])+))\5=$AV(\6)
とでもすれば\1と\2や\3と\4はセットなので、何が入ろうともかまわないということになります。
これで問題があるかはフィルタで何をしたいかによります。

ちなみにアスタリスク"*"をそういうふうに使う場合は
aタグを$NEST()で独立させたほうが良いです。
$NEST($NEST(<a\s,*hogehoge*,>),\0,</a>)

もう一度フィルタの目的をよく考えてから作り直しては?

461:449
07/03/07 18:28:11 JUv0ENxk0
>458について日本語のミスがありましたorz
>私のver1とthinkさんのver2では、ver2がver1の1.5倍多くの時間が掛かるようです。
1.5倍の時間が掛かる、もしくは0.5倍多くの時間が掛かる、に訂正します。
例えばver1で2sec要する場合にver2はおよそ3sec要します。

462:名無しさん@お腹いっぱい。
07/03/07 18:36:28 /8mO2Jfl0
>>460
目的はtitle欄にhref以下のurlその他をぶち込んでマウスを当てると見えるようにするためです。
ORで分岐すると順不同(hrefの前にtitleが来たり)のとき面倒なので&を使ってます。
ですから>>457の場合だとreplece欄でtitle="\1 \3"みたいに続けて記述します。

463:名無しさん@お腹いっぱい。
07/03/07 18:46:47 JUv0ENxk0
>462
つまりtitle要素があれば中身をhrefで書き換え、title要素がない場合はtitle="href属性値"を追加するということ?
言い換えればtitle要素があれば除去し、title="href属性値"を追加する、とでもすればうまくいきそうですな。
やり方はいくつもあると思うけど私ならこうやります。
その場合は&を使うよりはスタックを使ったほうがよさそうです。

464:名無しさん@お腹いっぱい。
07/03/07 18:57:41 JUv0ENxk0
チープな>449の焼き回しですが、一例として

マッチ欄
$NEST(<a(^(^\s)),(\s(title=$AV(*)|href=$AV(\0)|([^= ]+=$AV(*))\#))+,>)
置換テキスト
<a href="\0" title="\0" \@)


サンプル例
before : <a href="ljilfejalfejla" src="ljfiejlajflea" title="fea.fae">
after : <a href="ljilfejalfejla" title="ljilfejalfejla" src="ljfiejlajflea")

465:名無しさん@お腹いっぱい。
07/03/07 19:06:34 /8mO2Jfl0
>>463
あらかじめtitleの無い場合は,titleにhrefを入れます。
titleのある場合は、既にあるtitle+hrefにします。
具体的には
<a href ="\1" title="\3 \1" \7>\0</a>
3は既にあるタイトルで空の場合もとりあえず入れときますw
記述してくださった$NESTの入れ子を試してみたところ7にその他のものが入ってくれました。
$NEST($NEST(<(a|area)\s,(*href=$AV(\1)*|)&(*title=$AV(\3)*|) \7,>),\0,</a>)
ただこれだと\7に既にあるhrefやtitleも入ってしまいますが
<a href ="\1" \7 title="\3 \1" >\0</a>
こうすれば大丈夫みたいです。
ありがとうございました。

466:think ◆MM0nnAOCiQ
07/03/07 19:37:31 O0RWiz+R0
>>456
> そこに何か問題があるとは思えません。
"oncontextmenu deleter" でマッチすると、他のフィルタで <body> にマッチしなくなるという問題がありますが、"oncontextmenu deleter" を優先するなら些細な問題かもしれませんね。
アプローチの仕方が違うだけとも言えるので、好みの問題だと思います。

> 私のver1とthinkさんのver2では、ver2がver1の1.5倍多くの時間が掛かるようです。
検証お疲れ様です。
>454は読み取るバイト数が少ないので、速いと思っていましたが $NEST の方が速くなるんですね。
せっかくなので、速度重視で最適化してみました。(下記の状況で、+{1,*} が効かない理由は解りません)

[Patterns]
Name = "oncontextmenu deleter type3.1 [2007/03/07]"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "$NEST(<(body|img)\#(^(^\s)),"
"\#\son(contextmenu|selectstart|copy)=$AV(*)"
"(\#\son(contextmenu|selectstart|copy)=$AV(*))+"
"\#,>)"
Replace = "<\@>"

ところで、>454で示したフィルタは "type2" であって、「最新のフィルタ」として掲示したわけではないですよ。(^^;
449氏の作成したフィルタを引き継いで改良したなんて、おこがましいことは言えません。
私の経験,ポリシーに則って作成した別のフィルタだと思っています。

467:名無しさん@お腹いっぱい。
07/03/07 20:02:01 JUv0ENxk0
>466
一度マッチした部分にはほかのフィルタはマッチしないというのは不覚にも知りませんでした。
ちょっとしたテストをしてみましたが、確かにそのようです。
フィルタ同士でループしないようにとのことでしょう。
こうだと分かると何でもかんでもマッチングしてしまう>>449のフィルタは曲者ですね。
thinkさんの>466が正当な改良版だと思いますよ。
>456の段階では単にver違いという意味で書いたのですが。

468:think ◆MM0nnAOCiQ
07/03/07 23:41:26 O0RWiz+R0
>>467
> 一度マッチした部分にはほかのフィルタはマッチしない
これは下記URLの「再帰的なマッチングを使う方法」を読むと、よく理解できると思います。

Tips and Tricks
URLリンク(www.pluto.dti.ne.jp)

> >456の段階では単にver違いという意味で書いたのですが。
それは失礼しました。
ただ、ver違いというニュアンスだと後継版と受け取られがちなので、念のため釈明させていただきました。

469:think ◆MM0nnAOCiQ
07/03/07 23:43:05 O0RWiz+R0
>>465
仰ることが正確に掴めていませんが...

> $NEST($NEST(<(a|area)\s,(*href=$AV(\1)*|)&(*title=$AV(\3)*|) \7,>),\0,</a>)
> <a href ="\1" \7 title="\3 \1" >\0</a>
どちらの表現でも、

<a id="test" title="string" href="URL">

のHTMLソースにマッチしないという問題が残っているようです。
>464の表現を使い回しするとこれに対応できますが、「全てのa要素にマッチしてしまう」という問題がまだ残ります。
HTML4.01仕様書によれば、

------------
ユーザエージェントは、CDATA型属性値の、冒頭あるいは末尾の空白文字を無視してよい。
(例えば「 myval 」を「myval」として解釈してよい。)
著者は、冒頭あるいは末尾に空白文字のある属性値を宣言することを避けるべきである。
URLリンク(www.asahi-net.or.jp)
------------

とあり、空白文字のみの属性値によるUAの動作を明示していません。(「してよい」は「しなくてもよい」とも受け取れる表現だからです。)
可能なら、「空の属性値」「空白のみの属性値」は避けるべきだと思います。

470:think ◆MM0nnAOCiQ
07/03/07 23:52:20 O0RWiz+R0
>469の続き。

この条件なら二重に$NESTを使うまでもなく、</a> までマッチさせずとも、<a> の開始タグのみにマッチさせるだけで十分だと思います。
期待する動作を、「href属性のあるa要素があったとき、title属性にhref属性値を挿入する」とすると。

[Patterns]
Name = "Insert <a> title [2007/03/07] test2"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "$NEST((<a(rea|)\s)\#(^(^[^>]++href=$AV(\0))),"
"(\#)title=$AV(\1)$SET(2=\1 \0)\#|"
"$SET(2=\0)\#"
",>)"
Replace = "\@ title="\2">"

(^(^[^>]++href=$AV(\0))) は & に読み替えてもらっても構いません。
(\#) は置換スタックのバグ回避のための暫定措置です。
URLリンク(abc.s65.xrea.com)
| と $SET を組み合わせているのは、title属性値の先頭に空白を含めないためですが、title属性値を格納した変数を $TST で判定して分岐させてもよいかもしれません。

471:457,462,465
07/03/08 00:30:23 yKKFo5Ex0
>>469-470
まだ理解してませんが、参考になります。
titleにあらゆる属性をつっこもうとしてまして
(例えばaタグの後にimgタグが来た場合のhrefも)。
470を検討してみます。ありがとうございます。

472:名無しさん@お腹いっぱい。
07/03/08 00:45:41 4XFeP5Uk0
aタグ内にimgがある場合に対応させようとするなら↓のようにすればいいよ

$NEST($NEST(<a\s,*hogehoge*,>),
\0((<img[^>]++src=$AV(\3)[^>]+>)\1\2|),
</a>)

で置換部分は <a>\0\1\2<\a> とすれば良いし、srcの属性値は\3に入っている。
>(例えばaタグの後にimgタグが来た場合のhrefも)。
但し、これをhrefじゃなくてsrcのことだと解釈しての話。
*hogehoge* を>470に置き換えればそのまま動くはず。

473:名無しさん@お腹いっぱい。
07/03/08 00:54:47 yKKFo5Ex0
>>472
ありがとう。やってみますね。

474:名無しさん@お腹いっぱい。
07/03/08 01:16:31 7b1HZB3B0
ぶった切ってすみませんが、YOUTUBEで再生のデフォルトを、
全画面にするフィルター(リンク追加でもかまいません)がもしできたらお願いします。

475:名無しさん@お腹いっぱい。
07/03/08 07:26:27 2LOjLWQX0
>>474
[Patterns]
Name = "YouTube fullscreen"
Active = TRUE
URL = "$TYPE(htm)(www.|)youtube.com/watch\?"
Limit = 256
Match = "<!DOCTYPE$SET(0=<!--)"
"|"
"-->"
"|"
"new\sSWFObject\(\"/player2.swf\?(video_id=[^"]+)\1\""
"$SET(0=--><meta http-equiv="refresh" content="0;url=URLリンク(www.youtube.com))"
Replace = "\0"

476:名無しさん@お腹いっぱい。
07/03/08 16:21:59 vBpwNiv90
ところで>>445のフィルタまだ?

477:名無しさん@お腹いっぱい。
07/03/08 16:52:03 BEkyhjCe0
JavaScriptをOFFにすればいいんじゃね?

478:名無しさん@お腹いっぱい。
07/03/08 18:34:06 2LOjLWQX0
>>476
超適当だけど一応作ってみた
[Patterns]
Name = "www.jtw.zaq.ne.jp/animesong/ kasi kopipe"
Active = TRUE
URL = "www.jtw.zaq.ne.jp/animesong/"
Limit = 256
Match = "<script type="text/javascript" src="../../y.js"></script>"
"|"
"<NOSCRIPT><META HTTP-EQUIV="Refresh" CONTENT="0;URL=index.html"></NOSCRIPT>"
"|"
"on(selectstart|contextmenu)="return false""

479:名無しさん@お腹いっぱい。
07/03/08 19:18:02 K/9AXNBV0
>476
URLリンク(www.kenichimaehashi.com)

480:名無しさん@お腹いっぱい。
07/03/08 23:09:23 yKKFo5Ex0
>>470,>>472を使ってあれこれいじってましたが
$NESTを使うと<img*>の記述のある場合と無い場合でうまくいかなかったので
単純にして全部作り直してしまいました ;;
リンクをクリックすれば_selfで、右に出るblanktab.gifをクリックすれば_blankで開きます。
(blanktab.gifはなんでもいいです)
>>470,>>472はかなり参考になりました。またよろしくお願いします。
おかしなところ多々あると思いますが、以下source

481:名無しさん@お腹いっぱい。
07/03/08 23:11:26 OXZVhBSr0
\(^^)/ ←ソース

482:名無しさん@お腹いっぱい。
07/03/08 23:11:58 yKKFo5Ex0
Name = "Insert title & blankGIF [2007/03/08]"
Active = TRUE
Bounds = "<(a|area)\s[^>]+>(^(\>|click here|<dd>|ID:))*</a>"
Limit = 2048
Match = "<(a(rea|))\9\s(*(*href=$AV(\1)*|)&(*title=$AV(\2)*|) *)\5[^>]+>"
"\7((<img\s(*src=$AV(\3)*|)&(*alt=$AV(\4)*|) *[^>]+>)\6|)"
"</(a(rea|))>"
Replace = "<\9 target="_self" \5 target="_self" title="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4">\7\6\8</\9>"
"<\9 target="_blank" \5 target="_blank" title="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4">"
"<img border="0" src="URLリンク(Local.ptron) alt="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4"></\9>"

483:名無しさん@お腹いっぱい。
07/03/08 23:13:17 yKKFo5Ex0
>>481
間違えました

484:名無しさん@お腹いっぱい。
07/03/09 01:00:08 bjxVpHmZ0
誤爆ありまくりなので$NESTつけました・・
Name = "Insert title & blankgif set [2007/03/08]"
Active = TRUE
Bounds = "<a(rea|)\s[^>]+>(^(\>|click here|<dd>|ID:))*</a(rea|)>"
Limit = 1024
Match = "$NEST(<(a(rea|))\9\s,(*(*href=$AV(\1)*|)&(*title=$AV(\2)*|) *)\5,>"
"\7((<img\s(*src=$AV(\3)*|)&(*alt=$AV(\4)*|) *[^>]+>)\6|)"
"</(a(rea|))>)"
Replace = "<\9 target="_self" \5 target="_self" title="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4">\7\6</\9>"
"<\9 target="_blank" \5 target="_blank" title="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4">
"<img border="0" src="URLリンク(Local.ptron) alt="[URL]\1\r\[TITLE]\2\r[SRC]\3\r[ALT]\4"></\9>"

485:名無しさん@お腹いっぱい。
07/03/09 02:11:39 3Cl7ivfL0
自分で考えてフィルタを作りたいならもう少しプログラミング(論理学でもいい)の基礎を勉強したほうがいいよ。
もしくはほかの人がこれまでに書いてきたものを読んで理解したほうがいい。
例えば <a(rea|)>...</a(rea|)> としたんじゃ
<a>...</area> にも <area>....</a> にもマッチするし、たぶんそれは意図していないマッチングだろう。
もう一つだけど最初のうちはアスタリスクを乱用しないほうがいい。
初心者にとってのアスタリスクというのはおそらく面倒なことをブラックボックスに詰め込んでどっかにやるためのツールなんだろうけど
それじゃ何も上達しないし理解もすすまないだろう。
>(*href=$AV(\1)*|)&(*title=$AV(\2)*|)
これなんかはアスタリスク乱用の好例だね。
やりたいことはhrefがあればその属性値を\1に代入し、titleがあればその属性値を\2に代入する、ということなんだろうけど
hrefとtitle以外の属性値をすべて無視してしまえば、もっとシンプルな場合わけができるはずだ。
<a>, <a href>, <a href title>, <a title>, <a title href> というように。
あとはこのスペースを[^>]++で置き換えてやればhrefとtitle以外の属性値を上手に無視することができる。
例えばこうなる。
<a\s ([^>]++href=$AV(*)([^>]++title=$AV(*)|)[^>]+>|[^>]++title=$AV(*)([^>]++href=$AV(*)|)[^>]+>|[^>]+>)
#これは<a>にはマッチしないけど、現実的にはそれでも問題はないだろう。

>(*href=$AV(\1)*|)&(*title=$AV(\2)*|)
は初心者の好むブラックボックス化で
><a\s ([^>]++href=$AV(*)([^>]++title=$AV(*)|)[^>]+>|[^>]++title=$AV(*)([^>]++href=$AV(*)|)[^>]+>|[^>]+>)
は論理的思考にある程度慣れた人が好むブラックボックス化だと考えてくれてもいいと思う。(優劣の問題にあらず)
論理学的には中身はまったく一緒だけどよりシンプルでより破綻しづらいのは後者。 { (A|B)&(C|D) = (AC|AD|BC|BD) }

Proxomitronでのアスタリスクは賢い上に速度も最速な便利な道具だけど慣れるまでは上記のようなスタンスで取り組んだほうがいい。
高速化チューニングはその後からやってもいいんだから。

486:名無しさん@お腹いっぱい。
07/03/09 02:47:07 3Cl7ivfL0
属性値と要素を混同している部分があるけど、適宜読み替えてほしい。
<a(rea|)>...</a(rea|)> について。
残念ながらProxomitronの仕様ではこれに多少の修正を加えることで「意図」通りに動かすということはできない。
方法は二つ。
一つは括弧を閉じないやり方。
Proxomitronからすれば一番合理的なやり方だけど、人間からすれば読みづらいしフィルタサイズが大きくなるわ追加・修正が面倒だわ。
<a(rea...>...</area> | ...>....</a>)
もう一つはTSTを利用するやり方。
<a(rea...>(\1)<\area> | ...>(\1)<\a>)$TST(\1=foobar)
これなら人間にとって把握しやすいし修正が楽になるというメリットがある。
後者は同じようなことをANDやBoundsを使って表現することもできる。
ANDとBoundsとTSTでどれが一番早いかは……不明。

487:名無しさん@お腹いっぱい。
07/03/09 03:15:52 3Cl7ivfL0
簡単なテストでANDとDOUBLEANDとTSTの速度比較をしてみた。

AND : <a\s([^>]+>&href=$AV(*))
TST : <a\s([^>]+)\0>$TST(\0=*href=$AV(*)*)
DAND : <a\s([^>]+>&&*href=$AV(*)*)

フィルタとしては考え得る限りで同一の動作をすると思う。
結果から言うと所要時間は AND ≒ DAND < TST でした。
TSTが一番遅いだろうとは思ってたけどANDとDANDがほぼ同じというのは少し意外。
#もちろんサンプルによっては結果は異なると思うので、本来なら色々なサンプルでテストしてみるべきところだが
#今回は二つのサンプルでほぼ同一の結果(所要時間の比率)を得たのでよしとした。
AND/DANDとTSTの速度差は数回の平均を取った場合で0.7%。
ANDとDANDの差は誤差範囲内。

ちなみに <a\s[^>]++href=$AV(*)[^>]+> は上記三つの約7倍の速さだった。
[^>]++をアスタリスクに置換すると更に6%早くなった。(但しこのアスタリスクの使い方は非推奨)
長い文字列に対しては$NESTを使うことで更に早くなる場合もあるがそれはケースバイケース。

488:名無しさん@お腹いっぱい。
07/03/09 04:45:32 hFs8erHf0
ニコニコ動画から直接.flvをDLできるフィルタきぼん

489:名無しさん@お腹いっぱい。
07/03/09 05:15:16 edKiCEkR0
間接キスでガマンして

490:名無しさん@お腹いっぱい。
07/03/09 05:36:25 TLLxfe8n0
素人な人は、ここで質問して作ってもらったフィルターは、すぐに試さない方がいいかもしれない。
半日程度寝かして、否定的なコメントが出ないぐらいまで待った方が良いかもね。

とんでもないスクリプトを混ぜられるかもしれん。

491:名無しさん@お腹いっぱい。
07/03/09 07:20:42 bjxVpHmZ0
>>485-487
どうも
作成途中の段階で冗長になりすぎてわけがわからなくなったので
全部おじゃんにして作り直して出来たと思った途端に半端なまま
UPしてしまいました。
出直します..

492:名無しさん@お腹いっぱい。
07/03/10 03:18:00 uXHetq1x0
<a(rea|)>...</a(rea|)> についてすっかり忘れていたことがあったので追記します。
>残念ながらProxomitronの仕様ではこれに多少の修正を加えることで「意図」通りに動かすということはできない。
これはまったくの誤りで実はもう一つの(比較的小規模な修正で意図通りに動かせる)方法がある。
第三の方法は変数をフラグとして用いてOR関数で分岐させるというもの。
例:
<a(\s$SET(flag=0)|real\s$SET(flag=1))[^>]+>*<($TST(flag=0)/a|$TST(flag=1)/area)>

但しこの手法ではローカル変数は使えないので、グローバル変数を使うことになるが使用後に解放することを忘れずに。
解放のやりかたは不要になった段階で$SET(flag=)というように空でSETすれば良い。
グローバル変数自体は基本的にほかのフィルタに値を渡すために使うためのもので、フラグとして使うというのはトリッキーな部類に属すのだが
Proxomitronの仕様上、ローカル変数をフラグとして利用することができない(一度使ったローカル変数をマッチ欄で再度使うことができない)ので仕方がない。

493:名無しさん@お腹いっぱい。
07/03/10 03:35:34 650fW3oU0
URLリンク(vipup.org)
このサイトの広告を消すフィルタを作っていただけないでしょうか。よろしくお願いします。

494:名無しさん@お腹いっぱい。
07/03/10 04:37:51 Q+Oc8G1J0
Name = "3d>>>2d"
Active = TRUE
URL = "$TYPE(htm)vipup.org/"
Limit = 256
Match = "$NEST(<a\shref=$AV(URLリンク(click.t2z.jp)),</a>)|"
"<a\shref=$AV(URLリンク(ofuda.cc))*</a>"

495:名無しさん@お腹いっぱい。
07/03/10 06:38:33 650fW3oU0
>>494
遅くなりましたが、ありがとうございます。

496:名無しさん@お腹いっぱい。
07/03/10 08:02:57 pr+9tzs+0
firefoxのadblockplusで^URLリンク(click\.)とofuda.cc/を弾いてる漏れには無縁

497:名無しさん@お腹いっぱい。
07/03/10 10:08:04 FcJ4cSpA0
オミトロン入れてるのにadblockplusとかアホちやうかと思う。

498:名無しさん@お腹いっぱい。
07/03/10 10:57:17 v1L9WvH00
>>492
一生懸命なとこ申し訳ないけど、日本語訳ヘルプサイトのマッチングコマンドページの
$TSTの説明文のところにそれと同じことをローカル変数で実現する例が載ってる。

あとその方法でやるなら$TSTはもっと後ろに置くべき。 </a>、</area>の後ろで。

>>470
置換スタックに代入するためだけに先頭の<aを()で囲うのは
処理速度の低下になるから高速化に拘るのであれば避けるべき。

499:名無しさん@お腹いっぱい。
07/03/10 14:15:10 uXHetq1x0
>498
$TST(\0)の存在を完全に忘れてた。使い所はまだあまり思い浮かばないけど参考になったよ。
<([a-z]+)\1*</$TST(\1)>
すごく……スマートです。

>置換スタックに代入するためだけに先頭の<aを()で囲うのは
>処理速度の低下になるから高速化に拘るのであれば避けるべき。
該当部分を $NEST(<a(\s|rea\s)\#, .....) に変えて
置換テキストの先頭に <a を加えたほうが良いということ?
前後での速度変化は検知すら不可能な気がするけど調べてないから何とも言えない。
しかし個人的には修正するときに弄る箇所が多くなる可能性があるフィルタというのは使い勝手がよくないと思う。

500:名無しさん@お腹いっぱい。
07/03/10 14:16:49 nGbrcGZM0
myspace(例えばURLリンク(www.myspace.com))で
一番上に出る"今週のお勧めアーティスト"のバナーを消したいのと、
おそらくインターネットオプションの言語が日本語だと
メニューが中途半端に日本語になるのがいやなのですが(英語のままがいいです)、
フィルターで解決できますでしょうか?
もしできるのであればどなたか作っていただけませんか?
よろしくおねがいします。

501:think ◆MM0nnAOCiQ
07/03/10 14:58:13 iZYl65vB0
>>498
> 置換スタックに代入するためだけに先頭の<aを()で囲うのは処理速度の低下になる
今回はa要素かarea要素かを覚え込ませる必要があるので、置換スタックを使わざるを得ませんでした。
(rea|) で変数に格納した方が望ましいということでしょうか?

502:think ◆MM0nnAOCiQ
07/03/10 15:00:25 iZYl65vB0
ところで、何の前提も無しに私がフィルタを作成しようと思ったら、$NESTは使わないと思います。
$NESTを使用すると、最小限のマッチが実現しにくくなる(マッチしなくても良いところまでマッチする)場合があり、今回はその状況なので…。

[Patterns]
Name = "Insert <a> title [2007/03/10] test4"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "(<a(rea|)\s)\#(^(^[^>]++href=$AV(\2)))"
"(([^>]++)\#title=$AV(\1)$SET(#=title="&lt;a title&gt;: \1\r\n&lt;a href&gt;: \2)|"
"$SET(#=title="&lt;a href&gt;: \2))"
"("
"[^>]+>(^<img\s[^>]++title=)"
"(<img\s("
"[^>]++src=$AV(\3)$SET(#=\r\n&lt;img src&gt;: \3)&"
"([^>]++alt=$AV(\4)$SET(#=\r\n&lt;img alt&gt;: \4)|)"
")|)"
")\9"
Replace = "\@"\9"

---- サンプルソース
<a id="a_id" title="a_title" href="a_href"><img alt="img_alt" src="img_src" title="img_title" /></a>
<a id="a_id" title="a_title" href="a_href"><img alt="img_alt" src="img_src" /></a>
<a id="a_id" title="a_title" href="a_href">text</a>

IE7とSyleraで検証したところ、img要素のtitle属性が存在するときは、img要素のtitle属性がツールチップに表示されるようです。
そのため、img要素のtitle属性が存在する状況ではマッチしないようにしてあります。
どうせなら、img要素用のフィルタがあっても良いかもしれません。

503:think ◆MM0nnAOCiQ
07/03/10 15:06:46 iZYl65vB0
>502の続き。

「最小限のマッチ」を最優先で考えるならば、>502のフィルタは \9 ではなく「肯定先読み」を使うべきですが、それでは置換スタックに該当テキストが代入されませんでした。
仕方がないので、ローカル変数で代替えしていますが、他に良い手段があれば改善したい部分です。

504:名無しさん@お腹いっぱい。
07/03/10 17:25:14 S0lPbdUa0
ニコニコ動画から直接.flvをDLできるフィルタきぼん

505:think ◆MM0nnAOCiQ
07/03/10 17:52:21 iZYl65vB0
>>325
遅レスですが、作成したのを忘れていました。(汗)

[Patterns]
Name = "Mooter: Kill ad [2007/02/09] test1"
Active = TRUE
URL = "$TYPE(htm)www.mooter.co.jp/moot/\?"
Limit = 2048
Match = "$NEST(<td[ >],[^>]++bgcolor=$AV(*)*<div\s[^>]++id=$AV(sponsor)*,</td>)"
"$SET(0=\r\n<!-- Kill Mooter ad -->\r\n)|"
"<div(^(^\s[^>]++id=$AV(sp)))$SET(0=<div style="display: none")$STOP()"
Replace = "\0"

参考までに、どんな時に「Mooter」で検索するのか、聞かせていただけると嬉しいです。

506:名無しさん@お腹いっぱい。
07/03/11 01:45:50 QC5rXZw90
みなさんのアドバイスをいただきたいです。
URLリンク(proxo.hp.infoseek.co.jp.)
相対リンクを絶対リンクに直すリストを作ったのですが、思ったように動きません。
相対リンクなら絶対リンクに直し、絶対リンクならそのままにグローバル変数ABSにURLを格納するのですが
それを正しく呼び出すことができません。
$SET(ABS=\8\9) のようにセットしているのですが $GET(ABS)と\8\9が一致していないということです。
置換テキストで $GET(ABS) の代わりに\8\9を使うとこちらの環境では大部分のウェブサイトで動作を確認できました。

507:名無しさん@お腹いっぱい。
07/03/11 02:41:41 LLusi//q0
パスを変換するフィルタはときどき話題になるけど、面倒な問題だと思う。
自分も以前考えたことがあったけど、
わざわざパスを変換しなくても目的さえ達成できればいいかと考えて、
まったく別の見方からフィルタを書くことで解決した。
パスを書き換えることが本当に必要なのかを考え直すのも手だと思う。

508:名無しさん@お腹いっぱい。
07/03/11 02:45:15 woTiePuf0
>>502
457ですが
ありがとうございます。

509:498
07/03/11 14:17:22 LSOWJrEn0
>>499>>501
>置換テキストの先頭に <a を加えたほうが良い
>(rea|) で変数に格納した方が望ましい

そうです。 でもこれは’高速化を重視する場合は’という条件での
話なので必ずこう書かなければいけないということではないです。

>>470は高速化のために$NESTを使ってると思ったので>>498のレスを
付けたんですが、>>502を読むとどうやら違ったみたいです。
こちらの勘違いだったようなのですみませんが忘れて下さい。

510:名無しさん@お腹いっぱい。
07/03/11 15:31:59 LSOWJrEn0
>>503
(^(^$SET(#=…)))は使えないようですね。
(^(^$SET(ローカル変数=…)))は動いたのでこれで代用してはいかがでしょうか。

511:名無しさん@お腹いっぱい。
07/03/11 17:50:01 0EO6G7xs0
title要素内の改行をスペースに置換するにはどうしたらいいでしょう。

512:名無しさん@お腹いっぱい。
07/03/11 20:45:54 LSOWJrEn0
>>506
試してないので推測ですが、wikiの$SETの説明文に書いてある現象が
起きていると思われるので最短一致にならない書き方にすれば直ると思います。

>>511
改行は\r\n。

513:511
07/03/11 21:44:41 0EO6G7xs0
>>512
それは知っています。

514:名無しさん@お腹いっぱい。
07/03/11 21:57:38 qs13JhQR0
アメーバ動画をDLできるフィルタきぼん

515:名無しさん@お腹いっぱい。
07/03/11 23:37:09 LSOWJrEn0
>>513
一応確認なんですが>>502のフィルターのことですよね?

516:511
07/03/12 00:16:20 /2yG7ZeG0
>>515
違います。
私は既存のどのフィルターに対しても言及していません。
ただ、私のやりたいことについて言っているのです。

改行をスペースに置換する方法は知ってるんです。
それをtitle要素に限定する方法がわからないのです。

517:think ◆MM0nnAOCiQ
07/03/12 00:32:23 zgeKaTdr0
>>510
ローカル変数で万事OKでした。多謝。
# まさか、置換スタックの制限だったとは…。$SET が使えないものと想定していました。

[Patterns]
Name = "Insert <a> title [2007/03/12] test4.1"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "(<a(rea|)\s)\#(^(^[^>]++href=$AV(\2)))"
"(([^>]++)\#title=$AV(\1)$SET(#=title="<a title>: \1\r\n<a href>: \2)|"
"$SET(#=title="<a href>: \2))"
"(^(^"
"[^>]+>(^<img\s[^>]++title=)"
"(<img\s("
"[^>]++src=$AV(\3)$SET(\8=\r\n<img src>: \3)&"
"([^>]++alt=$AV(\4)$SET(\9=\r\n<img alt>: \4)|)"
")|)"
"))"
Replace = "\@\8\9""

>>511,513,516
$NEST でマッチ範囲を制限してみてはどうでしょうか?

518:名無しさん@お腹いっぱい。
07/03/12 00:46:37 awFCazQV0
どなたかSHOUTcast Song HistoryをShift-JISで表示する
ヘッダフィルタをお願いしマス

519:think ◆MM0nnAOCiQ
07/03/12 00:52:44 zgeKaTdr0
>>511,513,516
もしくは、「title要素の開始タグから次のタグまでの文字列」に制限する方法ですね。

<title>[^<]++[\r\n]...

title要素は、内容モデルで文字列のみを許可しているので、HTMLに即した書き方である限り、他のタグが現れることはありません。
URLリンク(www.asahi-net.or.jp)

最も、"<>" を文字列としてそのまま書いたりするサイトもあるので(本来は実体参照で書くべきところです)、$NESTの方が確実ではあります…。
見やすいフィルタを作るなら、Bounds でも良いです。

520:511
07/03/12 01:35:35 /2yG7ZeG0
>>517,519
ありがとうございます。

私、$NEST()の使い方がどうもわからないのです。

Match = "$NEST(<title*>,\r\n,</title>)"
Replace = " "

と書いてみたんですが、駄目でした。おそらくこれは間違った書き方なんでしょう。
正しい書き方をご教示願います。

521:think ◆MM0nnAOCiQ
07/03/12 02:28:08 zgeKaTdr0
>>520
"$NEST(<title*>,\r\n,</title>)" は "<title>\r\n</title>" にマッチします。
$NEST の第二引数 (上例では "\r\n") は完全一致ですので、「改行を含む文字列」を指定してやれば良いでしょう。
「改行を含む文字列」の簡単な例は

*(\r\n|[\r\n])*

ですが、これでは一つの改行しか置換できません。
複数の改行を置換するためには、「グループ化を利用して、再帰的にマッチ」させる必要があります。
URLリンク(www.pluto.dti.ne.jp) (「再帰的なマッチングを使わない方法」を参照)

(*(\r\n|[\r\n]))+{1,*}*

この表現で期待通りにマッチすると思います。
後は、置換スタックに格納して、変換してあげてください。
改行が見つかったときに、$SET で置換スタックに半角空白を格納するのがポイントです。

522:think ◆MM0nnAOCiQ
07/03/12 02:38:10 zgeKaTdr0
今更ですが。

title要素内の「空白」と「改行」は同様に「空白としてWebブラウザに解釈される」ので、ブラウザの挙動を変更したいのなら、ご希望のフィルタは期待通りに動作しません。
今回は別の意図が質問者さんにあるのかと思っていたのですが、やはり、気になってしまいました…。

523:511
07/03/12 06:33:53 /2yG7ZeG0
thinkさんのレスを参考にして、title要素内の改行をスペースに置換するフィルターを作りました。

[Patterns]
Name = "Opera History Saver"
Active = TRUE
Multi = TRUE
Bounds = "<title(\s*|)>*</title>"
Limit = 256
Match = "(\#(\r\n|[\r\n])$SET(\#= ))+\1"
Replace = "\@\1"

これで適切なのかどうか不安ですが、テストをした限りでは私の望み通り働いてくれます。
thinkさんありがとうございました。


なぜtitle要素内の改行を空白に置換したかったのかといいますと…

Operaの履歴ファイルがたまに破損するから調べてみると、原因はタイトルに含まれる改行らしい。
そこで、Proxomitronを使って、改行を空白に置換してしまえと思ったわけです。

でもですね、もっとよく調べてみると、メディアタイプがapplication/xhtml+xmlの場合において
タイトルに改行を含むと履歴ファイルが破損するらしく、text/htmlならセーフみたいなんです。

だからHTTPヘッダーフィルターでapplication/xhtml+xmlをtext/htmlに書き換えれば済む話でした。
せっかく作った "Opera History Saver" ですが、存在意義がなさそうです…。

524:名無しさん@お腹いっぱい。
07/03/12 12:32:18 sFZoAlND0
以前このスレでYahooBlog検索の右側にあるニュースとかを消すフィルターを作ってもらったものですが

Name = "test"
Active = TRUE
URL = "blog-search.yahoo.co.jp/"
Limit = 50
Match = "(<!-- [%b1][%a6]\w --> )\1<td [^>]+>$SET(#=\1<td style="display: none;">)"
Replace = "\@"

これがいつのまのか通用しなくなってしまいました。どこをどう変えればいいのかご教示してくれれば幸いです。

525:名無しさん@お腹いっぱい。
07/03/12 12:55:47 tVcyCE360
IEが受け取れないメディアタイプを指定するほどのニッチなウェブサイトがタイトル要素に改行を含めるなんてなかなか飲み込めない話だね。
もしかしてインデントでもしてるのかな。
どちらにしろそんなウェブサイトは見る価値がないだろうと思うのでURL killfile.txtに追加するのも一つ。
<title>
  タイトル
</title>

526:名無しさん@お腹いっぱい。
07/03/12 14:44:55 aCYQ5JIW0
>>485
>もう一つだけど最初のうちはアスタリスクを乱用しないほうがいい。
>初心者にとってのアスタリスクというのはおそらく面倒なことをブラックボックスに詰め込ん>>でどっかにやるためのツールなんだろうけど
>それじゃ何も上達しないし理解もすすまないだろう。
>>(*href=$AV(\1)*|)&(*title=$AV(\2)*|)
>これなんかはアスタリスク乱用の好例だね。

Tips and Tricks
URLリンク(www.pluto.dti.ne.jp)
アンパサンド「&」を使用すれば、タグの属性を、見つけた順番に関係なく
取り込むことができます。
たとえば、「<img ... >」タグを書き換えて、あなたが持っている画像と置き換え、
元の「width」と「height」の値はそのまま残す、という例を考えてみましょう。
その場合、以下のようにします...
Matching: <img ( (*(height=\w)\1*| ) & (*(width=\w)\2*| ) ) >

この表現真似したんだろ。少し意地悪過ぎないか?

527:511
07/03/12 21:51:58 xzItuT7B0
>>525
私のOperaの履歴が破損する原因だったサイトは―こんな言い方するとそのサイトが悪い見たいだけど、
もちろん悪いのはOperaのバグ―IEからのリクエストが来たらtext/htmlを吐くように配慮しているサイトでした。

ところで「ニッチなウェブサイト」って何でしょう。

528:名無しさん@お腹いっぱい。
07/03/12 23:09:22 Xw0bZVnJ0
>ニッチ【niche】
>西洋建築で,壁面を半円または方形にくぼめた部分。
>彫刻などを飾ったり噴水を設けたりする。壁龕(へきがん)。
>転じて,広く,隙間をいう。

スキマ産業的Webサイト???

529:名無しさん@お腹いっぱい。
07/03/12 23:26:51 Tn7hpqvH0
ニッチもサッチもどうにもこうにもブルドッグ

530:名無しさん@お腹いっぱい。
07/03/12 23:30:23 IhbXMcJV0
>525 URLリンク(www.faireal.net)
application/xhtml+xml の際のソース参照。

531:名無しさん@お腹いっぱい。
07/03/13 02:12:22 O2zL+zL90
google imageまたダメになった?

532:名無しさん@お腹いっぱい。
07/03/13 02:35:52 mu+tlPQe0
>>531
Google Image: Image Change (070115)だったら
<a href="\+e\+b.m\+"><imgを
<a href="\+e\+b.n\+"><imgにすればいいよ

533:名無しさん@お腹いっぱい。
07/03/13 02:38:39 O2zL+zL90
>>532
おお、ありがとう。

534:名無しさん@お腹いっぱい。
07/03/13 13:37:19 6oKDUNzC0
>>524
とりあえず作り直してみた。

Name = "Yahoo blog search"
Active = TRUE
URL = "blog-search.yahoo.co.jp/"
Limit = 80
Match = "<td [^>]+>( <!-- [%a5][%c8])\1$SET(#=<td style="display: none;">\1)"
Replace = "\@"


535:名無しさん@お腹いっぱい。
07/03/13 19:16:45 POt57Fu+0
>>534
ありがとうございます・・・しかし私の環境では右側のキーワードの注目度、評判、ニュース記事などが消えませんでした。

URLリンク(blog-search.yahoo.co.jp)

536:名無しさん@お腹いっぱい。
07/03/13 22:36:25 +r6UlnCI0
xhtmlって要素内に改行入れちゃいけないの?

ってそんなことあるわけないか。

537:名無しさん@お腹いっぱい。
07/03/14 08:04:48 nHF3h8Zy0
>>535
トップページがEUCで検索した後のページがUTF8 …… なのか?
これで動くはず。

Name = "Yahoo blog search"
Active = TRUE
URL = "blog-search.yahoo.co.jp/"
Limit = 80
Match = "<td [^>]+>( <!-- [%a5][%c8][%a5][%d4])\1$SET(#=<td style="display: none;">\1)"
"|</head>$SET(#=<style>\n<!--\ntd#rightcol { display: none; }\n-->\n</style>\n</head>)"
Replace = "\@"


538:think ◆MM0nnAOCiQ
07/03/14 08:25:50 VvDEM1HD0
おはようございます。
最近、書くだけ書いて投稿を忘れてしまうことが多い気が…(汗)。遅レスですみません。

>>523
なるほど、そういう訳でしたか。

> これで適切なのかどうか不安ですが、テストをした限りでは私の望み通り働いてくれます。
比較的、良くできていると思います。少しアドバイスしますと

-- <title(\s*|)> を <title(\s[^>]+|)> に変更
アスタリスクは制限された領域でない限り、2つ連続で使わない方がよいです。
URLリンク(vird2002.s8.xrea.com)

-- \1 を \# に変更
置換テキストを \@ のみにできます。

-- Multi を外す。
私の書き方も悪かったのですが、このやり方はProxomitronHelp記述上の「再帰的なマッチングを使わない方法」です。
ヘルプ上のマッチという表現は「フィルタのマッチ」を指していると思われますが、私は「ある表現部分のマッチ」という意味で用いていましたので、ややこしくなっていました…。
Multiに依存しない表現を使う場合は、Multi を外した方が高速化されますし、誤爆を最小限に抑えられます。

539:think ◆MM0nnAOCiQ
07/03/14 09:16:00 VvDEM1HD0
>>536
br要素のことでしたら、XHTML1.1 でも使用できます。
<p> で括るべきところで <br /> を使うのはNGですが、論理構造にそってマークアップされていれば仕様上は問題ありません。
最も、「論理要素でないbr要素は非推奨」というポリシーの方もいるようで、それも納得できる話ですけど…。

余談ですが、XHTML2.0 では br要素 は廃止され、新しい要素として l要素 ("line"を意味し、空要素ではなくなります) が導入される見込みです。
ですので、前方互換性を考慮するなら、br要素は使わない方が良いと思います。

>>537
> トップページがEUCで検索した後のページがUTF8 …… なのか?
Yahoo!ブログ検索 - 「Proxomitron」の検索結果
URLリンク(blog-search.yahoo.co.jp)

↑の検索結果はEUC-JPで出力されているようですが、そのフィルタではコメント部分がマッチしていないようです。
つまり、<td ... id="rightcol"> へのスタイルのみが適用されているわけですが、これで必要条件を満たしているように思えます。

[%a5][%c8][%a5][%d4] をデコードしてみると、"トピ" となりましたがこれはどの部分にマッチさせようとしているのでしょうか?
Proxomitronによる改変前のhtmlソースを検索してみましたが、HITしませんでした。

540:名無しさん@お腹いっぱい。
07/03/14 14:35:09 2lOdeE9F0
>>537
完璧です!本当にありがとうございました。お手数をおかけしました。

541:536
07/03/14 18:17:41 72ybzZdr0
>>539
やはりOKでしたか、どうもありがとう。

542:名無しさん@お腹いっぱい。
07/03/14 18:49:24 PpkryFJv0
>>542
よっ大将!見事ですね。

543:名無しさん@お腹いっぱい。
07/03/15 04:00:02 ridcyRuU0
( ´ー`)。oO(…ぬう、何者かがいきなり自画自賛を・・・・)

544:537
07/03/15 12:43:08 M2i2oHhr0
>>539
> トップページがEUCで検索した後のページがUTF8 …… なのか?

↑ この文字コード云々……というコメントは全然関係なくて、自分の勘違いでした。


> つまり、<td ... id="rightcol"> へのスタイルのみが適用されているわけですが、これで必要条件を満たしているように思えます。

検索結果のページの右側の部分には <td valign="top" id="rightcol"> という風に idが振られているんですが、
トップページ URLリンク(blog-search.yahoo.co.jp) の同じ <td>タグの箇所にはidとかclassが無いんですよ。
それで仕方なく後続のコメント(<!--トピックス関連検索-->)にマッチするような書き方になりました。


545:名無しさん@お腹いっぱい。
07/03/15 13:02:15 M2i2oHhr0
そうそう、質問しに来たんですが……

URLリンク(www.amazon.co.jp)
たとえばこのページに行って、「マーケットプレイスに出品する」のボタンを押して、次の画面で
ALT + 1キーを押すと「商品説明」のフォームにフォーカスが行くようにしたいんです。
それで以下のようなフィルタを書いたんですが、上手くいきません。

Name = "test"
Active = TRUE
URL = "s1.amazon.co.jp/"
Limit = 100
Match = "(name=$AV(sdp-sai-condition-comments))\1$SET(#=accesskey="1" \1)"
Replace = "\@"

テスト画面ではちゃんとマッチするのですが、実際の画面ではマッチしてないようです。何が原因でしょうか?


546:think ◆MM0nnAOCiQ
07/03/15 20:22:58 ZDvtMegz0
>>544
トップページも考慮していたのですか。納得しました。

>>545
掲示されたフィルタをAmazonでテストしてみましたが、期待通りにマッチし、[Alt + 1] キーでフォーカスが移動しました。
インターネットキャッシュが残っているのではないでしょうか?

# そのままでも支障はありませんが、そのフィルタは置換スタックを使わなくとも、置換テキストに accesskey="1" を記述するだけで機能します

547:537
07/03/15 22:09:16 5Hl7rs480
>>546

>>545 のフィルタで上手くいきますか?

自分の環境では CTRL + F5 で強制リロードしても、「インターネットオプション」の
「インターネット一時ファイル」でキャッシュを削除しても変わらないです。

いったい何が悪いのやら……
ともかく、検証してもらってありがとうございました。


548:名無しさん@お腹いっぱい。
07/03/15 22:13:02 3+4y6iBM0
他のフィルターに邪魔されてるのかも。 デバックモードを試してみれば分かります。

549:think ◆MM0nnAOCiQ
07/03/15 22:47:52 ZDvtMegz0
>>547
ええ、動作の上でもhtmlソースを見ても正常動作を確認しています。

>548氏の指摘が当たっているかもしれませんね。
フィルタは早い者勝ちなので、ある範囲にフィルタがマッチすると他のフィルタがマッチできなくなります。
Multiを有効にすることでこの制限を外せますが、動作が重くなるのと複雑なロジックなので、このオプションはあまり使わない方がよいです。

550:名無しさん@お腹いっぱい。
07/03/15 22:59:36 5XjJlvKV0
アクセスキーは例えば、検索画面等で
[Mat] $NEST(<input\s,\0name=$AV((query|p|q)\1)\2,>)
[Rep] <input \0name="\1"\2 accesskey="1">

pはyahoo,qはgoogle

な感じで色々使えそうな気がする。

551:think ◆MM0nnAOCiQ
07/03/15 23:00:00 ZDvtMegz0
と、対処法を書き忘れました。

フィルタは上に配置してあるものの優先度が高いので、特定のURLにのみ適用させるフィルタ等、出来るだけ有効にしたいフィルタは上に配置してください。
基本的に、上に配置してあるフィルタから作用しますが、マッチングパターンによっては下のフィルタが先に働く場合もあります。
例えば、以下の状況があるとします。

---- htmlソース
<a href="URLリンク(test.com)

---- フィルタ
Name="test filter1"
Match="TestLink"

Name="test filter2"
Match="$NEST(<a\s[^>]++href=$AV(URLリンク(test.com)),</a>)"

「test filter1」は「test filter2」より上に配置しています。
但し、Proxomitronはファイルの先頭から1バイトずつ読み込んでフィルタに合致する状況かどうかテストしています。
ですので、初めにマッチするのはa要素から始まる「test filter2」です。
「test filter1」を優先させたい場合は、

Match="<a\s[^>]+>[^<]++TestLink"

と書きます。
「test filter1」と「test filter2」はa要素から始まるパターンを持っている事になります。
同じ状況のフィルタが2つある場合は、優先度の高いフィルタから働きます。

552:名無しさん@お腹いっぱい。
07/03/15 23:19:06 uLDWt/T60
>551
下に置いたフィルタが先にマッチする現象は、ずっと前から疑問に思ってた。
Proxomitron の仕様なのね。

フィルタを書き直すなどしないとだめなのか……。
優先度を設定することができるといいんだけど。

553:名無しさん@お腹いっぱい。
07/03/16 07:41:06 kg1cd2iM0
そいうのは「仕様」とはいわないだろ。

むしろどうしてそれを疑問に思えるのかが疑問なくらいに
至極当たり前の挙動だ。

554:名無しさん@お腹いっぱい。
07/03/16 09:13:53 +6j5jdaH0
いや、日本語としては「仕様」で間違ってないと思うけど。
>>552>>553がどういうニュアンスで捉えているか知らんが。

555:名無しさん@お腹いっぱい。
07/03/16 10:31:21 9J0GOQta0
まさに、仕様。

556:名無しさん@お腹いっぱい。
07/03/16 14:29:20 Lin+siRH0
仕様であってると思うよ。 これが至極当たり前の挙動と思ってるほうがおかしい。
検索アルゴリズムにはいろいろあるがオミトロンのこの方式はその中の1つでしかない。

557:名無しさん@お腹いっぱい。
07/03/16 14:30:04 8/GkMkD20
まぁ確かに

0 < 1 と評価するのはProxomitronの仕様なのね

みたいなこと言われたら
日本語として見ても主張の内容として見ても100%正しいけど
なんか妙だなって違和感は覚える

どちらの言いたいことも分かるが

558:think ◆MM0nnAOCiQ
07/03/16 18:53:48 Hi6v4zHb0
>>552
「現在のProxomitronの動作」と「>552氏が求めるProxomitronの動作」をまとめると以下のようになると思います。

---- 現在のProxomitronの動作 (以降、「動作A」とする)
1. ファイルの先頭の1バイト目から読み込み、優先度の高いフィルタから順番にテスト
2. 1バイト進み、優先度の高いフィルタから順番にテスト
3. 「3. の動作」をファイルの末尾([EOF])まで続ける

---- 「フィルタの優先度」を最優先した場合のProxomitronの動作 (以降、「動作B」とする)
1. ファイルの先頭の1バイト目から読み込み、「優先度の最も高いフィルタ」をテスト
2. 1バイト進み、「優先度の最も高いフィルタ」をテスト
3. 「2. の動作」をファイルの末尾([EOF])まで続ける
4. ファイルの先頭の1バイト目から読み込み、「前回テストしたフィルタの次に優先度の高いフィルタ」をテスト
5. 1バイト進み、「4. でテストしたフィルタ」をテスト
6. 「4. ~ 5. の動作」をファイルの末尾([EOF])まで続ける

ここで、フィルタテストに必要とするバイト数に注目してみてください。

動作A … 「フィルタテストするバイト数 = 読み込んだファイルのサイズ」
動作B … 「フィルタテストするバイト数 = 読み込んだファイルのサイズ×フィルタの数」

このことから、「動作B」はフィルタの数が多ければ多いほど、Proxomitronの動作が顕著に重くなるでしょう。
「動作A」でもフィルタの数が多いほど、Proxomitronの動作が重くなりますが、フィルタテストするバイト数はファイルサイズ分だけに留まるため、「動作A」の負荷は「動作B」程には大きくならないと想像できます。

日本語としては私も「仕様」であっていると思いますが、上のところの内部事情を知っているか否かで見方が変わってきます。
特に、「フィルタの優先度」という表現は、如何にも「最優先されそうな設定」ですから、勘違いがあっても致し方ない気がします。

# 余談ですが、2chブラウザ「JaneDoe View」の ReplaceStr.txt は「動作B」に近い動作になっていると思われます。

559:名無しさん@お腹いっぱい。
07/03/16 20:42:00 HCDQ1kIb0
Jane板見たけど、結構大変そうなことやるつもりみたいだねぇ。
ガンガレ。

560:名無しさん@お腹いっぱい。
07/03/16 21:13:39 Lin+siRH0
JaneViewのReplaceStr.txtをオミトロン方式にしたら早くなるのではとViewスレに書き込んだら
複数の人に否定されたことがある。 何故なのか未だに分からない。

561:名無しさん@お腹いっぱい。
07/03/16 22:31:20 1wcXUPwP0
>558
ややっ、詳しい解説ありがとうございます。
そういう事情があると極めて妥当な動作ですね。
今後は、優先度を高くしたいフィルタは
ほかのフィルタと競合しても問題ないように努力します。

562:名無しさん@お腹いっぱい。
07/03/17 03:30:08 AadC9Up90
TOK2のWebスペースの広告が激しくUzeeeee!!
消すこと自体は簡単なんだが、
こちらが対応した数日~1週間後に10~数百バイトくらいずつ増やして、
バイト制限を潜り抜けてきやがる。
このまま増やし続ける気か(#゚Д゚)ゴラァ!

563:名無しさん@お腹いっぱい。
07/03/17 05:21:53 RWq7G/0N0
>562
自分の場合、limit は16384(16KB)になってる。
1回につき最低でも512バイト、最大で2KBくらい増やして、
いったい何回 limit を増やしたことか。

564:名無しさん@お腹いっぱい。
07/03/17 05:26:11 RWq7G/0N0
いま思いついたけど、

<!-- tok2_top --> → <div class="tok2-ad">
<!-- tok2_top_end --> → </div>
こんな感じで置き換えて、

div.tok2-ad { display: none !important }
こうすれば消える。
バイト制限を増やす必要がなさそうだし、動作も軽くなるかも。

565:名無しさん@お腹いっぱい。
07/03/17 11:02:34 HIHHgHWL0
>>560
あまり知らずに言ってるんじゃない?
手間と見返りを考えるとその価値があるかは別として、確かに悪くはなさそうな気はする。

566:560
07/03/17 12:29:59 MSvIFEtK0
>>565
どうなんでしょうね、検索アルゴリズムに詳しそうなレスを書く人ではありましたが
本当に詳しい人だったのか私には分かりませんでした。

567:名無しさん@お腹いっぱい。
07/03/17 13:22:55 AadC9Up90
>>563
自分は現在13160っす。

>>564
ユーザスタイルシートはキャッシュするからなぁ。
ソース見たときすっきりせんし。

568:名無しさん@お腹いっぱい。
07/03/17 18:08:19 MjkjkU7H0
BFilter
URLリンク(bfilter.sourceforge.net)
新顔ウェブフィルタープロクシらしい

569:名無しさん@お腹いっぱい。
07/03/17 18:37:53 jVQSctLy0
>>564 >>567
<noembed><nolayer><comment>で囲めばキャッシュしないはず。

570:名無しさん@お腹いっぱい。
07/03/18 07:59:30 s5Pb2Uih0
>>562
トクトクの人気ランキングに出てるサイトいくつか見たけど、そんなに広告だらけって感じでもなかったけど……


571:名無しさん@お腹いっぱい。
07/03/18 11:52:02 x92h/snR0
>>570
無料の方だよ。
人気ランキング上位は有料が多い気がする。

572:名無しさん@お腹いっぱい。
07/03/18 16:33:15 4oJ5D+yI0
URLリンク(www.1rk.net)
このサイトの広告を消すフィルターを作って頂けないでしょうか。
お願いします。

573:名無しさん@お腹いっぱい。
07/03/18 19:50:17 UeHdvFS20
URLの最後が.jpgで終わっててContent-Type: がimage/jpegで、中身が普通のhtmlになってると
WEBページフィルタ適応されないんですが対処方法ありませんか?

574:名無しさん@お腹いっぱい。
07/03/18 21:08:43 YcHYPNb90
>>562
とりあえず作ってみた。
広告部分にidが振ってあったのでCSSで消したよ。

Name = "TOK2"
Active = TRUE
URL = "[^/]++.tok2.com/$TYPE(htm)"
Limit = 120
Match = "(<script * </script> && *(prego.jp)*)"
"|</head>$SET(#=<style>\n<!--\n"
"#TOK2-TOP-BANNER, #TOK2-SIDE-BANNER, #TOK2-SEO { display: none; }\n"
"-->\n</style>\n</head>\n)"
Replace = "\@"


575:名無しさん@お腹いっぱい。
07/03/18 21:09:27 YcHYPNb90
>>572

Name = "1rk"
Active = TRUE
URL = "www.1rk.net/$TYPE(htm)"
Limit = 80
Match = "(<img *> && *(image.jpg)*)"
"|</head>$SET(#=<style>\n<!--\n"
".ad, p.ads, p.adw { display: none; }\n-->\n</style>\n</head>)"
Replace = "\@"


576:名無しさん@お腹いっぱい。
07/03/18 21:35:26 qf1arYv00
イメージファイルの中にアドビのタグ?が入っていると
誤爆するのを防ぐにはどうしたらよいですか

577:名無しさん@お腹いっぱい。
07/03/18 21:56:22 WywTxmu/0
>>573
Content-Type: をimage/jpegからtext/htmlに置換するフィルタで対処。
URL欄を使ってフィルタが動作するサイトを絞ってから使うといいよ。

[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Type: image to html (In)"
URL = "www.hoge.com/"
Match = "image/jpeg"
Replace = "text/html"

>>576
画像ファイルはデフォルトではフィルタリング対象外のはず。
その画像を見れば対策方法が分かるかも。

578:ROMラー
07/03/18 23:52:16 WywTxmu/0
>>506
これで期待通りに動くようです。

# NoAddURL

(#?+)\9$URL(\8)$SET(ABS=\8\9)

./(?+)\9($TST(SWITCH1=1)$SET(ABS=$GET(CURRENTURL)\9)|
$URL(([^:]+://*/([^/]+/)+)\8)$SET(CURRENTURL=\8)$SET(SWITCH1=1)$SET(ABS=\8\9))

/(?+)\9$URL(([^:]+://*/)\8)$SET(ABS=\8\9)

../($TST(SWITCH2=1)$SET(NUM=$GET(LEVEL))|$URL([^:]+://*/$SET(NUM=1)
([^/]+/$LST(increment))+)$SET(SWITCH2=1)$SET(LEVEL=$GET(NUM)))
($LST(decrement)../)+$URL(([^:]+://*/([^/]+/$LST(decrement)
$TST(NUM=[^0]*))+)\8)(?+)\9$SET(ABS=\8\9)

([a-z]+:?+)\9$SET(ABS=\9)

(?+)\9$URL(([^:]+://*/([^/]+/)+)\8)$SET(ABS=\8\9)

579:名無しさん@お腹いっぱい。
07/03/19 00:42:49 tQMpuigO0
>>575
遅くなりましたが、ありがとうございます。

580:名無しさん@お腹いっぱい。
07/03/19 00:45:50 NXCUdEyC0
本スレが不毛な言い争いの場に…

DOCTYPE宣言があればそのまま、無ければ付加ってフィルタを作ろうと思ったのに
前者が実現できなくて問答無用に付加されてしまう
有効リストなり無効リストなりを作ってマッチさせる手もあるけど
それじゃ汎用性が落ちるからなぁ

581:ROMラー
07/03/19 00:48:14 7ZzHzeuq0
>>506
$GET(ABS)と\8\9が一致しない原因は以下のフィルターを試せば分かります。
テストウインドウに"abc"と書いて下の3つのフィルターを試して下さい。

Name = "$SET test1"
Active = FALSE
Limit = 256
Match = "*"
Replace = "<match>"

Name = "$SET test2"
Active = FALSE
Limit = 256
Match = "*$SET(\0=text)"
Replace = "<match>"

Name = "$SET test3"
Active = FALSE
Limit = 256
Match = "?+$SET(\0=text)"
Replace = "<match>"

1と2の違いは$SET(\0=text)が付いてるかどうかの違いしかありませんが結果が
変わっていると思います。 3では2で起きた問題を修正するために*を?+に書き換えています。

582:ROMラー
07/03/19 01:09:43 7ZzHzeuq0
>>506
何故こうなるかというと、*は後ろに何かがあれば最短一致として動作、無ければ
最長一致として動作するためです。 *の後ろに$SETコマンドがあると*は最短一致として
動作するようになってしまうので2のようにカラにマッチしてしまうわけです。
そこで後ろに何があっても最長一致をする?+を使うことでこの問題を回避しています。

>>580
こんな感じですかね。

Active = FALSE
Limit = 256
Match = "("
"(^(^ <!DOCTYPE))"
"|"
"$SET(0=<!DOCTYPE ....)"
")"
"$STOP()"
Replace = "\0"

583:580
07/03/19 06:43:35 NXCUdEyC0
>>582
お、これはありがとうごぜぇやす
ブックマークから適当に踏んで試してみたらXML宣言ありなページで誤爆したんで
回避する為に”(^(^ *<;!DOCTYPE))”に変えてしばらく使ってみるっす

そこでSTOPかけるのを思い付かんかったのと
宣言文に続く<HTML~まで見るようにしてたのが敗因か

584:名無しさん@お腹いっぱい。
07/03/19 18:06:50 WHlPa9sf0
>>577
ども
URL: Filter image extension をブラクラ用にオンにしてます
ログに Protect Contents except HTML が出てます

URLリンク(www.mxtv.co.jp) ここの画像がそうなります

585:名無しさん@お腹いっぱい。
07/03/20 16:44:20 0LIwAOV50
Amazonの長ったらしいURLを短くするフィルターありませんか?
こんな感じで

URLリンク(rag2ch.s151.xrea.com)

586:ROMラー
07/03/20 17:30:14 PPne+SNt0
>>584
Protect Contents except HTMLというフィルタが誤爆しているようなので
このフィルターを修正するしかないですが、ログを検索してみてもこのフィルターを
配布しているところが見つかりません。
よろしければここに貼るか、うpして頂けないでしょうか。

問題が起こるところがそのサイトだけならば (^([^/]++.|)mxtv.co.jp/) をそのフィルターの
URL欄の先頭に入れれば回避出来ますが、根本的な解決にはなりません。

587:名無しさん@お腹いっぱい。
07/03/20 20:49:41 PJkWD4Ws0
>>585
ヘボくてすんません、おかしかったら誰か直してやってください
勉強させていただきやす。

[HTTP headers]
In = FALSE
Out = TRUE
Key = "URL: Amazon URI Simplizer alpha.1.3.1"
URL = "www.amazon.co.jp/\w(ASIN(/|=)|obidos/|product/)[0-9A-Z]+{10}?"
Match = "*([0-9A-Z]+{10})\0"
Replace = "$JUMP(URLリンク(www.amazon.co.jp))$LOG(R[Amazon] URLリンク(www.amazon.co.jp))"

URLリンク(www.amazon.co.jp) じゃなくて
URLリンク(www.amazon.co.jp) に飛ばす仕様なんだけど
これだとまずいのかなぁ。飛べない商品とかあるかもしれない。
Amazonの仕様自体イマイチわかってないからそこも不安…。

588:名無しさん@お腹いっぱい。
07/03/20 23:25:12 4ptHUCsg0
>>585
www.amazon.co.jp/商品名/dp/*
という形式の商品名の部分が長くなる原因。
この商品名の部分は実は何でも良かったりする。削除しても良し。
これをを削除するだけなら>>587を改造してこうすれば良いと思う。

[HTTP headers]
In = FALSE
Out = TRUE
Key = "URL: Amazon URI Simplizer (out)"
Match = "URLリンク(www.amazon.co.jp)
Replace = "$JUMP(URLリンク(www.amazon.co.jp))"

589:名無しさん@お腹いっぱい。
07/03/20 23:33:47 0LIwAOV50
>587-588
ありがとうございました。
俺もそろそろ自分でフィルター作れるように勉強しないとな・・

590:名無しさん@お腹いっぱい。
07/03/21 00:13:13 1/lCY91m0
>>588
dpでいけるんですか…!

591:名無しさん@お腹いっぱい。
07/03/21 00:53:03 1/lCY91m0
ん、あれ?dpの商品名部分が削れればそれでOK?
>>587だと、(私の知る限りの)全ての形式のURIに対応、
かつASIN以降を全て消し去るという方向で書いてます。
お好きな方をお好みで、かな。

と思いきや、肝心の/dp/に対応してなかったので修正。
その他、商品画像ページ対応、ジャンプ先URIを更に短縮など。

[HTTP headers]
In = FALSE
Out = TRUE
Key = "URL: Amazon URI Simplizer alpha.1.4 (out)"
URL = "(www.|)amazon(.co|).jp/\w((ASIN|obidos|dp|product(/images|))(/|=))[0-9A-Z]+{10}?"
Match = "*((images/|)([0-9A-Z]+{10}))\0"
Replace = "$JUMP(URLリンク(amazon.jp))"

アカウントサービス内での誤爆が一番恐い。
URIに含まれる文字列と[0-9A-Z]+{10}?でのASIN探しで
一応の防御はしてるつもりなんだけど。

592:名無しさん@お腹いっぱい。
07/03/21 01:05:18 d4dDjrEw0
>>591
せっかく作ってもらってるのに贅沢は言えません。
コピーする時に後ろ削れば良いだけですし、確かにASIN以降削れればよりよいことは確かですが

そのフィルターだとASINが「hoge1-hoge2-hoge3」と言う形式だと「hoge1」と認識してしまうようです
URLリンク(www.amazon.co.jp)
確認用

593:名無しさん@お腹いっぱい。
07/03/21 01:35:35 1/lCY91m0
>>592
これは恥ずかしい…。
URLマッチばっかり気にして実際のマッチを手抜きしてたのが原因でした。

[HTTP headers]
In = FALSE
Out = TRUE
Key = "URL: Amazon URI Simplizer alpha.1.4.5 (out)"
URL = "(www.|)amazon(.co|).jp/\w((ASIN|obidos|dp|product(/images|))(/|=))[0-9A-Z]+{10}?"
Match = "\w((ASIN|obidos|dp|product)(/|=))((images/|)([0-9A-Z]+{10}))\0"
Replace = "$JUMP(URLリンク(amazon.jp))"

まだまだ弄ってみたら、今のところ不具合が
・ユーズド商品関連に対応できない
・商品画像ページで他のカラーが見れない
どんどん冗長になってくし、やっぱり>>588ぐらいシンプルな方が
機能的にも精神衛生的にもいいみたいです。勉強になりました。

594:think ◆MM0nnAOCiQ
07/03/21 01:55:04 lHqDQGV30
Amazonの商品紹介ページ(URL)をいくつか見ました。
どうやら、/dp/ の手前は「メーカー名-商品型番-備考」で構成されているようなので、以下の形でどうでしょうか?

[HTTP headers]
In = FALSE
Out = TRUE
Key = "URL: Omit Amazon URL [2007/03/21] test1"
Match = "http://(www.|)amazon.(co.|)jp/[\%0-9a-z]+{1,*}(-[\%0-9a-z]+)+{1,*}/(dp/[^/]+/)\0"
Replace = "$JUMP(URLリンク(www.amazon.co.jp))"

# 商品紹介(ASIN)
URLリンク(www.amazon.co.jp)商品コード/...
 ↓
URLリンク(www.amazon.co.jp)商品コード/

# リダイレクタ
URLリンク(www.amazon.co.jp)商品コード%25...
 ↓
URLリンク(www.amazon.co.jp)商品コード/

他にも亜種がいくつかあるようですが、最近は /dp/ に統一しようとしている流れに見えますね。

595:名無しさん@お腹いっぱい。
07/03/21 04:23:54 pz60mXe50
タブブラウザでJavascriptが有効だとアドレス短くならないよね?
IEだと短くなるね

596:名無しさん@お腹いっぱい。
07/03/21 19:42:09 /5cB5deu0
>>593-594
ありがとうございます。便利になりました。
私はこれで十分ですが発見した不具合でも

・Amazon外部からのURLが反応しない
>>593はページを右上の「Would you like to see this page in English?」が効かなくなる
(ただし、外部から飛んできた時これをクリックするとURLが短くなるので英語を必要としない場合逆に便利)
URLリンク(www.google.co.jp)
確認用

597:名無しさん@お腹いっぱい。
07/03/21 22:05:22 xaNVUTV40
アマゾンのアフィリエイトをやっている身としては、
アソシエイトIDまで削られるのは遺憾だな。

598:名無しさん@お腹いっぱい。
07/03/21 23:22:57 NszwPh7m0
オミトロン使うような奴ならアフィは全殺しするだろ・・・常識的に考えて

599:名無しさん@お腹いっぱい。
07/03/21 23:30:02 8H5gmtUL0
確かアフィIDを指定のものに書き換えるフィルタっていうのも以前あったな

600:名無しさん@お腹いっぱい。
07/03/22 00:55:58 fq9nmX0b0
アマゾンのアフィリエイトは真っ先に殺す。

601:名無しさん@お腹いっぱい。
07/03/22 08:11:08 LPlM1PA70
アフィが見えなくなるのは別に構わないけどさ、
でも自ら進んで踏んだものは有効にしようよ。

602:名無しさん@お腹いっぱい。
07/03/22 16:25:24 uFlrt95P0
htaccessを無効にするフィルタ希望
ていうかURLリンク(karen.saiin.net)を表示させるフィルタ希望

603:名無しさん@お腹いっぱい。
07/03/22 16:37:01 IfmMON990
( ゜σ・・ ゜) ホジホジ

604:名無しさん@お腹いっぱい。
07/03/22 16:58:02 h6gQqGsT0
>>602
Content-Encoding: text/html; charset=csiso2022kr

605:名無しさん@お腹いっぱい。
07/03/22 17:12:43 IfmMON990
つ SJIS

606:名無しさん@お腹いっぱい。
07/03/22 20:49:05 i23UPNfh0
>602に行ってみたけど、
ヘッダで文字コードを詐称されると、フィルタがまったく効かなくなるね。
これは Proxomitron を無効化させるための手段になる。危険だな。

607:名無しさん@お腹いっぱい。
07/03/22 21:03:40 HF+LFNrU0
変なContent-Encodingは消したほうが良いみたいだな
gzip, chunk 以外知らんけど

608:名無しさん@お腹いっぱい。
07/03/22 21:10:10 CuyAqdZm0
>>599
それ教えて( ゚д゚) ホスィ・・・

609:名無しさん@お腹いっぱい。
07/03/22 21:43:52 h6gQqGsT0
>>602
[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Encoding: Kill Content-Encoding (in)"
Match = "*"

[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Type: Kill charset (in)"
Match = "text/html; charset="
Replace = "text/html;"

>>606-607
ですね。

610:名無しさん@お腹いっぱい。
07/03/22 22:24:29 LqIcExhd0
Match = "(^gzip|x-gzip)?"
とかにしとかなくていいの

611:名無しさん@お腹いっぱい。
07/03/22 22:57:21 h6gQqGsT0
>>610
URLリンク(www.youtube.com)
駄目だ、これ開いたら一面文字だらけになった。

612:名無しさん@お腹いっぱい。
07/03/23 00:57:41 zEKCeVAb0
文字コード詐称されてフィルターが効かないと言う状態なら
ブラウザも正しく認識出来ないのだからどっちにしろ危険は無いんじゃないのか?

613:名無しさん@お腹いっぱい。
07/03/23 16:29:48 3Pg7luNE0
オミトロン装備してるとどうも一部の頁が西ヨーロッパ言語になってしまうんだが、どうすればいい?

614:名無しさん@お腹いっぱい。
07/03/23 16:33:29 3Pg7luNE0
すまない。スレ違いだった。

615:名無しさん@お腹いっぱい。
07/03/23 21:25:45 +CQ+E6V20
>>609
駄目だった・・・

616:think ◆MM0nnAOCiQ
07/03/24 14:25:23 Vct6LEbc0
>>602,615
こちらの環境では、「>609の "Content-Type: Kill charset (in)" を取り入れて、JavaScriptを有効に」すれば、支障なく閲覧できています。
万が一問題があるようでしたら、以下のフィルタを取り込んでみてください。

[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Type: Fix g-kaizou charset (in) [2007/03/24]"
URL = "karen.saiin.net/~g-kaizou/"
Match = "text/html; charset=(^shift_jis|euc-jp|iso-2022-jp|utf-(8|16))"
Replace = "text/html; charset=shift_jis"

617:think ◆MM0nnAOCiQ
07/03/24 14:38:04 Vct6LEbc0
>616の続き。

Content-Typeヘッダの不正が原因なわけですが、Firefox, Opera9 (IE6, IE7 は [日本語(自動選択)] にチェックONで正常に閲覧可) で閲覧不可では少なからず訪問者を逃がしてしまいます。管理人の運営方針にもよりますが、サイト側の問題と受け取れると思います。
当分は、Proxomitronで凌ぐとしても、サイト運営者に報告しておいた方がお互いの益になるのではないでしょうか。

該当Webサイトのトップページには

-------------
2007年3月18日
なぜか全ページが文字化け(原因不明)
-------------

とあるので、運営者は原因を把握していないと思われます。
おそらく、htaccess に

AddType "text/html; charset=csiso2022kr" .html .htm

の記述があるので、これを

AddType "text/html; charset=shift_jis" .html .htm

に変更すれば、問題は解消されるでしょう。
…ということを運営者に報告してあげてください。

文字化け対策としての.htaccess
URLリンク(www.shtml.jp)
@IT:Javaの文字化け対策FAQ(1)
URLリンク(www.atmarkit.co.jp)

618:think ◆MM0nnAOCiQ
07/03/24 15:26:50 Vct6LEbc0
問題提起されている件は、

Content-Encoding: text/html; charset=csiso2022kr

でProxomitronフィルタが無効になるという現象ですね。

# Content-Typeの方はフィルタの挙動とは無関係のようです。
# 何より、Content-Typeヘッダを意図的に不正にするとWebブラウザでの閲覧の支障が出るので、そういう設定にされる可能性は低いと思います。

で、この

Content-Encoding: text/html; charset=csiso2022kr

という記述は、正しい書式なのでしょうか?
よく解らないなりに、調べてみると以下の文献が見つかり、

-----------------
内容コーディングは、section 3.5 にて定義されている。使用例を見よ。

HTTP/1.1: ヘッダフィールド定義 - 14.11 Content-Encoding
URLリンク(www.practical-lamp.com)
-----------------
最初は、登録機構は以下のトークンを登録している。... gzip, conpress, deflate, identity

HTTP/1.1: プロトコルパラメータ - 3.5 内容コーディング
URLリンク(www.practical-lamp.com)
-----------------

とあるので、少なくとも>602のWebサイトの出力するContent-Encodingヘッダの書式は誤っているような気がします。


619:think ◆MM0nnAOCiQ
07/03/24 15:28:47 Vct6LEbc0
>618の説が正しいとすると、Content-Encodingヘッダも運営者側で修正する方が望ましいので、サイト運営者が .htaccess から

AddEncoding "text/html; charset=csiso2022kr" .html .htm

を削除するという配慮があると有り難いですね。(書式は少し自信がないです…。)


あえて、Proxomitron排除のために残すというサイトがあった場合は、以下のフィルタで回避できる…と思います。

[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Encoding: Kill faulty value (in) [2007/03/24]"
Match = "(^gzip|compress|deflate|identity)"

620:名無しさん@お腹いっぱい。
07/03/25 00:39:47 U32bBhWY0
乙。 httpd.confも疑ったほうがいいですな。

>>619
Content-Encodingヘッダが無い時でもマッチしてしまうようだ。

621:名無しさん@お腹いっぱい。
07/03/25 00:44:01 ykWCl22f0
Match = "(^gzip|compress|deflate|identity)?+"

622:think ◆MM0nnAOCiQ
07/03/25 01:03:18 sQ09AHw80
>>620-621
レス有難う御座います。
>621を取り込ませていただきました。m(_ _)m

[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Encoding: Kill faulty value (in) [2007/03/25]"
Match = "(^gzip|compress|deflate|identity)?"

> httpd.confも疑ったほうがいいですな。
>602は自宅サーバじゃないようなので、httpd.conf を編集する権限がないと思います。多分…。

623:名無しさん@お腹いっぱい。
07/03/25 01:43:58 U32bBhWY0
メンテの後文字化けしたんじゃなかったっけ? 運営側が何かやらかしたのでは。

624:think ◆MM0nnAOCiQ
07/03/25 02:57:05 sQ09AHw80
>>623
その可能性には思い至りませんでした。
ざっと調べてみたところ、同サービスの他のサイトでは同様の症状(Content-Type, Content-Encoding 含めて)が発生していないようです。

Google検索: site:saiin.net
URLリンク(www.google.co.jp)

一部のサイト(サーバ)だけ設定が誤っている可能性も否定出来ませんが…。

625:think ◆MM0nnAOCiQ
07/03/25 03:26:51 sQ09AHw80
何にしても両方チェックしておくに超したことはないですね。

その辺りも加味して、>602のサイトへ報告しておきました。

626:名無しさん@お腹いっぱい。
07/03/25 11:34:40 civrXBG40
ローカルに保存したhtmlをこれを通して閲覧する方法はありますか?
極力改変を加えずに保存し、閲覧時には無駄な広告やflashへのリンクを
殺して動作を軽くしたいです。

627:think ◆MM0nnAOCiQ
07/03/25 13:44:12 sQ09AHw80
>>626
URLコマンドの file// がありますが、ローカルファイルに対して常にProxomitronを通すには他のユーティリティを利用しないと無理だと思います。
URLリンク(www.pluto.dti.ne.jp)

他に、ローカルにWebサーバを立ち上げる方法があります。



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch