したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

テストその2

1名無しさん:2002/11/28(木) 00:05
テストその2

226 ◆/vmukiyuzw:2015/02/19(木) 23:28:25
>>225
訂正。Live2chでは差分取得がうまく動きませんでした。
fiddlerスクリプトで差分取得かどうかを判定してレスポンスコードを書き換える場合

HTTP/1.1 206 Fiddeled

みたいなレスポンスになるんですがLive2chはそれを受け付けてくれないような?
(一般的には「206 Partial content」とかになる)

227 ◆/vmukiyuzw:2015/03/02(月) 00:55:46
htmltodatのfiddlerスクリプトなんですが、2点ほど壁にぶつかっていました。
・メール欄に全角文字が書かれていると文字化けする
・名前やレス本文にメールアドレスが書かれているとスレが壊れる

どちらもCloudFlareのemail-protection処理に起因する問題なのですが
なかなかやっかいでちょっとお手上げ状態で放置していました。
ところが、このemail-protection処理により2ch自体のread.cgiでも
スレが壊れたりセキュリティホールが発生したりという事態になって
emai-protectionは外されることになったようです。
よって、目の前の壁は勝手にどいてくれたかなという感じです。

これによってやれることはまだできたかなと思うのですが
まだまだ状況は流動的ぽいのでしばらくは様子見ですかね。

228名無しさん:2015/03/02(月) 04:03:37
ということはそのままで壊れなくなったってことか

229名無しさん:2015/03/02(月) 11:11:41
email-protection処理を無効化
変換は GET method だけ有効にする
で何となく動いている
当面これで乗り切れそう
ありがとうございます

230名無しさん:2015/03/19(木) 04:25:09
レス1だとレス取得が壊れることがあるのですが、
>>225はhtmltodatByFiddler1.03のどこにコピペすればいいんでしょうか?

231 ◆/vmukiyuzw:2015/03/19(木) 21:15:27
>>230さん

>>225のレスはhtmltodatByFiddlerについてのものではなく
http://anago.2ch.net/test/read.cgi/software/1424147714/19 さんの書かれた
スクリプト(以下19スクリプトと略す)についてのものだったんです。

で、19スクリプトのどこにコピペすればということになるんですが、
人の書いたスクリプトにケチをつけるようでなんなんですが
このスクリプトはhtmltodat変換の精度にやや問題があるような。
(メール欄の内容が失われたりレス本文の一部が特定の条件で欠けたりします)

ので、19スクリプトのまずい部分を修正するより、htmltodatByFiddlerに
差分取得ロジックを移植するほうが楽だし問題も少なそうなので
そうすることにしました。
次レスに続く。

232 ◆/vmukiyuzw:2015/03/19(木) 21:22:30
htmltodatByFiddlerを更新しました。(ver 2.00)
 ・差分取得に対応
 ・メール欄デコード処理は不要になったので削除
 ・USER-AGENTでのmonazillaの判定を外す
  (USER-AGENTを変更しても問題ないように)

readmeにも書いたのですが、
前バージョンまでで対応していなかった差分取得に対応しました。
ただ、その対応のためにdat変換処理を修正する必要があったため、
前バージョン以前を使って取得済みのログを更新しようとするとログ破損状態に
なってしまいます。
申し訳ないですが再取得してください。
もしくは、前バージョンで問題が起きていない場合は今回のバージョンアップは
見送るのでもいいと思います。
(Jane系の専ブラ等は自力で差分だけを取れるようになっているので
前バージョンでも問題なく動いてるはず)

233 ◆/vmukiyuzw:2015/03/19(木) 22:04:10
まあ差分取得とか言ってますが実際には全レス取得してブラウザには差分だけ返す
疑似差分取得です。
一般的な専ブラならログをローカルに保存してそこからの差分をリクエストするような
方式で動作してると思うのですが、それと同じようなことをやろうと思うと
やはりローカルに何らかの形で情報を保存しておかないと実現できないと思うんです。
実際その方向で実装しようと試行錯誤してたときもあったんですが、いろいろと面倒だし
多少重くはあるけど当面はこの形で行こうかと。

しかし、他にも専ブラ用プロキシソフトはいろいろよさげなものが出てきて
htmltodatByFiddlerなんてもうお役目御免かなくらいに思ってたのですが、
Fiddler(実績のあるプロキシソフト)+ソース丸見えのFiddlerScript
ていう安心の組み合わせはそれなりにニーズはあるのかな?
ダウンロード数が跳ね上がっていてちょっとビビってます^^;

234名無しさん:2015/03/19(木) 22:32:41
htmltodatByFiddler1.03(32bitWin7Xeno150312)で
>>230に似た症状が自分も出てたんですが
2.00にしたら無事直りました
個人的に使いやすいのでとても助かってます
ありがとうございました

235名無しさん:2015/03/19(木) 23:09:26
更新お疲れ様です

