Rubyのnet/httpで自動的にパスワードを入力してくれるプログラムを作りたいです。
以下のように
teratailログインページへアクセス
まるで囲っている場所
上記の
formに対して自動でパスワードをセットし
それをサーバーに送ってレスポンスを取得したいです。
まず、chromeのデバッグツールを使って
メールアドレスとパスワードがどのようにリクエストされているのかを
確認しました。
見にくいですがForm_dataとあります。
質問1
Form_DataにあるのはHTTPリクエストの構造で
いうところの ボディ(エンティティボディ) でしょうか?
質問1があっているのなら
サーバーに対してPOSTで送り
POSTの中のエンティティボディの中に
_method: POST data[_Token][key]: 93d86e4f446949f872e373b6eeac6c72e1fe3adee2b0ae76a31928c315468b0c81792a677c910e35f612efe30c3aea2d70d3a8954f04fcc64ac6c52a8ed000ee data[User][mail_address]: matsu-kazu4@ezweb.ne.jp data[User][password]: sample data[_Token][fields]: 89bbcd135ed84feb1e7b6f3b060adbe5d125e754%3A data[_Token][unlocked]:
デバッグツールで見たエンティティボディをセットすればよいのだから
ruby
1require 'net/http' 2 3http = Net::HTTP.new("teratail.com",443) 4http.use_ssl = true #SSL通信をするためのもの これが原因ではない 5http.verify_mode = OpenSSL::SSL::VERIFY_NONE#SSL通信をするためのもの これが原因ではない 6 7request = Net::HTTP::Post.new("/login/request") 8request.body=("_method: POST 9data[_Token][key]: 93d86e4f446949f872e373b6eeac6c72e1fe3adee2b0ae76a31928c315468b0c81792a677c910e35f612efe30c3aea2d70d3a8954f04fcc64ac6c52a8ed000ee 10data[User][mail_address]: matsu-kazu4@ezweb.ne.jp 11data[User][password]: sample 12data[_Token][fields]: 89bbcd135ed84feb1e7b6f3b060adbe5d125e754%3A 13data[_Token][unlocked]:") 14 15response = http.request(request) 16puts response.code 17
上記のようなコードを作り実行したのですが
コマンドに何も出力されません。
ここであやしいのが
ruby
1request.body=("_method: POST 2data[_Token][key]: 93d86e4f446949f872e373b6eeac6c72e1fe3adee2b0ae76a31928c315468b0c81792a677c910e35f612efe30c3aea2d70d3a8954f04fcc64ac6c52a8ed000ee 3data[User][mail_address]: matsu-kazu4@ezweb.ne.jp 4data[User][password]: sample 5data[_Token][fields]: 89bbcd135ed84feb1e7b6f3b060adbe5d125e754%3A 6data[_Token][unlocked]:")
body=メソッドです。
body=(Net::HTTP::Postクラス)
サーバーに送るリクエストのエンティティボディを文字列で設定する
と書かれていますが
使い方が間違えているのでしょうか?
分からないのでお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/02 11:47
2019/08/02 13:13 編集