web-dev-qa-db-ja.com

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

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

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

24
Tim

私はついに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で開き、フォームに記入して送信します。
  • 後で使用するために名前とパスワードを記憶するように選択してください。
  • エリックスを閉じる
  • elinks -auto-submit http://somesite.comを実行する

後者のコマンドは、それ以上のユーザーの操作なしで自動ログインを実行します。

私は実際にはtimeout 1m elinks -auto-submit http://somesite.com &を使っているので、アイドリングのelinksプロセスがバックグラウンドで動いているわけではありません。

5
Tim

あなたはそれを試してみることができます curl 、あなたは単にウェブページにログインするためにこのようにcurlを使うことができます:

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

あなたはこのようにウェブサイトにデータを渡すことができます Stackoverflow 答え

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

ログイン後に別のカールリクエストを作成する場合は、クッキーが必要です。クッキー内のセッションIDは、次回のカールリクエストの承認に役立ちます。

あなたがクッキーが欲しくないならば、あなたは使うことができます

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

特別なコマンドについてはここで を参照することもできます

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

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

3
Moshe Katz

あなたは、保存されたパスワードでウェブサイトに自動ログインするあなたのブラウザのためのアドオンを得ることができます。私はFirefoxでAutoAuthを使った。それからあなたは一度ログインしてあなたの資格情報を保存し、そしてちょうど持っているスクリプトを書く

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

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

はい、あなたの大学のインターネットにログインするためのとても簡単な方法があります。テキストベースのブラウザである ' Lynx 'ウェブブラウザを使うことができます、端末用に設計されています。だから、ここに方法があります:

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

ここで、 'sername'はフォーム内のユーザー名に対応するフィールドの名前で、 'password'はフィールドの名前)です。 password fieldに対応し、 'myname'および 'mypassword'はフォームに入力される対応する値です。あなたはどのブラウザからでも 'Inspect Element'を使ってフィールド名を見つけることができます。私はBlueBerry - Vignesh4303による答えで指示されるようにカールを試みましたが、うまくいきませんでした。

0
Kushagra Sharma