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データベースの保存場所: 1. MySQLがMyISAMストレージエンジンを使用する場合...

HTML マーキータグの使用例

このタグはHTML3.2の一部ではなく、MSIE3以降のカーネルのみをサポートしています。そのため、...

カルーセル効果を実現するネイティブJavaScript

この記事では、カルーセルの効果を実現するためのJavaScriptの具体的なコードを参考までに共有し...

Tik Tok サブスクリプション ボタンのアニメーション効果を実現する CSS

少し前にTik Tokを見ていて、フォローするときのボタンアニメーションがとても美しいと思ったのと、...

JSプロトタイプとプロトタイプチェーンについての簡単な説明

目次1. プロトタイプ2. プロトタイプポインタ: __proto__要約する1. プロトタイプJa...

Nginx リバースプロキシの例の詳細な説明

1. リバースプロキシの例1 1. 効果を達成する(1)ブラウザを開き、www.123.comと入力...

js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析

目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...

nofollowタグの使用と分析に関する簡単な説明

nofollowをめぐる論争Zac と Guoping の間では、nofollow が PR を無駄...

Centos7環境でMySQL 5.6のインスタンスを複数作成する方法の詳細な説明

この記事では、CentOS 7 環境で MySQL 5.6 の複数のインスタンスを作成する方法につい...

Webpack-cliが正常にインストールされたら、詳細についてはwebpack -vエラーケースを確認してください。

目次質問1. webpack webpack-cliをインストールする2. webpackのバージョ...

nginx のインストールが完了した後に PHP を解析できない問題の解決方法

目次方法1方法2 nginxをインストールした後、PHPコードを解析できないことがわかりました。解決...

Ubuntu Server でのワイヤレス ネットワーク カードの詳細な設定

1. ワイヤレス ネットワーク カードを挿入し、コマンドiwconfigを使用してワイヤレス ネット...

mysql ワイルドカード (sql 高度なフィルタリング)

目次まず、値の一部と一致させるために使用される特殊文字であるワイルドカードについて簡単に紹介します。...

HTML ハイパーリンク スタイル (4 つの異なる状態) の設定例

コードをコピーコードは次のとおりです。 <スタイル タイプ="text/css&qu...

uniapp エントリーレベル nvue クライミングピット記録の分析

目次序文こんにちは世界画像 境界線の半径を設定する実ピクセルを設定する外部CSSをインポートttfフ...