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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1080閲覧

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

kazuyakazuya

総合スコア193

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/07/23 03:10

編集2019/07/23 07:04

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

ruby

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

cmd

1---ステータスコード--- 2200 3<!doctype html> 4<html> 5<head> 6 <title>Example Domain</title> 7 8 <meta charset="utf-8" /> 9 <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 10 <meta name="viewport" content="width=device-width, initial-scale=1" /> 11 <style type="text/css"> 12 body { 13 background-color: #f0f0f2; 14 margin: 0; 15 padding: 0; 16 font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; 17 18 } 19 div { 20 width: 600px; 21 margin: 5em auto; 22 padding: 50px; 23 background-color: #fff; 24 border-radius: 1em; 25 } 26 a:link, a:visited { 27 color: #38488f; 28 text-decoration: none; 29 } 30 @media (max-width: 700px) { 31 body { 32 background-color: #fff; 33 } 34 div { 35 width: auto; 36 margin: 0 auto; 37 border-radius: 0; 38 padding: 1em; 39 } 40 } 41 </style> 42</head> 43 44<body> 45<div> 46 <h1>Example Domain</h1> 47 <p>This domain is established to be used for illustrative examples in documents. You may use this 48 domain in examples without prior coordination or asking for permission.</p> 49 <p><a href="http://www.iana.org/domains/example">More information...</a></p> 50</div> 51</body> 52</html>

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

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

url

1https://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=検索キーワード
よって

ruby

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

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

cmd

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

リンク内容

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

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

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

投稿2019/07/23 04:46

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

ベストアンサー

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

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

投稿2019/07/23 04:34

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuyakazuya

2019/07/23 04:43

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

2019/07/23 05:18

どこを?に対して「今回の質問のみに限る」条件での答えならば HTTPリクエスト(https://developer.mozilla.org/ja/docs/Web/HTTP/Messages#HTTP_Requests)という答えになります。 ただ、生のリクエストを見ればわかるだろうレベルの知識が欠如しているので今回の回答になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問