Linux curl フォームのログインまたは送信と Cookie の使用に関する詳細な説明

Linux curl フォームのログインまたは送信と Cookie の使用に関する詳細な説明

序文

この記事では主に、curl を介してフォーム送信ログインを実装する方法について説明します。単一のフォーム送信はフォームログインに似ているため、個別に説明することはしません。

注意: 一部の Web サイトには制限やバックグラウンドでのその他のチェックがあるため、curl フォーム送信によるログインはすべての Web サイトに適用できるわけではありません。これらの Web サイトの背後にある具体的な制限や検証メカニズムは不明であるため、直接の curl フォーム ログインは機能しない可能性があります。

もちろん、以下のケースも curl を使ってログインできます。

事例: LeanCloud ログイン

要件と結果

要件: curl 経由でログインすると、leancloud のアプリケーション ページに正常にアクセスできます。

ログインページのリンクは次のとおりです。

1 https://leancloud.cn/dashboard/login.html#/signin

以下のページは正常にアクセスできます。

1 https://leancloud.cn/dashboard/applist.html#/apps

ブラウザアクセスの影響:

ログインせずに結果に直接アクセスします。ブラウザから結果にアクセスします

上図の赤いボックス 403 内のアクセス リンクは次のとおりです。

1 https://leancloud.cn/1.1/clients/self/apps

curl 経由でログインを確認する

[root@iZ28xbsfvc4Z ~]# curl -i https://leancloud.cn/1.1/clients/self/apps
HTTP/1.1 403 禁止
サーバー: openresty
日付: 2019 年 7 月 14 日 (日) 11:35:28 GMT
コンテンツタイプ: application/json;charset=utf-8
転送エンコーディング: チャンク
接続: キープアライブ
変化: Accept-Encoding
キャッシュ制御: キャッシュなし、ストアなし
プラグマ: キャッシュなし

{"code":1,"error":"ユーザーがサインインしていません。"}

フォームフィールド情報を取得する

フォーム送信リンクを取得する

フォーム送信のリンク情報は下図から取得できます。詳細は以下の通りです。

1 https://leancloud.cn/1.1/signin

curl フォームにログインし、Cookie 情報を保存する

1 curl -v -c leancloud1.info -X POST -F 'email=yourname' -F 'password=yourpassword' https://leancloud.cn/1.1/signin
2 # または 3 curl -v -c leancloud3.info -X POST -d 'email=yourname&password=yourpassword' https://leancloud.cn/1.1/signin

クッキー情報を表示

[root@iZ28xbsfvc4Z 20190714_02]# ll
合計 32
-rw-r--r-- 1 ルート ルート 337 7月14日 19:45 leancloud1.info
-rw-r--r-- 1 ルート ルート 335 7月14日 19:46 leancloud3.info
[root@iZ28xbsfvc4Z 20190714_02]# cat leancloud1.info 
# Netscape HTTP Cookie ファイル
# http://curl.haxx.se/docs/http-cookies.html
# このファイルは libcurl によって生成されました。編集は自己責任で行ってください。

#HttpOnly_leancloud.cn 偽 / 真 1563709522 uluru_user Ff1IPOiMX%2F6ipevuxy0OOg%3D%3D
leancloud.cn 偽 / 真 1563709522 XSRF-トークン 5647dc84bd6eaea37eca2d07ae0e401cca4ba76803989c8559XXXXX7283da
[root@iZ28xbsfvc4Z 20190714_02]# cat leancloud3.info 
# Netscape HTTP Cookie ファイル
# http://curl.haxx.se/docs/http-cookies.html
# このファイルは libcurl によって生成されました。編集は自己責任で行ってください。

#HttpOnly_leancloud.cn 偽 / 真 1563709591 uluru_user arTwQm6JylzLjBaQt7TpiQ%3D%3D
leancloud.cn 偽 / 真 1563709591 XSRFトークン 751e12827c7c046408541bc1bf962b5912ac35b0d07f88120XXXXXX40704704

各列フィールドの説明:

ドメイン: 変数が作成され、読み取り可能なドメイン名。
フラグ: 特定のドメイン内のすべてのマシンが変数にアクセスできるかどうかを示す TRUE/FALSE 値。この値は、ドメインに設定した値に応じてブラウザによって自動的に設定されます。
path: 変数が有効なドメイン内のパス。
secure: 変数にアクセスするためにドメインへの安全な接続が必要かどうかを示す TRUE/FALSE 値。
有効期限: 変数の有効期限が切れる UNIX 時間。 UNIX 時間は、1970 年 1 月 1 日 00:00:00 GMT からの秒数として定義されます。
name: 変数名
値: 変数値

ログインが成功したかどうかを確認する

直接アクセスと Cookie を使用したアクセスという 2 つのアクセス方法を比較してください。

直接アクセス

[root@iZ28xbsfvc4Z 20190714_02]# curl -i https://leancloud.cn/1.1/clients/self/apps
HTTP/1.1 403 禁止
サーバー: openresty
日付: 2019 年 7 月 14 日 (日) 11:52:47 GMT
コンテンツタイプ: application/json;charset=utf-8
転送エンコーディング: チャンク
接続: キープアライブ
変化: Accept-Encoding
キャッシュ制御: キャッシュなし、ストアなし
プラグマ: キャッシュなし