お絵描き機能の(http://maguro.2ch.net/oekaki/とか)
タグ除去置いておきます
BE周りの処置を弄っただけですが

//oekaki対応
oBody = oBody.replace(/<img src="http:\/\/(o\.8ch\.net\/.+?)">/ig,"http://$1");
//ここまで

//BE周りの処置と変換後の//1レス目にタイトルを付加の間に入れてます

236 ◆/vmukiyuzw:2015/03/19(木) 23:47:58
http://jbbs.shitaraba.net/bbs/read.cgi/computer/1929/1038588508/831-832

私が作ったものではないので積極的には推せなかったのですが
htmltodat-convert2 がようやく日の当たる場に出た感じですか。よかった。
あと、したらば過去ログがJaneStyleで読めないって方には
>>219 みたいなのもありますのでお試しいただければ。

237名無しさん:2015/03/21(土) 00:24:04
使い始めました。
感謝、感謝です。

238230:2015/03/21(土) 06:49:39
>>231
ありがとうございました!

239 ◆/vmukiyuzw:2015/03/22(日) 19:28:21
http://jbbs.shitaraba.net/bbs/read.cgi/computer/1929/1038588508/835 さん

http://anago.2ch.net/test/read.cgi/software/1426858616/907
にもありますが、

> 117のスレのように本文が長いレスが大量にある場合に起こるようです。
> read.cgiはdatの半角スペースの連続を1つの半角スペースに置き換える処理を行っていますが
> これを途中でやめてしまうのが原因のようです。

これに加えて、プロキシからはread.cgiに対し同じリクエストを投げているのに
返ってくるレスポンスでは半角スペースの連続を省略したりしなかったり
一定しない。これで416が発生するようです。
(read.cgiの潜在バグかもしれない)

とりあえず対処としては、半角スペースの連続を省略する処理を組み込んでしまって
read.cgi側でブレが出ても影響ないようにすることかと思いました。

oBody = oBody.replace(/ +/g," ");

↑これを

oBody = oBody.replace(/^(.*?<>.*?<>.*?<>.*?<>$)/m,"$1" + title[1]);

の後あたりに挿入。

対応したバージョンは追ってアップします。

240835:2015/03/22(日) 20:12:27
>>239
さっそくの対応ありがとうございます。
追加しまして無事に206にて取得できております。
ありがとうございました。

241 ◆/vmukiyuzw:2015/03/22(日) 22:33:01
htmltodatByFiddlerを更新しました。(ver 2.01、1.04)
 ・特定のスレで更新時に破損ログとなってしまう問題の対処ととして
  連続する半角スペースを1個に省略するよう修正

変更した部分は>>239のみです。
ver 1.xxで不都合がなくてまだお使いの方もいらっしゃると思うので
今回はver 2.xx、1.xx両方について更新しました。

ただ、今回もdat変換処理に修正が入っているため、
前のバージョンを使って取得済みのログを更新しようとするとログ破損状態に
なってしまう可能性があります。申し訳ないですが再取得してください。
(今回は長文が多くレス容量が大きいスレが危ないような)

242名無しさん:2015/03/22(日) 22:59:39
>>241
ありがとうございます!
chaika+htmltodatByFiddler2.00でフリーズしたことがあったので、1.03使ってました。
1.03で安定しているので、1.04使わせていただきます。

243 ◆/vmukiyuzw:2015/03/23(月) 00:25:38
http://anago.2ch.net/test/read.cgi/software/1427009587/56

200で返ってくるけど本来は404なり302になるようなやつをはじけば
いいのかな?

if (title[1] == "2ちゃんねる error 3001"){
oSession.responseCode = 404;
return;
}

こういうの入れとけばCPUが上がるのは避けられるような

244名無しさん:2015/03/23(月) 00:28:25
>>241
お疲れ様です!

2.01にてCPUが100%になるという書き込みがありましたので、
一応報告させていただきます。

専用ブラウザを助けるプロクシ作らね?7串目 [転載禁止]©2ch.net
http://anago.2ch.net/test/read.cgi/software/1427009587/56

56 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/03/22(日) 23:03:22.23 ID:8oJm1s6h0
htmltodatByFiddlerでCPU使用率が上がるのは
「datが存在しません。削除されたかURL間違ってますよ。」のスレを開いたときかな

245 ◆/vmukiyuzw:2015/03/23(月) 00:34:25
あ、>>243

//スレのタイトルを取得
var title = oBody.match(/<title.*?>(.*?)<\/title>/mi);

の後ね。
ちょっといろいろ試して問題なければバージョンアップします。

246 ◆/vmukiyuzw:2015/03/23(月) 02:28:49
http://anago.2ch.net/test/read.cgi/software/1427009587/156

確かにそうなのでこんな感じに修正したほうがいいか

if (!oBody.match(/<dl /)){
oSession.responseCode = 404;
return;
}

眠いので続きは明日以降に

247 ◆/vmukiyuzw:2015/03/23(月) 22:40:55
htmltodatByFiddlerを更新しました。(ver 2.02、1.05)
 ・2ch側で削除済みのスレを取得しようとするとFiddlerのCPU使用率が上がってしまう問題の対処として
  エラーと思われるhtmlが返された場合にステータスコードを404とするよう修正

今回もver 2.xx、1.xx両方について更新しました。
変更した部分は>>246のみです。
今まで自力で修正していて、今回も自力で反映させたいという方は

var oBody = oSession.GetResponseBodyAsString();

の後あたりに挿入していただければいいと思います。

248名無しさん:2015/03/23(月) 22:48:48
>>247
ありがとうございます!

249 ◆/vmukiyuzw:2015/03/24(火) 01:47:38
うわ、今気づいた
http://mukiyu.g.ribbon.to/
のトップを更新するの忘れてましたわ・・・
「バージョン変わってないじゃん?おかしいな〜」
という方は再度ダウンロードしていただければ・・・
ごめんなさい。

250名無しさん:2015/03/24(火) 05:31:48
>>249
乙です
一番使いやすい串なので使っております

251名無しさん:2015/03/24(火) 10:12:13
>>249
更新乙です。
fiddler+わかりやすいスクリプトはやはりいい!
愛用させてもらってます。

ところでこちらで生成したdatはLast-Modifiedがないようですがこれは取得が難しいのでしょうか?
chaikaで書き込みする際にフォームエラーが返ってきます。
ひとまずは下記のコードを追加して問題なく動作はしていますが
正確なLast-Modifiedの値ではないのでちょっとモヤモヤします。
oSession.oResponse["Last-Modified"] = oSession.oResponse["Date"];

datの仕組みはよく知らないので的外れかも知れませんが
最終レスのDATEをLast-Modifiedに返せれば正確な値となるのかな?と思っております。

252 ◆/vmukiyuzw:2015/03/24(火) 23:52:26
>>251さん

> 正確なLast-Modifiedの値ではないのでちょっとモヤモヤします。
> oSession.oResponse["Last-Modified"] = oSession.oResponse["Date"];
>
> datの仕組みはよく知らないので的外れかも知れませんが
> 最終レスのDATEをLast-Modifiedに返せれば正確な値となるのかな?と思っております。

Last-Modifiedを使ってエラーチェックをしてるブラウザがあるとは寡聞にして知りませんでした。
うーむ、思うにhtmltodat変換をしてる時点で正確なLast-Modifiedは存在しないわけで
最終レスの投稿日時とて=Last-Modefiedとなるとも100%は限らない
(ほぼイコールになるだろうとは思いますが)と思うので
それをやったところでモヤモヤは残るのでは。というか気分の問題かもしれませんね。
とかいいつつ以下のようなのも書いてみました。

var arr1 = oBody.split("\n"); //各行にばらす
for (var i = arr1.length - 2; i >= 0; i--){ //最終行が1001だと投稿日時が取得できないため後ろからなめる
var arr2 = arr1[i].split("<>");
var t = arr2[2].match(/(\d+)\/(\d+)\/(\d+).*?(\d+):(\d+):?(\d+)?\.?(\d+)?/); //投稿日時取り出し
if (t){
if (!t[7]) t[7] = "00"; if (!t[6]) t[6] = "00"; //古いログでは秒やミリ秒は存在しないものがあるため
var d = new Date(t[1],t[2],t[3],t[4],t[5],t[6],t[7]);
oSession.oResponse["Last-Modified"] = d.toUTCString();
break;
}
}

この前書いた

oBody = oBody.replace(/ +/g," ");

の後あたりに挿入してください。というかこんなのは関数化したほうがいいんだろうな。
htmltodatByFiddlerへの取り込みはちょっと考えさせてください。

253251:2015/03/26(木) 01:37:24
>>252
返信ありがとうございます。
Last-Modefied自体が元々存在しないとなると
最終レスの日付から取得しても偽データということなんですね。
となると言いだしっぺの私が言うのもあれですが
たかがその為に冗長的なコード増やすのは無駄だと思われますし
chaika限定かつ個人的な問題ですのでhtmltodatByFiddlerへの反映は不要だと思います。

ちなみにせっかく書いて頂きましたコードを追加しましたところ
最終レス日時の1か月後の日時がLast-Modefiedに格納されて
Last-Modefied>dateとなり不整合で結局エラーとなりました。
ひとまずは現状のLast-Modified=Dateで問題もないので
後は書いて頂いたコードを参考に自分でもう少し勉強してみます。
ご教示ありがとうございました。

254251:2015/03/26(木) 18:14:39
Last-Modefiedが1ヶ月ズレる件、解決できました!
dateオブジェクトの月は0〜11で表さなきゃいけなかったんですね。
なのでt[2]を-1することで正常な最終レス日時を返すことが出来て書き込みも可能と希望通りの結果となりました。
私の自己満足に付き合って頂き本当にありがとうございました。

255名無しさん:2015/03/26(木) 22:49:13
差分取得のちょっとした改善案です。

html変換のdatサイズより途中まで取得済みの正規のdatサイズの方が大きいがため、
本来追記されるであろう残りのレスがなくあぼーん分岐してしまうのを可能な限り防げるかと思います。

まず以下をスレタイ取得の前後何れかに入れる。

// スレサイズを取得(取得したサイズの方が小さい時の保険)
var aSize = oBody.replace(/<font color=red face="Arial"><b>(\d+) KB<\/b><\/font>/mg, "$1");
var getSize = parseInt(aSize, 10) * 1024;

で、差分取得処理のサイズ判定を以下の様にする。

if (sbyte > bodylength){



if ((sbyte > bodylength) && (sbyte > getSize)){

以上です。

256名無しさん:2015/04/11(土) 16:30:11
>>255
ちゃんとスレサイズ取れてなかったので訂正

// スレサイズを取得(取得したサイズの方が小さい時の保険)
var aSize = oBody.replace(/<font color=red face="Arial"><b>(\d+) KB<\/b><\/font>/mg, "$1");
var getSize = parseInt(aSize, 10) * 1024;



// スレサイズを取得(取得したサイズの方が小さい時の保険)
var aSplitBody = oBody.split('<font color=red face="Arial"><b>');
var aSize = aSplitBody[1].split('\n')[0].replace(/(\d+) KB<\/b><\/font>/, '$1');
var getSize = parseInt(aSize, 10) * 1024;

257名無しさん:2015/04/11(土) 20:56:12
動作確認を行った環境は
Windows 7 Professional (x64) Build 7601
.NET Framework 4.5.51209(← regeditのVersion)
(でもFiddlerで確認すると、.NET 4.0.30319.34209と表示)
Fiddler v4.5.0.0
htmltodatByFiddler 2.02

作者さんありがとう

258名無しさん:2015/04/17(金) 21:26:42
htmltodatByFiddler 2.02 ありがたく使わせてもらっています
先日2chのスレでftp://が書き込まれたスレが取得できない状態になってしまいました
何らかの形で対応できないものでしょうか

259名無しさん:2015/04/17(金) 23:32:31
>>258
Fiddlerと2chの間にはCloudFlareがあってだな
2chのread.cgiのバグを修正しない限りCloudFlareが誤動作するんだ
これは端末のツールでどうこう出来る問題じゃないんだよ

260 ◆/vmukiyuzw:2015/04/17(金) 23:51:11
>>259さん、フォローありがとうございます。

>>258さん
一応状況は把握していて、何か逃げ道はないかと考えていたのですが
htmlを取得して変換するという仕組み上、そこでエラーになる状況であれば
完全に回避することは難しいと考えます。
(どのレスにftp://が書かれてるかは読んでみないと分かりませんしね)
現状ではAPI対応のプロキシもいろいろあるようなんで
そちらをお使いいただいたほうがよろしいかと。

しかし、2ch.net側としても
read.cgi経由(htmlプロキシだけでなく汎用のwebブラウザでも)で
読めない状況はまずいと思われるので
そのうち対応されるだろうと期待して様子見してるのですが。

261名無しさん:2015/04/17(金) 23:55:59
横からですが、
そのうち、netに書き込まれた全てのftp://のレスがあぼんされるんじゃなかろうか

262名無しさん:2015/04/19(日) 21:56:19
多分CloudFlare側の対応で、read.cgi経由でftp://が表示出来るようになったよ。

263名無しさん:2015/04/19(日) 21:57:58
おお、本当だ

264 ◆/vmukiyuzw:2015/04/19(日) 22:20:59
>>262さん
CloudFlare側の対応というより、read.cgiの修正(というか多分バージョンダウン)で直ったんだと思います。
汎用ブラウザでスレを見ると、書き込みのところの「お絵かきLOAD」のボタンがなくなってますので
・お絵かき機能を追加するバージョンアップのときにバグを仕込んでしまった
・問題が発生していない元のバージョンに戻した
てところではないかと。
ただ、MANGO板を含むmaguro鯖ではまだエラー出るようですね。
まあちょっと特殊な鯖みたいなんであまり気にすることはないかな。

http://jbbs.shitaraba.net/bbs/read.cgi/computer/1929/1038588508/884
の結果を受けて、Fiddlerのスクリプトにびんたんからの取得を検討していたところだったんですが、
とりあえず無駄な作業になっちゃう前に何とかなってよかった。

265名無しさん:2015/04/20(月) 01:50:53
>>264
read.cgiの対処なら、↓の表記が全く変わらないのも何だかなって感じだね。
バグってたときと同じver.&日付だし。

read.cgi ver 05.02.02 2014/06/23 Mango Mang&uuml;&eacute; ★

266名無しさん:2015/05/28(木) 00:24:43
こういうのってhtmltodatByFiddler2.02で大丈夫なんですか?


730 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/05/27(水) 15:13:18.45 ID:4WQWcUci0
「提督業も忙しい!」にセキュリティ問題、警察庁も注意喚起
http://www.itmedia.co.jp/enterprise/articles/1505/27/news061.html
[FiddlerCore] Startup() のオプションの話
http://www.cat-ears.net/?p=39957

専用ブラウザを助けるプロクシ作らね?10串目 [転載禁止]©2ch.net
http://anago.2ch.net/test/read.cgi/software/1428850227/730
http://anago.2ch.net/test/read.cgi/software/1428850227/737
http://anago.2ch.net/test/read.cgi/software/1428850227/743

267 ◆/vmukiyuzw:2015/05/28(木) 00:54:34
>>266さん
FIddlerCore.dllを使ったアプリでは、デフォルトでは
外部からのプロキシ接続を受け付ける設定になってて
このセキュリティ問題になってるようですね。
Fiddler.exeのデフォルトでは
Options - Connections - Allow remote computers to connect
がオフになってるので、まあそれを信用するなら大丈夫なんじゃないでしょうか。
そもそもルータ等でいらんポートを塞いでれば問題ない気もしますが。

268 ◆/vmukiyuzw:2015/05/28(木) 21:16:01
ちょっと説明が雑だったかもしれないので補足。

FiddlerCoreっていうのは、Fiddlerの機能からUIの部分を取っ払って
プロキシサーバ機能のみを提供するもので、
プログラマがアプリを作るのにプロキシ機能を使いたい、てときに利用できるものです。
(自分で1からプロキシ機能作るのは作るのは大変なので)

で、FiddlerそのものとFiddlerCoreには「外部からのプロキシ接続を受け付けるか否か」
のオプションがあるんですが、これが(デフォルト状態では)
 Fiddlerはオフ、FiddlerCoreはオン
なようです。
FiddlerCoreのほうのオプションはプログラマが適切に設定しなければなりませんが
Fiddlerのオプションはユーザが操作でき、かつ、特殊な目的でもなければ
わざわざオンにする人もいないと思われるので
特に問題はないのではないかと思います。

269名無しさん:2015/05/29(金) 02:45:48
>>267-268
おお、問題ないのですね
ありがとうございました

270名無しさん:2015/09/03(木) 12:34:39
一部の鯖でエラー出るread.cgi復活してるみたいね

271名無しさん:2015/09/03(木) 20:02:16
あ、そういうことなん?
何か数日前くらいから読み込めないスレがちらほら出始めたんだよね

272名無しさん:2015/11/13(金) 23:40:01
potato.2ch.netのread.cgiが吐き出す出力は構造が大きく変わった

273名無しさん:2015/11/14(土) 10:16:01
>>272
http://anago.2ch.net/test/read.cgi/software/1437650830/796
ここのレスが修正のヒントになるよ

274 ◆/vmukiyuzw:2015/11/15(日) 06:50:49
htmltodatByFiddlerを更新しました。(ver 2.03)
 ・2ch側で特定のサーバでread.cgiの仕様が変更されHTMLの形式が変わったため
  それに対応。

変更されたread.cgiに対応した正規表現はさほど難しくなかったのですが
当面(いつまで?)新旧のread.cgiが共存すると思われるため、
どっちのcgiにも対応できるにはどうするかちょっと悩みました。

また、今回もdat変換処理に修正が入っているため、
前のバージョンを使って取得済みのログを更新しようとするとログ破損状態に
なってしまう可能性があります。申し訳ないですが再取得してください。

それと、ver 1.xx系列を合わせて保守するのはちょっとしんどいなと思えてきたので
今後はver 2xx系列だけでいかせていただけないかと思います。

275名無しさん:2015/11/15(日) 08:33:12
>>274
お絵描きのimgタグ除去は、新cgi関係なく共通なんだけど。

276 ◆/vmukiyuzw:2015/11/15(日) 22:50:30
>>275
ご指摘ありがとうございます。修正しました。(ver 2.04)
 ・お絵かき機能のimgタグの除去処理の場所を修正

277名無しさん:2015/11/16(月) 01:59:29
>>276

助かったよ、ありがとう!

278名無しさん:2015/11/16(月) 12:38:12
>>276
今のところ順調に動いてます
ありがとう

279名無しさん:2015/11/17(火) 13:44:42
こっちの問題じゃないんですが
read.cgi ver 06.0.0 には ttp: から始まるリンクに対しておかしなアンカーを生成するバグがある模様
真正の dat とバイト数が大幅に合わなくなる原因になるので一応書いておきます

280279:2015/11/19(木) 09:01:16
jump.2ch.net を呼ぶようになったので特別な対策は要らなくなりました
read.cgi が安定するにはしばらく時間がかかりそう

281名無しさん:2015/11/19(木) 23:47:05
>>244が再発してますね

282 ◆/vmukiyuzw:2015/11/20(金) 22:56:43
>>281さん
ご指摘ありがとうございます。修正しました。(ver 2.05)
 ・「datが存在しません」のレスポンスが返ってきたときの判定を修正

read.cgi 06系では「datが存在しません」の場合に
どういうレスポンスが返るのかよくわからなかったので
判定条件を適当に修正しちゃってバグを仕込んでしまいました。
とりあえず当面のread.cgi 06系の吐くHTMLでは
元の判定条件で大丈夫だと確認しましたので修正(というか元に戻す)しました。
>>243-247あたりも参照)

283名無しさん:2015/11/20(金) 23:48:44
>>282
対応ありがとうございます
バグは直りましたが今度はread.cgi 06が404になってしまい読めなくなっています

284 ◆/vmukiyuzw:2015/11/21(土) 00:30:43
>>283さん
失礼しました。テストが不十分でした。
一応修正したつもりのバージョン。(ver 2.06)

まだまだread.cgi 06系の仕様が読み切れてないので試行錯誤中です

285名無しさん:2015/11/21(土) 00:56:15
>>284
読めるようになりました
どうもありがとうございました!

286名無しさん:2015/11/30(月) 20:05:41
>>284
何か最近読めないページが出てきたな・・・
と思ってたら2.06でいけるようになりました。ありがとう

287名無しさん:2015/12/04(金) 23:33:54
なんか新着レスのとこで「ここ壊れてます」になります。
新スレ取得でもなぜかレスの2が壊れます。
多分、これだと思います。

対処よろしくお願いします。

119 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/12/04(金) 19:14:30.15 ID:q3g2YXGo0
まぐろ鯖のread.cgiで>>1に<br><br><div class="banner">から始まる広告が入った

専用ブラウザを助けるプロクシ作らね?15串目
http://potato.2ch.net/test/read.cgi/software/1448272459/119

288 ◆/vmukiyuzw:2015/12/05(土) 01:09:44
>>287さん
とりあえず修正してみました。(ver 2.07)
今回の対処は広告バナーを除去するようにしただけです。

若干説明したいことがあるのですがもう眠いのと
明日から用事が立て込んでるのでまた改めて。

289名無しさん:2015/12/08(火) 13:05:21
俺環かもですが例のレス内広告、BBSPINKではところどころ改行されててうまく取得できないようです
よく見ればすべてタグで括られてるので

replace(/<br><br>\n(?:<[^>]*?>\n?)*?<dt>/g,"<br><br>\n<dt>")

に変更したところ問題なくなりました
再検証のうえで修正版をお願いします

290名無しさん:2015/12/08(火) 16:39:30
>>288
いつもありがとうございます

>>289
replace(/<div class="banner"[\s\S]*?<\/div><br><br>/,"")

俺はこうしたけど正規表現はあまり詳しくありませぬ

291 ◆/vmukiyuzw:2015/12/08(火) 21:12:46
修正しました。(ver 2.08)

>>289さん、>>290さんご指摘ありがとうございます。
今回は、前バージョンからの修正が少なく互換性の検証が容易だった
>>290さん案を取り入れさせていただきました。

292名無しさん:2015/12/08(火) 21:50:51
>>290
そっちの方がシンプルですね

>>291
修正ありがとうございます


正規表現、俺もようわからん
「.*」も「[\s\S]*」もマッチするのは基本的に同じはずだけど
とりあえずサクラエディタ上でテストしたら「.」、「[\s\S]」と一文字だけを指す場合は前者は改行文字にはマッチしなかった


これ以上はスレチになるので退散

293名無しさん:2015/12/11(金) 09:59:26
新 read.cgi でも広告入るようになった

294名無しさん:2015/12/11(金) 16:43:27
>>293
05用の広告カットの定義を06用定義のところにコピペして

replace(/<div id="banner"[\s\S]*?<\/div><\/div><\/div>/,"")

に変更すればおk

ザックリ大雑把に言えばhtml上ではclassがidになり<br>が</div>になっただけ

295名無しさん:2015/12/11(金) 16:47:24
>>293
すまん294訂正。</div>が1つ多かった

replace(/<div id="banner"[\s\S]*?<\/div><\/div>/,"")

296名無しさん:2015/12/11(金) 17:11:22
>>293
すまん、もう1度修正

replace(/<div id="banner"[\s\S]*?(?:<div class="push"><\/div><\/div>)+/,"")

ザックリしすぎた……orz

297名無しさん:2015/12/11(金) 20:08:38
お絵描き画像のリンクが
 sssp://o.8ch.net/xxxxx.png
じゃ無く
 http://o.8ch.net/xxxxx.png
になってるな。

298297:2015/12/11(金) 20:32:47
あと、差分取得だが、

専ブラによっては差分取得が働かず、必ず全件取得になってしまう。
原因は、GETレスポンスのヘッダ情報に最終更新日時の"Last-Modified"ヘッダが無いから。
よって、GETリクエストのヘッダ情報に差分取得用の"Range"ヘッダが付加されないため、
BeforeResponse()内の差分取得処理がスルーされる。

また、新着無しの304を返す判定条件だが、
 if (sbyte == bodylength) {
だと、sbyte("Range"ヘッダの値)よりbodylength(dat生成後のバイト数)が必ず+1に
なるため、常にイコールにならない。
よって、新着無しの場合、304ではなく差分1バイトの206が返ってきてしまう。

299 ◆/vmukiyuzw:2015/12/11(金) 21:23:25
修正しました。(ver 2.09)

>>294-296さん
フォローありがとうございます。
結果は>>296のものと同じなんですが

replace(/<div id="banner"[\s\S]*?(?=<div class="post")/,"")

のようにしました。

>>296さん
ご指摘ありがとうございます。sssp:になるよう修正しました。

300 ◆/vmukiyuzw:2015/12/11(金) 22:12:09
>>299
> >>296さんご指摘ありがとうございます は
>>297さんの間違いでした。


>>298さん
> 原因は、GETレスポンスのヘッダ情報に最終更新日時の"Last-Modified"ヘッダが無いから。
> よって、GETリクエストのヘッダ情報に差分取得用の"Range"ヘッダが付加されないため、
> BeforeResponse()内の差分取得処理がスルーされる。

うーん、なんか違うような・・・
GETリクエストのRangeヘッダはわざわざ削除してるんですけど。
(htmlベースでは差分取得するのが難しいので全部取得して内部で差分を取る前提)
専ブラから送られたRangeヘッダは削除前にOnBeforeReqest()でoSessionオブジェクトに保存して
OnBeforeResponse()に引き継いでるので差分取得処理でスルーされることはないはずです。

あと、専ブラによっては差分取得時に取得済みのdatサイズの続きではなく
あえて-1をRangeリクエストするものがあります。
(返ってきたデータの先頭が改行でなければ破損ログとみなす判定のため)
私の知る限りではかちゅ〜しゃ、V2C、ギコナビ等がこの方式を取っていたと思います。
これらのブラウザでは新着レスがなくても304ではなく206が返るのが正常なレスポンスです。

お使いの専ブラではなにか不都合が出てるのでしょうか?
できたら専ブラの種類を教えていただきたく。

301298:2015/12/11(金) 23:13:04
>>300
使ってる専ブラは「禁断の壷」というWebベースのものです。

「GETリクエストに"Range"ヘッダを付加しない」のは専ブラ側の方です。
よって、OnBeforeReqest()での"Range"ヘッダ削除処理自体が行われません。
なので、必ずステータス=200で全件取得となってしまいます。

あと、304の件ですが、他の専ブラの仕様でそうなっているのは了解しました。

302 ◆/vmukiyuzw:2015/12/12(土) 00:16:26
>>301さん
「禁断の壺」ですか。
かつては2ch公式ブラウザと言われたものですね。
動作を確認しようと検索したのですが元々の配布サイトが消滅していて
(検索不足かもですか)今どこにあるのか確認できず。
Rangeヘッダを出力せずどうやって差分取得を行っていたのか・・・
現時点では確認しようがなくお手上げです。

303298:2015/12/12(土) 02:06:57
>>302
何かずっと誤解されてますが、
"Last-Modified"ヘッダがあれば、専ブラ側でその更新日時を元に"Range"ヘッダを付加して
差分取得を行います。
が、htmltodatByFiddlerでは"Last-Modified"ヘッダを付加して返してこないために、
専ブラが"Range"ヘッダを付加せず、結果差分取得が行われないのですよ。

304 ◆/vmukiyuzw:2015/12/12(土) 02:41:02
>>303
> "Last-Modified"ヘッダがあれば、専ブラ側でその更新日時を元に"Range"ヘッダを付加して
> 差分取得を行います。

それは「禁断の壺」独自の仕様では?
私の知ってる限りLast-ModifiedヘッダがなければRangeヘッダを返さないなんて専ブラは
聞いたことがありません。
それに、FiddlerのInspectorsタブ等で見ていただけるといいのですが
read.cgiからのレスポンスにLast-Modifiedヘッダはそもそも存在しません。
なので

> が、htmltodatByFiddlerでは"Last-Modified"ヘッダを付加して返してこないために、

そもそも付加しようがないと思います。

ですので、もし解決できるとするならご自分でLast-Modifiedを捏造して付加する
コードを書いていただくしかないのではないかと思います。
現時点で私には仕様が確認できないので何もできません。

305名無しさん:2015/12/12(土) 04:47:04
もしかして「壺」は更新の有無(Last-Modified)だけをまず確認して、それをもとに本丸の取得判定を行ってるのか?
昔のネット環境を考えればそういう挙動も理解できる
で、現在の2ch.netは更新の有無にかかわらず都度html生成するからLast-Modifiedは当てにならないんだなぁこれが

とりあえず、自分用に仕込んでたものだがOnBeforeResponse処理の適当なタイミングに以下を追記すればいいよ

// Last-Modifiedが空っぽの場合Dateを代入
if (!oSession.oResponse["Last-Modified"])
oSession.oResponse["Last-Modified"] = oSession.oResponse["Date"];

306298:2015/12/12(土) 11:21:31
>>304
過去にも、"Last-Modified"ヘッダについて遣り取りがあったみたいですね。
そこでは、、"Last-Modified"ヘッダは付けない方向との見解でしたので、
今回も同じ見解という事で、これで終わりにしたいと思います。

>>305
わざわざ、ご教示ありがとう御座います。
「禁断の壷」は、ローカル保存のDATに、"Last-Modified"ヘッダの更新日時を
保持しており、スレの新規取得時に、"Last-Modified"ヘッダの値も保存します。
で、DATに"Last-Modified"ヘッダの値が無いと本来の差分取得を行わずに、
新規取得と同様に全件取得を行う仕様のようです。

なお、"Last-Modified"ヘッダの値ですが、2chAPIの方の動作を確認しますと、
最終レスの日付情報と同じ値の様です。
でも、「禁断の壷」では"Date"ヘッダの値でも問題無く、"Last-Modified"ヘッダ
が付加されていれば、差分取得が行われるようになりました。

307 ◆/vmukiyuzw:2015/12/12(土) 21:23:28
>>306さん
>>251-254 あたりでのやりとりですね。つい最近なのにすっかり失念してました。

>>305さんはもしかしてその時ご意見下さった方かな?
フォローありがとうございます。
>>305のコードを取り入れて他の専ブラに影響が出ないかもう少し検証したいですが
問題なさそうであれば取り入れたいと考えています。

308名無しさん:2015/12/17(木) 23:50:03
read.cgi 05
まだ変わりそうだけどとりあえず消す
oBody.replace(/<div id="js--banners--thread" class="banner" style="width:100%;"><\/div>/,"")

read.cgi 06
httpsがhttpになってたのがhttpsになったので要再読み込み
関係ないけどブラウザでお絵描き表示されるのがssspだけに

309 ◆/vmukiyuzw:2015/12/18(金) 00:30:50
>>308さん ご指摘ありがとうございます。
修正しました。(ver 2.10)

read.cgi 05系の広告の入り方に変更があったので対応しました。
あと、ちょっと上で話が上がっていたLast-Modifiedヘッダについても
付加するようにしました。

> read.cgi 06
> httpsがhttpになってたのがhttpsになったので要再読み込み

なんか破損するスレがあるけど破損しないスレもあるのはなぜだろう
と思ってたらそういうことだったんですね。
これに関しては対応は難しそう・・・再読み込みしていただくしかないような。

310名無しさん:2015/12/21(月) 23:24:30
お疲れ様です
bbspinkでここ壊れてますになって気付いたんですが
FiddlerのTextviewを見るとレス数が1だけだとマッチせずに広告が残ってます
今は
bbspink read.cgi 05は>>290
2ch read.cgi 06は>>296
2ch read.cgi 05は>>308
を追加して消してます

311 ◆/vmukiyuzw:2015/12/22(火) 00:39:10
>>310さん ご指摘ありがとうございます。
修正しました(ver 2.11)

レス数が1だけだと広告除去の条件がうまく効いていませんでした。
レス数1だけのスレというのは板によっては結構出会うことが難しいんで
テスト不足でした。

312名無しさん:2015/12/22(火) 02:04:35
>>311
対応ありがとうございます

313名無しさん:2015/12/25(金) 21:12:13
> //oBody = oBody.replace(/<a href="http:\/\/jump\.2ch\.net.*?>(.*?)<\/a>/ig,"$1"); //これは必要か?後で検討

これを有効にしないとこのスレ(read.cgi 06)の>>1の一部(2ch外へのリンク等)が消えてしまうようです
http://potato.2ch.net/test/read.cgi/software/1422462757/

314 ◆/vmukiyuzw:2015/12/25(金) 23:52:25
>>313さん ご指摘ありがとうございます。
修正しました(ver 2.12)

ご指摘いただいた行(jump.2ch.netを外す)ではなく、その直下の
// レスアンカーに対するフルパスを相対パスに変換〜
のとこがよくなかったようです。
現状のread.cgi 06ではレスアンカーに対するパスはいつのまにか05同様相対パスになっているようなので
この変換処理は不要であると考えコメントアウトするようにしました。

315名無しさん:2015/12/26(土) 00:56:05
>>314
ありがとうございます

316名無しさん:2016/01/11(月) 17:24:30
以下のスレで指摘された新read.cgiのバグへの対応お願いします

専用ブラウザを助けるプロクシ作らね?15串目
http://potato.2ch.net/test/read.cgi/software/1448272459/809


以下のように修正したら上手く動きました
(?:<a href="mailto:(.*?)">)?

(?:<a href="mailto:(?:<a[^>]+>)?(.+?)(?:<\/a>)?">)?

317名無しさん:2016/01/11(月) 20:36:04
>>316の件ですがこの修正の仕方は決め打ち過ぎるので訂正します

以下のスレでいくつかのテストを重ねてみました
http://potato.2ch.net/test/read.cgi/software/1449192043/404-410

結果としてはdat形式への変換は元のまま、その前に名前・メール欄内だけ以下の変換を行なうことで問題がなくなりました

//名前・メール欄内の余計なAタグ除去(前処理)
oBody = oBody.replace(/(<b><a href="mailto:)(.+?)(<\/a><\/b>)/g, function(aStr, aTag1, aMailName, aTag2) {
var mailname = aMailName.replace(/<\/?a[^>]*?>/g, '');
return aTag1 + mailname + aTag2;
});

以上を踏まえ修正お願いします

318 ◆/vmukiyuzw:2016/01/11(月) 22:36:17
>>316-317さん ご指摘ありがとうございます。
htmltodatByFiddlerを修正しました(ver 2.13)

正直、>>316を読んだ直後には
「メール欄にURLとともににsageとか入力されたらどうなるんだろう」
「メール欄だけじゃなく名前欄にも影響ありそうな」
と懸念を抱きどうしたもんかと思ったのですが
>>317で検証いただいたようでありがたいです。

# 実はreplaceメソッドの引数にこういう形で関数を指定できるのを
# 知らなかったので勉強になりました

read.cgi 05系ではこの現象は発生しないことは確認したのですが
念のため05系、06系両方に適用するようにしてます。

319名無しさん:2016/01/11(月) 23:44:26
修正乙でした

320<削除>:<削除>
<削除>

321<削除>:<削除>
<削除>

322名無しさん:2016/03/10(木) 10:49:40
溶接工とか言う寿命削る仕事
http://bit.ly/1XshYYl

323名無しさん:2016/03/10(木) 17:57:41
>>320-322

324名無しさん:2016/03/15(火) 05:31:40
【絶望】ふらつくから病院行ってみたらwwwwwwwwwwww
http://bit.ly/1R5AiRC

325名無しさん:2016/03/26(土) 13:23:07
bbspink.com(2ch.netでも見た気がするが覚えてない)で最終レス末尾に広告枠が追加されたようなので

oBody = oBody.replace(/<\/div><\/div><\/div><div><div class="js--ad--bottom"[\s\S]*$/,"</div></div>\n");

バナー広告削除処理の辺りに入れてください
テストらしいテストはしてませんが……


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板