Pythonのフォーム・ログイン・プロセスとクッキー(1)
1.取扱いログインフォーム
2段階のプロセスフォーム星座:
- ログインフォームの研究サイト、ビルドパラメータ辞書POSTリクエスト
- 看板にPOSTリクエストを送信します
(1)研究のウェブサイトログインフォーム
サイトhttp://www.santostang.com/wp-login.php例えば(アカウント:テスト、パスワードは:A12345)
の要素を検出することによって見つかった
ログの値のname属性のユーザー名の入力ボックスをこれは辞書のキー、入力するユーザーのための値になります
PWDパスワードボックスのname属性の値
値は永遠の内側で、キー値を値はname属性を覚えている
いくつかのキー値は、ブラウザのサインインフォームに隠され設定されています値は、我々がレビューで要素を見つけることができ、表示するつもりはない
役割。
ページ内の隠しフィールドは、ユーザには見えないが、形態は、プログラムによって使用されるプロセスを容易にするために、収集または送信情報のフォームオブジェクトに隠されたフィールドに挿入されます。視聴者がフォームを送信するために送信]ボタンをクリックすると、隠されたフィールド情報も一緒にサーバに送信されます。
図2は、時々、私たちは、ユーザーにフォームがユーザーなどSESSIONKEYなどなどの同一性を決定するために提出されたときに彼が提出しなければならないというメッセージを与えます。もちろん、これらのものは、クッキーを達成することができますが、よりシンプルに隠されたフィールドの使用。そして、ユーザーが無効にクッキーのトラブルをサポートしていないブラウザではありません。
3時には、より多くのフォームよりプログラムのユーザーが押しボタンにそれを提出することを最終的に区別することができるようにする方法、ボタンが提出されていますか?私たちは隠されたフィールドを書き、その後、その後、我々はデータ受信したコマンドの値を確認することを知っているユーザーに基づいて、「後」=各οnclickで「document.form.command.value =」XXをボタンを追加することができますアップ提出するボタン。
4時にはより、Webページのフォームより、我々はより多くのフォームが同時に提出されていません知っているが、時にはこれらの相互作用は、我々は彼らがリンクにするために、フォームの中に隠しフィールドを追加することができ、実際に形成します。
5 JavaScriptがグローバル変数をサポートしていませんが、時には我々は、我々は既存のドメインの値を非表示にすることができ、グローバル変数を使用する必要があり、その値が失われることはありません。
6ここで小さなウィンドウのクリックが他の三つの自動閉鎖、4つの小さなウィンドウをポップアップ表示する例は、そのようなAの押しボタンがあります。しかし、IEは、ウィジェットがこれだけ隠されたフィールドの値を参照するには、小さなウィンドウが近く、自分のオフスイッチにあるときに、親ウィンドウに隠されたフィールドを書き、お互いを呼び出すサポートしていません。
(2)POST要求パラメータ辞書の構築
以下のように分析パラメータの最初のステップからのPOSTを構成することができるが、辞書の辞書を要求します。
postdata = {
'pwd' : 'a12345',
'log' : 'test',
'remember' : 'forever',
'redirect_to' : 'http://www.santostang.com/wp-admin',
'testcookie' : 1,
}
(3)は、POSTリクエスト提出する
セッションオブジェクトを作成し、インポート要求ライブラリへの最初の必要性を:
import requests
session = requests.session()
Webサイトの開発セッションが閉じられ、このプロセスを実行するための一般的なブラウザで重要な概念である、セッションが必要な特定のユーザーセッションのための店の特性や設定情報をオブジェクト。
コードは以下の通りであります:
import requests
session = requests.session()
post_url = 'http://www.santostang.com/wp-login.php'
agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
headers = {
'Host' : 'www.santostang.com',
'Origin' : 'http://www.santostang.com',
'Referer' : 'http://www.santostang.com/wp-login.php',
'User-Agent' : agent
}
postdata = {
'pwd' : 'a12345',
'log' : 'test',
'remember' : 'forever',
'redirect_to' : 'http://www.santostang.com/wp-admin',
'testcookie' : 1,
}
login_page = session.post(post_url,data=postdata,headers=headers)
print(login_page.status_code)