ホームページ  >  記事  >  バックエンド開発  >  Curl はログインをシミュレートし、Cookie によって発行される URL が常に変化することを確認します。

Curl はログインをシミュレートし、Cookie によって発行される URL が常に変化することを確認します。

WBOY
WBOYオリジナル
2016-06-23 14:03:121020ブラウズ

最初のステップはgetメソッドでホームページを開くことです; 2番目のステップはホームページ上のログインボタンをクリックすることです、ログインボックスが表示され、投稿データが完成してログインが完了します。
2 番目のステップでは、最初のステップで生成された Cookie 値が必要です。
最初のステップはホームページにアクセスすることですが、これらの URL の多くは、ホームページに js が読み込まれた直後に自動的に送信されます。
そして、この Cookie は、これらのページの 1 つによってクライアントに書き込まれます。
この Cookie を取得するには、10 ページ以上をシミュレートする必要があると想像できますか?
そして、これらのページも変更されていることがわかりました。今回はいくつかの URL が表示されますが、次にホームページをクリックしたときには表示されません。つまり、ある訪問中にこの Cookie がどのページで発行されたのかわかりません。

Curl はブラウザのように、最初にリクエストされたページの下で js によってリクエストされた新しいページを自動的に処理することはできないようですよね?
各ページをシミュレートしたい場合は、それは不可能のようです。

私は、curl を使用してページをリクエストするとき、すべての Cookie が取得できるように、このページによって自動的に発行される後続のリクエストを Curl が自動的に処理する必要があると考えています。しかし、実装はこのようには見えません。curlは1つのURLと1つのURLしかリクエストできません。
このような状況ではカールは無力だというのは本当ですか?結局のところ、curl はブラウザではありません。
ヒント、みんなにヒントを。もしcurlがそれを処理できない場合、どの言語がそれを処理できるでしょうか?


ディスカッションに返信します (解決策)

Cookie キャッシュをすべてクリアし、このページを参照してパケットをキャプチャし、どのような特定の URL があるかを確認します。

Cookie を生成する URL にアクセスします。 Cookie + 訪問ページを生成します。


これは面倒なプロセスです。curl はインテリジェントなロボットではなく、複数のプロトコルをサポートする単なる送信ツールです。

すべての Cookie キャッシュをクリアし、このページを参照してパケットをキャプチャし、Cookie を生成した URL をキャプチャするまで繰り返します。

これは、Cookie を生成した URL にアクセスします。これは面倒なプロセスです。curl これはインテリジェントなロボットではなく、複数のプロトコルをサポートする単なる送信ツールです。
ありがとうございます。 Cookie は各リクエストの前にクリアする必要があります。最初に読み込まれたページには大量の JS コードが含まれており、その後その JS コードが他のリクエストを作成し、使用される Cookie がこれらのリクエストで発行されることがわかりました。また、これらの JS によって生成される URL には複雑な変数が含まれるため、そのような URL を作成するには、これらの JS コードを理解する必要があると考えられます。伝説的な強力なカールの他の機能はまだ非常に小さいようですが、実際にテンプレート投稿を使用するのは非常に困難です。

curl は js を実行しますか?
これらのプロフェッショナルなブラウザには依然として互換性の問題があります

このような問題が発生した場合、私は通常、それをパスします。それはできないことではなく、コストの問題です

2 つの解決策:

1. js エンジン (現在は V8) をインストールします。はより強力です) 強力です)、ホームページを取得した後、js 部分を抽出し、js エンジンに渡して実行します
2. まず、要求された 10 個の URL を手動で見つけます。たとえそれらがランダムであっても、特定の規則があることを確認します。 1 つは、必要な Cookie を生成し、この URL の Cookie をリクエストして記録するという 2 つの操作です。リクエスト Cookie が前にあり、投稿が後ろにあります

方法 1 の学習コストも次のとおりです。 V8 は基本的に考慮していません。方法 2 はスクリーニング時間の点で高価であり、一度手動でログインし、ログイン後のすべてをキャプチャする方が良いと思います...

最終的には、Cookie が使用されます。 1000 回ログインしたい場合は、これに時間を費やします
1 回ログインするだけで次の 1000 ページを取得できるのであれば、ログインに時間を費やす価値はありません。それ

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。