{"code":1,"error":"ユーザーがサインインしていません。"}

クッキーファイルによるアクセス

# クッキーの使用
[root@iZ28xbsfvc4Z 20190714_02]# curl -i -b leancloud1.info https://leancloud.cn/1.1/clients/self/apps 
## または [root@iZ28xbsfvc4Z 20190714_02]# curl -i -b leancloud3.info https://leancloud.cn/1.1/clients/self/apps
HTTP/1.1 200 OK
サーバー: openresty
日付: 2019 年 7 月 14 日 (日) 11:53:29 GMT
コンテンツタイプ: application/json;charset=utf-8
転送エンコーディング: チャンク
接続: キープアライブ
変化: Accept-Encoding
キャッシュ制御: キャッシュなし、ストアなし
プラグマ: キャッシュなし
厳格なトランスポートセキュリティ: max-age=31536000

[{"app_domain":null,"description":null,"archive_status":0,"biz_type":"dev","master_key": ………………

アクセスするにはブラウザのCookieをコピーしてください

[root@iZ28xbsfvc4Z 20190720]# curl -i -H 'cookie: _ga=GA1.2.2055706705.1560005524; …………' https://leancloud.cn/1.1/clients/self/apps
HTTP/1.1 200 OK
サーバー: openresty
日付: 2019年7月20日(土)08:11:37 GMT
コンテンツタイプ: application/json;charset=utf-8
転送エンコーディング: チャンク
接続: キープアライブ
変化: Accept-Encoding
キャッシュ制御: キャッシュなし、ストアなし
プラグマ: キャッシュなし
厳格なトランスポートセキュリティ: max-age=31536000

[{"app_domain":null,"description":null,"archive_status":0,"biz_type":"dev","master_key": ……………… 

上記から、curl ログインが成功したことがわかります。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • Linux が Sudo 権限昇格の脆弱性を公開、どのユーザーでも root コマンドを実行可能
  • Linux のテキスト操作コマンド ed を使用して権限を昇格する方法 11 月 5 日の詳細な説明
  • Linux における非対話型権限昇格の詳細な説明
  • Linux は UDF ライブラリを使用して MySQL 権限昇格を実現します
  • Linux 権限昇格のトリック
  • Linux でフォルダーの下にあるすべてのディレクトリとファイル名をバッチで抽出する
  • Linux は suid vim.basic ファイルを使用して権限昇格を実現します。

<<:  CentOS に MySQL 8.0 をインストールして設定するための詳細な手順

>>:  JS 関数のアンチシェイクと関数スロットリングを理解する方法

推薦する

読み込み進捗バーのネイティブ JS 実装

この記事では、ネイティブ JS によって実装された動的読み込みプログレス バーの特殊効果を紹介します...

CSS3で実装された6つの境界遷移効果

6つの効果実装コードhtml <h1>CSS 境界遷移</h1> <セ...

Linux における効果的なユーザー グループと初期ユーザー グループの実装

まず、/etc/group ファイルを確認します。 [root@localhost /]# cat ...

MySQLでデータベースデータ保存ディレクトリを変更する方法

序文MySQL データベースのデフォルトのデータベース ファイルは /var/lib/mysql に...

vue3 を使用してカウント関数コンポーネントのカプセル化例を実装する

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. アイデア2. 準備2. ...

nginx設定ファイルの場所を見つける方法の詳細な説明

よく知らないサーバーの場合や、かなり前にインストールした場所を忘れてしまった場合、構成ファイルの場所...

Linux のスケジュールタスク Crontab コマンドの使用に関する詳細な説明と概要

crontab コマンドは、Unix および Linux で定期的な実行命令を設定するために使用され...

CSS3 アニメーション – ステップ機能の説明

最近、CSS3 アニメーションのソース コードの実装をいくつか見ていたところ、CSS コード アニメ...

JavaScript の新しい要素トラバーサルプロパティを使用して子要素をトラバースする方法を学びます

目次1. ChildNodes属性のトラバーサル2. 要素シリーズ属性のトラバーサル以前は、chil...

入力ボックスのプレースホルダーアニメーションと入力検証を実現する純粋なCSS

さらに興味深いコンテンツについては、https://github.com/abc-club/free...

Ubuntuのインストール Matlab2020b の詳細なチュートリアルとリソース

目次1. リソースファイル2. インストール2.1 詳細な手順2.1.1 ディスクイメージのマウント...

Docker-Composeコマンドの使い方の詳しい説明

Docker コンテナはさまざまな方法で管理およびデプロイできます。 Docker コマンドを直接使...

Vueはスクロールバースタイルを実装します

最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみ...

CentOS のファイルと権限の基本操作チュートリアル

序文始める前に、ファイル属性とファイル属性を変更する方法について簡単に理解しておく必要があります。 ...

Linux での Docker のインストールと展開の例

以下の記事を読んだ後、プロジェクトをサーバーにデプロイできます。Tomcat、JDK、MySQL な...