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

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

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

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

9817閲覧

JavaScriptでログインが必要なページに自動でログインしたい

WeilSpinor

総合スコア170

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/03/10 00:44

編集2019/03/10 03:06

プログラミング初心者です。タイトル通りのことについて、およびWebバックエンド処理についての質問をさせて頂きます。

実現したいこと

アイコンを押すだけでダイレクトに図書館サイトのアカウントページに入れるAndroidアプリを作りたい。
ログインのためにIDとPassの入力を省略できる。

自分なりに考えた手順

1、「図書館のホームページのログイン画面のhtmlファイル」へのPATH(=URL)を入手

2、ログインページの『ID,Pass入力フォーム』、および『ログインボタン』のidをメモする(開発者ツールを使う)

3、以下のようにスクリプトを書いて、入力フォームに自分の図書館IDとPasswordを入力する。

javascript

1<script type = "javascript"> 2var page = "ログインページurl";//loginページの場所を取得 3var ID = page.document.getElementByID("textUserId");//ページのhtmlのIDとパス欄のidを入手 4var Pass = page.document.getElementByID("textPassword"); 5 6ID.value = "図書館のID番号";//フォーム入力 7Pass.value = "図書館のパスワード"; 8</script>

4、『入力済みのID,Password入力フォーム』を、図書館のサーバーにある『図書館ホームページバックエンド処理プログラム』に送信する。

5、それを受けて、バックエンド処理プログラムが返してくる『戻り値』=『私のアカウントページに関するファイル群』を格納するための受け皿としての変数を用意する。(この変数を"myAccountPage"とする)

6、変数myAccountPageに格納された『私のアカウントページに関するファイル群』を、Chromeで開く処理をスクリプトに書く。

質問

4,5,6の処理仕方がわからないので教えて頂きたいです。

具体的には、以下のようになると思います。
・『図書館ホームページバックエンド処理プログラム』のあて先はどこで確認できるか。
また、どうやってフォームのデータを送信するか。
・受け取った『私のアカウントページに関するファイル群』を開くには、どういった処理を書けばよいのか。

ご回答宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

具体的には、以下のようになると思います。

・『図書館ホームページバックエンド処理プログラム』のあて先はどこで確認できるか。
また、どうやってフォームのデータを送信するか。
・受け取った『私のアカウントページに関するファイル群』を開くには、どういった処理を書けばよいのか。

  • あて先

(この書き方だとリバースプロキシの先にいるwebappのあて先にも読めなくないですが、それは知り得ません)
おそらく知りたいことと聞きたいことに乖離があるのだろうと推測します。機械的に接続する窓口(APIと言います、teratailだとこういうやつ)が公開されていない状況では、その「あて先」は1.で得たURLしかありません。
HTMLやURLにどのようなイメージを持っておられるか分かりませんが、"https://.../login"には、おそらく動的な処理をする『バックエンド処理プログラム』がいて、非ログイン時には、動きがない固定画面を描画し、ログイン時にはユーザページを出すように動き分けをしていると思います。

  • 受け取った『私のアカウントページに関するファイル群』を開く

chromeで開くには、chromeに(おそらく)cookieとして認証情報を持っている必要があります。その状態で、アカウントページのURLを開く(クリックするに相当)をすれば、自動的にアカウントページが開きます。逆に考えると、アカウントページのURLを開こうとしたとき、chromeが適切な情報を持っていなければログインページに差し戻される、とも言えます。
androidのブラウザでの経験はありませんが、アプリの側でブラウザパーツで対象のURLを開き、そのときにログインセッションを表現するcookieを渡してやれば、開けると思います。

余談ですが、webの動作原理を知らない状況では、希望のアプリを作るのには無理があると思います。というのは詰まったときに、上手くググることができないからです。
遠回りのようで近いと思う学びかたとして、ログイン可能なアプリを自分で作ってみて、受け手がどう動くか、を知っておくというのをおすすめします。

投稿2019/03/11 02:08

papinianus

総合スコア12705

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

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

WeilSpinor

2019/03/11 23:44

ご回答ありがとうございます。 >余談ですが、webの動作原理を知らない状況では、希望のアプリを作るのには無理があると思います そうですか…。 多分いきなり、webの動作原理とか、高度に発達しすぎて複雑な通信技術やログイン認証技術を理解しようとしても、多分フワフワしていて理解しにくいし、 理解の順序として不自然だと思い、 とりあえず今の自分の限られた知識で自分なりに素朴なアイデアで仮説を立てて、間違っているところがあれば修正する、という感じで勉強した方が良いかと思って質問したのですが、 自分のアイデアは現在の通信技術との間にはあまりに大きな乖離があるようですね。 まずcookieというのが何なのか知りませんし…。 分からないなりに勉強する
WeilSpinor

2019/03/11 23:45

やはり、分からないなりにでも勉強するしかないですかね…。
papinianus

2019/03/12 00:03

確かにwebを学ぼうとすると広すぎるしどこから手をつけていいかもわからないので、書いたようにログインできるウェブアプリを作ることをおすすめします。今だとツイッターとかインスタとかの模擬アプリを作るオンラインスクールとか参考書がありそうです。 cookieを知らない状態で目的のものは作れないです。
guest

0

図書館ホームページ とは外部サイトですよね。自分が管理しているサイトではないですよね。それって規約上問題ないんでしょうか。

下記とやろうとしていることはほぼ同じですよね。

回答の一部から抜粋:

逆説的な回答になってしまいますが、外部サイト側からの視点でみると,
ご質問にある「自動ログイン」を行うようなリクエストが自身のサイト以外からリクエストされた場合、まず悪意のある攻撃者として処理するのが懸命でしょう。(すくなくとも私は絶対にログインさせません。)

しかも質問にURLまで出しているので「今から攻撃しますよ」と予告・宣言していると捉えられても仕方ないです。
どんなに面倒でも外からではなく、直接利用する以外ないかと。

投稿2019/03/10 01:10

編集2019/03/10 01:11
m.ts10806

総合スコア80850

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

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

WeilSpinor

2019/03/10 03:03

ご回答ありがとうございます。 >それって規約上問題ないんでしょうか。 そうなんですか?残念です。 コンピューターの勉強やプログラミングの勉強(JavaScriptやhtml)がてら何か簡単なツールを作ろうと思って色々考えるのですが、思い付くものどれも制約とか権限とかで実現不可能なものばかりで、なかなか難しいですね…。
m.ts10806

2019/03/10 03:10

自身で作ったデータにアクセスするようにすれば良いかと。 APIのような形で公式に配布されているものでなければ、勝手にアクセスするのは良くないですね(他人の家に風呂とかトイレとかの窓から入るようなものです) スクレイピングも同様と思います。
m.ts10806

2019/03/10 03:14

seleniumという手もありますが、原則自サイトのみにすべきかなと。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問