間違いだらけの備忘録

このページの内容は無保証でありこのページの内容によって直接、または間接に損害を受けられたとしても私は責任を取りません。

backup_mixiログイン部https化

平文でパスワード送るのは避けたいので改造
...コンテンツは全て平文だから余り意味はないが...

$ diff -uNr backupmixi/mixi.rb backupmixi_s/mixi.rb  | lv
--- backupmixi/mixi.rb  2005-08-31 15:24:08.000000000 +0900
+++ backupmixi_s/mixi.rb        2005-12-07 00:00:00.000000000 +0900
@@ -33,6 +33,7 @@

        # 基本URL
        MIXI_URL = 'http://mixi.jp/'
+       MIXI_URL_S = 'https://mixi.jp/'

        # ログイン
        def login(email, password, proxy='', wait=2.0, cookie_store='cookie.dat')
@@ -40,9 +41,12 @@
                @nowait_get_count = 10
                @retry_sleep_time = 5
                @clnt = HTTPAccess2::Client.new(proxy=='' ? nil : proxy)
+               @clnt.ssl_config.set_trust_ca('mixi.pem')
+               @clnt.ssl_config.verify_depth = 4
+#              @clnt.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
                @clnt.set_cookie_store(cookie_store)

-               r = post('login.pl', "email=#{email}&password=#{password}&next_url=/home.pl")
+               r = post_s('login.pl', "email=#{email}&password=#{password}&next_url=/home.pl")
                (r !~ /alt\.gif/) and (r =~ /check\.pl/) # ログイン成否判定
        end

@@ -85,6 +89,9 @@
                filter( @clnt.post("#{MIXI_URL}#{path}", param).content )
        end

+       def post_s(path, param)
+               filter( @clnt.post("#{MIXI_URL_S}#{path}", param).content )
+       end
        # URLを指定してイメージファイルを取得
        def get_img(url)
                # ウェイトを入れず、各種の変換も行わない。

mixi.pemの作成
ieにてhttps://mixi.jp/にアクセスした状態で錠前アイコンから
[証明書]-[証明のパス]-対象のhostの一段上を選択
[証明書の表示]-[全般]-[証明]-[ファイルにコピー]-[PKCS #7 証明書(P7B)]
[証明のパスにある証明書を可能であればすべて含む]:チェック-[エクスポート]
エクスポートされたPKCS #7証明書(例mixi.P7B)をopensslにて変換
$ openssl pkcs7 -inform DER -outform PEM -print_certs -in mixi.p7b -out mixi.pem

作成途中verify無しでのテスト時(ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE)に

at depth 1 - 20: unable to get local issuer certificate
/usr/lib/ruby/1.8/http-access2.rb:939:in `connect': certificate verify failed (OpenSSL::SSL::SSLError)

と言われまくっていた原因は不明
エラー発生時と同等のコードに戻しても再現しなくなった
うーむ途中..ruby1.6を削除したことは関係ないとは思うが...

このページにはhatena以外のサービスからのコンテンツが埋め込まれています。 hatenaによりGoogle AdSense 広告が埋め込まれています。