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

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

ただいまの
回答率

87.60%

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 7,256

score -34

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

実現したいこと

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

自分なりに考えた手順

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

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

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

<script type = "javascript">
var page = "ログインページurl";//loginページの場所を取得
var ID = page.document.getElementByID("textUserId");//ページのhtmlのIDとパス欄のidを入手
var Pass = page.document.getElementByID("textPassword");

ID.value = "図書館のID番号";//フォーム入力
Pass.value = "図書館のパスワード";
</script>

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

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

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

質問

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

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

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

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

回答 2

checkベストアンサー

+2

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

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

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

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

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/03/12 08:44

    ご回答ありがとうございます。

    >余談ですが、webの動作原理を知らない状況では、希望のアプリを作るのには無理があると思います

    そうですか…。
    多分いきなり、webの動作原理とか、高度に発達しすぎて複雑な通信技術やログイン認証技術を理解しようとしても、多分フワフワしていて理解しにくいし、
    理解の順序として不自然だと思い、

    とりあえず今の自分の限られた知識で自分なりに素朴なアイデアで仮説を立てて、間違っているところがあれば修正する、という感じで勉強した方が良いかと思って質問したのですが、

    自分のアイデアは現在の通信技術との間にはあまりに大きな乖離があるようですね。

    まずcookieというのが何なのか知りませんし…。

    分からないなりに勉強する

    キャンセル

  • 2019/03/12 08:45

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

    キャンセル

  • 2019/03/12 09:03

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

    キャンセル

+2

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

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

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

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

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/03/10 12:03

    ご回答ありがとうございます。
    >それって規約上問題ないんでしょうか。

    そうなんですか?残念です。

    コンピューターの勉強やプログラミングの勉強(JavaScriptやhtml)がてら何か簡単なツールを作ろうと思って色々考えるのですが、思い付くものどれも制約とか権限とかで実現不可能なものばかりで、なかなか難しいですね…。

    キャンセル

  • 2019/03/10 12:10

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

    キャンセル

  • 2019/03/10 12:14

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

    キャンセル

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

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

関連した質問

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