LinuxコマンドラインからWebサイトのログイン情報を入力する方法


25

私のインターネット接続は大学から提供されています。ユーザー名とパスワードの組み合わせで保護されています。つまり、コンピューターを起動するときに、Webブラウザーを起動して任意のWebサイトを開く必要があります。次に、(特に)2つのフォームを含むページにリダイレクトされます。これらでは、ユーザー名とパスワードを入力する必要があります。firefox(パスワードを保存できる)とリンク(高速でコマンドラインから読み込む)を使ってこれを行うことができました。

bashスクリプトを使用してログインプロセスを自動化する方法はありますか?これにより、起動時にログインできるようになり、Xサーバーを起動したときにすでにログインしているようになります。


1
フォームの属性から直接ログインスクリプトを呼び出すことできる場合があります。ACTIONcurl
テルドン

多くの大学では、「エンタープライズ認証」を使用するネットワークも提供しています(つまり、資格情報を要求するページにアクセスするまで待つのではなく、ネットワーク接続自体にユーザー名/パスワードを使用します)。このようなネットワーク資格情報を保存する機能は、OSに組み込まれています。また、他の人があなたの接続をスヌーピングするのがより難しいことを意味するため、はるかに安全です。大学でサポートされている場合は、大学に切り替える必要があります。
モシェカッツ

また、ログイン時にリダイレクトされるURLの(匿名化された)サンプルを提供できれば助かります。しかし、大学の名を含む他のすべてを、去る)。
モシェ・カッツ

回答:


16

curlで試してみることができます。次のようにcurlを使用するだけでWebページにログインできます。

curl --user name:password http://somesite.com -v 

Stackoverflow answer からこのようなウェブサイトにデータを渡すことができます

    curl -b cookies.txt -c cookies.txt --data "Username=xx&Password=xx&Login=Login" [urlthatyour form submits]

ログイン後に別のcurl要求を行う場合はcookieが必要です。cookieのセッションIDは、次のcurl要求の承認に役立ちます。

Cookieが必要ない場合は、使用できます

curl --data "Username=xx&Password=xx&Login=Login" [url that your form submits]

特別なコマンドについては、こちらも参照できます


1
私は今これを試すことができませんが、これはサイトを開くときにパスワードを要求するダイアログボックスがある場合にのみ機能すると期待しています。私の場合、フォームは2つしかありません。1つは名前用、もう1つはパスワード用です。これを明確にするために質問を変更します。
ティム

@Timはデータを渡す方法を追加しました。通常は、ページが要求するページ(またはページのアクション値)を見つける必要があります。
ブルーベリー-Vignesh4303 13年

これは動作するように聞こえましたが、残念ながら動作しませんでした。curlの出力を見ると、Usernameフィールドに正しい値が正しく入力されていることが示唆されますが、Passwordフィールドはそうではありません(これはセキュリティ対策として正しい場合があります)。送信ボタンが実際にトリガーされたかどうかはわかりません。どの値が渡されるLoginかは重要ですか?
ティム

5

私はついにを使用して自動的にログインする方法を見つけましたelinks。動作し、設定も簡単です!

2つのオプションを設定する必要があります。これは、次の行を追加する~/.elinks/elinks.conf(ファイルが存在しない場合は作成する)か、オプションダイアログ内のそれぞれの位置の値を変更することで実行できますelinks

    # Save username and password for later use
set document.browse.forms.show_formhist = 1
    # Do not ask for confirmation before a form is submitted
set document.browse.forms.confirm_submit = 0

スクリプト可能な自動ログインの手順は次のとおりです。

  • これらの2つのオプションを設定します
  • ログインページを開きます elinksフォームに入力して送信します。
  • 後で使用するために名前とパスワードを記憶することを選択します。
  • Eリンクを閉じる
  • 走る elinks -auto-submit http://somesite.com

後者のコマンドは、ユーザーの操作なしで自動ログインを実行する必要があります。

私は実際にを使用timeout 1m elinks -auto-submit http://somesite.com &しているため、常にバックグラウンドで実行されているアイドリングelinksプロセスはありません。


3

これをスクリプト化する簡単な方法は、Seleniumを使用することです。

Firefoxの「Test Recorder」プラグインを使用して、ネットワークにログインしている自分のテストを記録し、テストを再生できます。


0

はい、大学のインターネットにログインする非常に簡単な方法があります。ターミナルで使用するために設計されたテキストベースのブラウザである「Lynx」ウェブブラウザを使用できます。だから、ここに方法があります:

$ echo "username=myname&password=mypassword" | lynx "url of the form" -post_data

ここで、「username」はフォーム内のユーザー名対応するフィールドの名前、「password」はパスワードフィールドに対応するフィールド名前、「myname」と「mypassword」は入力する対応する値ですフォーム。任意のブラウザから「Inspect Element」を使用してフィールド名を見つけることができます。BlueBerry-Vignesh4303の回答にあるようにcurlを試しましたが、うまくいきませんでした。


0

ブラウザ用のアドオンを入手すると、保存されたパスワードでウェブサイトに自動ログインできます。FirefoxでAutoAuthを使用しました。次に、一度ログインして資格情報を保存し、次に持っているだけのスクリプトを書きます

#!/bin/bash
firefox https://website address goes here

実行されると、自動ログインに進みます。複数のサイトで試してみましたが、うまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.