ちょっと、思うこと/やったこと

アクセスカウンタ

help リーダーに追加 RSS CUI Web ブラウザで JavaScript

<<   作成日時 : 2008/11/02 07:30   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

OpenBSD/Zaurus では w3m を愛用していましたが、ログイン時に JavaScript を使うサイト(例えばフジテレビの「アナマガplus」)にログインできません。
JavaScriptに対応していないのが原因かと思います。 (エラーメッセージにもそう出ますし)


結果から先に言うと、

 elinks-0.12系のリポジトリにある 2008/10/31 時点の最新版
   +
 SpiderMonkeyのリポジトリにある 2008/11/1 時点の最新版
   +
 DeleGate-9.8.6 (文字コード変換プロキシサーバとして)

を使用することにより、ログイン時に JavaScript を使うサイトにログインできるようになりました。


フジテレビの「アナマガplus」では、ログイン時のSSLを使っているログインページで文字化けしますが、一度ログインに成功すればブログ等を読むことができます。
2008/11/5 追記
なんとかSSLサイトも文字化けしないようにはできました。
2008/11/5 追記終了


・試行錯誤(1) w3m で JavaScript
まず w3m でJavaScriptに対応できないかと探してみると、w3m-0.4 に JavaScript に対応するためのパッチはありましたが、w3m-0.5.x に対応するものは見つかりません。

自分で w3m-0.4 用のパッチを w3m-0.5.x に対応させようかとも思ったのですが、ちゃんと動くものが出来そうな気が全くしなかったのであきらめました。


・試行錯誤(2) elinks の文字化け
elinksというがありSpiderMonkeyを使用して JavaScript に対応できるようです。

どうやら ELinks 0.12pre1から UTF-8 がなり良くなっているらしいので、とりあえず elinks-0.12pre2 を取得しました。
SpiderMonkey は OpenBSD ports にある spidermonkey-1.60p2 をインストールしました。

が、JavaScript うんぬんの前に UTF-8 以外の日本語サイトが文字化けします。

なんとかならないかと調べていると、elinks のソースにある NEWSというファイルに次のような記述がありました。
The only multibyte charset ELinks can decode is still UTF-8, so if the server outputs e.g. Shift-JIS, you'd better recode with a proxy.

で、proxy を OpenBSD/Zaurus で動かしてそれに文字コード変換させればいいのかと気付き、DeleGate-9.8.6 をインストールしました。

OpenBSD-current 標準の libssl と libcrypt だと DeleGate 起動時に SSL がらみのエラーが表示されてしまいます。
対処法が分からなかったので /usr/local/openssl 以下に OpenSSL をインストールしました。

DeleGate は次のようにして起動しています。

$ /usr/local/sbin/delegated -r -P8080 \
LDPATH="/usr/local/openssl/lib" \
SERVER=http CHARCODE=UTF-8


これで SSL を使ったページ以外は文字化けせずに表示できるようになりました。


・試行錯誤(3) elinks クラッシュ
elinks-0.12pre + spidermonkey-1.60p2 + delegate-9.8.6 でログイン時に JavaScript を使うサイトにログインできるようになりました。
(ただし、SSLを使っているログインページでは文字化けします)

しかし、JavaScript が埋めこまれているサイトで頻繁にクラッシュします。
slashdot.jp では必ず core 吐いてお亡くなりになります。

まずgit で取得した 0.12系の最新版 と spidermonkey-1.60p2 で試してみましたが、全く変化ありませんでした。

次にmercurial で SpiderMonkey の最新版を取得しました。

リリースされている js-1.7.0.tar.gz というのもあるのですが、タイムスタンプが古い(19-Oct-2007)のでどうせなら新しいのを使おうかということでmercurialを使うことにしました。
こちらを見たところ、js/src以下も更新はされているようなので。多分。

そのまま make するとエラーになるので OpenBSD ports の spidermonkey-1.60p2 から次のパッチを取ってきてjs/src以下にあてました。
patch-src_config_mk
patch-src_rules_mk
patch-src_config_Linux_All_mk

js/src/config.mk で失敗する箇所もありますが、config.mk.rej を見た感じでは問題なさそうなのでほっときました。

patch-src_Makefile_ref もあてようとしたのですが失敗しました。
js/src/Makefile.ref を diff したところオリジナルのままみたいです。

さらに js/src/config.mk の中で -Wstrict-aliasing=2 を付けないようにしました。

ようやく次のように make することができました。
$ cd js/src
$ gmake -f Makefile.ref


できあがったファイルは spidermonkey-1.60p2 を参考に次のようにコピーしました。
これはかなり適当です。
マネしないでください。

$ cp Linux_All_DBG.OBJ/js /usr/local/bin/
$ cp Linux_All_DBG.OBJ/libjs.so /usr/local/lib/libjs.so.2.0
$ mkdir /usr/local/include/js
$ cp Linux_All_DBG.OBJ/*.h /usr/local/include/js/
$ cp jsapi.h /usr/local/include/js/
$ cp jscompat.h /usr/local/include/js/
$ cp jshash.h /usr/local/include/js/
$ cp jslong.h /usr/local/include/js/
$ cp jsprvtd.h /usr/local/include/js/
$ cp jspubtd.h /usr/local/include/js/
$ cp jsstr.h /usr/local/include/js/
$ cp jstypes.h /usr/local/include/js/
$ cp jsotypes.h /usr/local/include/js/
$ cp jsutil.h /usr/local/include/js/
$ cp jsproto.tbl /usr/local/include/js/
$ cp jsversion.h /usr/local/include/js/
$ ls /usr/local/include/js/
jsapi.h
jsautooplen.h
jslong.h
jsprvtd.h
jstypes.h
jsautocfg.h
jscompat.h
jsotypes.h
jspubtd.h
jsutil.h
jsautokw.h
jshash.h
jsproto.tbl
jsstr.h
jsversion.h


2008/11/2 追記
elinksのgitリポジトリに更新があったので手元の作業コピーを更新して build しようとしたら SpiderMonkey のヘッダファイルでエラーになってしまったので修正。
その後elinksの build はとりあえず問題なく終了したみたい。
2008/11/2 追記終了

ヘッダファイル(*.h)とlibjs.so はこんなんでいいのかかなり不安です。

elinks は spidermonkey-1.60p2 使用時に build したものをそのまま使用しています。
もし elinksを build しなおした時に問題があれば SpiderMonkey のインストールを見直します。

2008/11/2 追記
elinksのgitリポジトリに更新があったので手元の作業コピーも更新して build しました。
2008/11/2 追記終了

以上で、ログイン時に JavaScript を使用するサイトにログインでき、slashdot.jpにアクセスしても core 吐いてお亡くなりにはならなくなりました。

UTF-8 ではなく Shift JIS なサイト(amazon.co.jp)で確認したところ、フォームに日本語入力して検索することもできました。


現在分かっている問題点は次の 2 点です。
・ページ内検索で日本語文字列がヒットしない?
・UTF-8 ではない SSL な日本語ページの文字化け

SSL の方はどうしようもないんですかね?
クライアントとサーバの途中にあるプロシキで文字コードの変換なんてできてしまうようだとSSLの意味がない気がしますが、どうなんでしょう?
2008/11/5 追記
なんとかSSLサイトも文字化けしないようにはできました。
2008/11/5 追記終了




設定テーマ

関連テーマ 一覧

月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