id:takatoh:20070708:hw のつづき。Crypt::SSLeayをインストールしたらエラーになった件。
いろいろ試した結果,クッキーファイル(cookie.txt)の有無と関係が有ることがわかった。表にするとこんな感じ。
cookie.txtあり | cookie.txtなし | |
Crypt::SSLeayなし | OK | OK |
Crypt::SSLeayあり | OK | エラー |
Crypt::SSLeayが無い場合にはcookie.txtの有無に関わらずOKなんだけど,これは暗号化されないってことなんで非推奨。Crypt::SSLeayをインストールするとcookie.txtが無い場合にエラーになる。無けりゃ作ってくれるはずなんだけど,ここで失敗しているように見える(最後から2行目)。……ちがうのかな。
-d オプションをつけて実行した結果:
^o^ >perl hw.pl -d DEBUG: Debug flag on. Hatena Diary Writer Version 1.4.1 Copyright (C) 2004,2005 by Hiroshi Yuki. DEBUG: Loading config file (config.txt). DEBUG: load_config: id:takatoh DEBUG: load_config: password:******** DEBUG: load_config: cookie:cookie.txt DEBUG: load_config: proxy:http://proxy:8080/ DEBUG: load_config: client_encoding:Shift_JIS DEBUG: load_config: server_encoding:EUC_JP DEBUG: main: files: current dir (.): ./2007-07-08.txt ./touch.txt DEBUG: login: proxy for http: http://proxy:8080/ DEBUG: login: proxy for https: http://proxy:8080/ Login to https://www.hatena.ne.jp/login as takatoh. DEBUG: login: 200 OK DEBUG: login: $r = <HTML></HTML> Login OK. DEBUG: login: Making cookie jar. DEBUG: login: $cookie_jar = DEBUG: read_title_body: input: ./2007-07-08.txt DEBUG: Convert from Shift_JIS to EUC_JP. Post 2007-07-08. DEBUG: create_it: 2007-07-08. DEBUG: create_it: 302 Moved DEBUG: create_it: Location: /takatoh/ DEBUG: create_it: returns 0 (ERROR). DEBUG: try_it: update_diary_entry: CREATE. Old cookie. Retry login. DEBUG: login: proxy for http: http://proxy:8080/ DEBUG: login: proxy for https: http://proxy:8080/ Login to https://www.hatena.ne.jp/login as takatoh. DEBUG: login: 200 OK DEBUG: login: $r = <HTML></HTML> Login OK. DEBUG: login: Making cookie jar. DEBUG: login: $cookie_jar = DEBUG: create_it: 2007-07-08. DEBUG: create_it: 302 Moved DEBUG: create_it: Location: /takatoh/ DEBUG: create_it: returns 0 (ERROR). DEBUG: try_it: update_diary_entry: CREATE. Old cookie. Retry login. DEBUG: login: proxy for http: http://proxy:8080/ DEBUG: login: proxy for https: http://proxy:8080/ Login to https://www.hatena.ne.jp/login as takatoh. DEBUG: login: 200 OK DEBUG: login: $r = <HTML></HTML> Login OK. DEBUG: login: Making cookie jar. DEBUG: login: $cookie_jar = ERROR: try_it: Check username/password.
結局,Crypt::SSLeayをインストール/アンインストールしたり,設定ファイルを書き換えてみたりしてるうちにできた(つまりCrypt::SSLeayなしの時にできた)クッキーファイルがあって動くようになったので今回はOKとする。Crypt::SSLeayありの状態でクッキーファイルを作る方法はわからない。
なんだか中途半端だけど時間切れだ。
追記:PCの環境
- Windows XP
- ActivePerl 5.8.8
- Crypt::SSLeay 0.53
追記2:proxyなしの場合
hyukiさんのアドバイスに従ってproxyの無い環境で試してみたら,正しく投稿できた。どうやら次の3つが重なったときにエラーになるらしい。
- Crypt::SSLeay あり
- クッキーファイルがない
- proxyを利用
試してみました。Windows XP + ActivePerl 5.8.8 + Crypt::SSLeay 0.53で、cookie.txtあり、なしでやってみましたが、正しく投稿できるようです。違いはproxyの有無くらいでしょうか。$cookie_jarの値が空文字列になっているのが気になりますね。参考にならずすみません。
お返事ありがとうございます。そうですか,正しく投稿できますか。帰ったらproxyの要らない環境で試してみます。