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 関数のアンチシェイクと関数スロットリングを理解する方法

推薦する

MySQL 文字列インデックスのより合理的な作成ルールに関する議論

序文MySQL インデックスの使用に関しては、これまでインデックスの最左接頭辞ルール、インデックス ...

kindとDockerを使用してローカルKubernetes環境を起動する

導入Kubernetes を使い始めるのに丸一日を費やしたことはありませんか?最近登場したいくつかの...

HTMLプログラミングタグとドキュメント構造の詳細な説明

HTML を使用してコンテンツをマークアップする目的は、Web ページにセマンティクスを与えることで...

TypeScript の Enum が問題となる理由

目次どうしたの?いつ使うか列挙の数を制御するビット値コントロールインデックス非数値列挙結論はType...

Windows サーバー ファイルをローカルにバックアップする方法、Windows サーバー データ バックアップ ソリューション

重要なデータはバックアップする必要があり、リアルタイムでバックアップする必要があります。そうしないと...

MySQL 5.7.17 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.17のインストールと設定方法を参考までに紹介します。具体的な内容は...

MySQL 5.7 のユニオンオール使用法のブラックテクノロジーを 5 分で学ぶ

MySQL 5.6 での union all のパフォーマンスパート 1:MySQL 5.6.25 ...

MySQL での実行計画の explain コマンド例の詳細な説明

序文explain コマンドは、クエリ オプティマイザーがクエリの実行を決定した方法を確認する主な方...

ES9の新機能の詳細な説明: 非同期反復

目次非同期トラバーサル非同期反復可能トラバーサル非同期反復生成非同期メソッドと非同期ジェネレーター非...

CentOS7環境にMySQL5.5データベースをインストールする

目次1. 現在のシステムにMySQLがインストールされているかどうかを確認する2. インストールされ...

Vue印刷機能を実装する2つの方法の概要

方法1: npm経由でプラグインをインストールする1. npm install vue-print-...

Zabbix設定 DingTalkアラーム機能実装コード

必要Zabbix で DingTalk アラームを設定する方法は、Prometheus で Ding...

Ansible を使用した Nginx のバッチ デプロイのサンプル コード

1.1 nginxインストールパッケージとインストールスクリプトをクライアントにコピーし、スクリプト...

Docker MySQLコンテナデータベースへの変更が有効にならない問題を解決する

公式の MySQL イメージを使用するには、構成ファイル、DB データ ファイル ディレクトリなどの...

Docker コンテナのネットワーク障害に対する 6 つの解決策

Docker コンテナのネットワーク障害に対する 6 つの解決策注: 以下の方法は、コンテナ内のパブ...