質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.35%

Net::HTTPでパスをしてする方法について

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 557

score 161

タイトルの通りパスの指定とところで分からないところがあったので
お願いします。

require 'net/http'
http= Net::HTTP.new("exsample.com",443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = http.post('/','q=sample')
puts "---ステータスコード---"
puts response.code
puts response.body


---ステータスコード---
200
<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;

    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 50px;
        background-color: #fff;
        border-radius: 1em;
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        body {
            background-color: #fff;
        }
        div {
            width: auto;
            margin: 0 auto;
            border-radius: 0;
            padding: 1em;
        }
    }
    </style>
</head>

<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is established to be used for illustrative examples in documents. You may use this
    domain in examples without prior coordination or asking for permission.</p>
    <p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>


ステータスコードが200なので成功しています。

しかし、リンク内容
このリンクのようなサイトの場合どのようにしてすればいいのですか?

https://www.amazon.co.jp/s?k=sample&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&ref=nb_sb_noss


path・・・/
検索欄がk=検索ワードとなるから
k=検索キーワード
よって

require 'net/http'
require 'uri'
uri = URI.parse("https://example.com")
http= Net::HTTP.new("www.amazon.co.jp",443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = http.post('/','k=sample')
puts "---ステータスコード---"
puts response.code
response.each do |name,value|
 puts name + ":" + value
end


実行すれば200が返ってくるかと思いきや

---ステータスコード---
405
content-type:text/html;charset=UTF-8
transfer-encoding:chunked
connection:close
server:Server
date:Tue, 23 Jul 2019 03:04:46 GMT
set-cookie:skin=noskin; path=/; domain=.amazon.co.jp
strict-transport-security:max-age=47474747; includeSubDomains; preload
vary:Accept-Encoding,User-Agent,X-Amzn-CDN-Cache,X-Amzn-AX-Treatment
content-language:ja-JP
x-ua-compatible:IE=edge
cache-control:no-cache
pragma:no-cache
expires:-1
x-xss-protection:1;
x-content-type-options:nosniff
x-frame-options:SAMEORIGIN
x-amz-rid:PGB6M3041S78K7PKBTRQ
x-cache:Error from cloudfront
via:1.1 4cb3df5349fbb69c930b315b7d0a5272.cloudfront.net (CloudFront)
x-amz-cf-pop:NRT12-C2
x-amz-cf-id:fWnO6lVC6yuJRL46wUwk0zjKOKXabllGfIDnEpxfWrm0hFhcfS-tZA==


リンク内容

パスと検索欄の組み合わせをいろいろ実行してみたのですが
全部405で帰ってきます。。。
わからないのでお願いします。

結果
リンク内容
などレスポンスがしっかり返ってきたサイトもありました。
次からは回答のように利用規約も確認します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

順番が違うように思います。

がむしゃらに試すのではなく
まずはFiddlerやWiresharkでブラウザの通信を覗いてみた方がよいのではないでしょうか?
(なお、Wiresharkだとhttpsを見るのはちょっと大変)
基礎的なHTTPの知識が欠如しているように見受けられます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/23 13:43

    ありがとうございます。
    HTTPの基礎的な知識についてですが
    どこをやればいいのでしょうか?
    よろしければお願いします。

    キャンセル

  • 2019/07/23 14:18

    どこを?に対して「今回の質問のみに限る」条件での答えならば
    HTTPリクエスト(https://developer.mozilla.org/ja/docs/Web/HTTP/Messages#HTTP_Requests)という答えになります。

    ただ、生のリクエストを見ればわかるだろうレベルの知識が欠如しているので今回の回答になります。

    キャンセル

  • 2019/07/23 15:29

    ありがとうございます

    キャンセル

+2

本題ではありませんが、Amazon.co.jpは利用規約で、ツールによるアクセスを禁止しています。

本規約およびサービス規約の遵守を条件とし、アマゾンまたはコンテンツ提供者は、アマゾンサービスを限定的、非独占的、非商業的および個人的に利用する権利をお客様に許諾します(譲渡およびサブライセンス不可)。この利用許可には、アマゾンサービスまたはそのコンテンツの転売および商業目的での利用、製品リスト、解説、価格などの収集と利用、アマゾンサービスまたはそのコンテンツの二次的利用、第三者のために行うアカウント情報のダウンロードとコピーやその他の利用、データマイニング、ロボットなどのデータ収集・抽出ツールの使用は、一切含まれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/23 15:30

    ありがとうございます

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る