HTTPプロトコルはステートレスプロトコルであるため、サーバーがhttpプロトコルを介してクライアントと通信する場合、サーバーはクライアントの情報を記録できません。
この問題を解決するために、CookieとSessionテクノロジーによって実現されています。
クッキーの属性
一般的なCookieの属性は次のとおりです。
ドメイン:ドメイン。現在のCookieが属するドメインまたはサブドメインを示します。
サーバーから返されるSet-Cookieの場合、ドメイン値が指定されていない場合、ドメイン値はデフォルトで、現在送信されているhttp要求に対応するメインドメイン名になります。たとえば、http://www.example.comにアクセスして、名前付きドメイン値のないCookieを返す場合、デフォルトのwww.example.comになります。
パス:Cookieのパスを示します。
有効期限/最大経過時間:Cookieの有効期間を示します。有効期限の値は時間です。この時間が経過すると、Cookieは無効になります。または、max-ageを使用して、現在のCookieが期限切れになるまでの時間を指定します。サーバーから返されたCookieで有効期限が指定されていない場合、Cookieの有効期間は現在のセッション、つまり現在のセッションの終了後に期限切れになるセッションCookieのみであることを意味します。同様に、ページが(ブラウザで)閉じられると、Cookieはブラウザによって削除される必要があります。
セキュア:Cookieがhttpsを使用してのみ送信できることを示します。通常、認証情報を含むCookieに使用されます。このCookieの送信を要求する場合は、httpsを使用して送信する必要があります。
httponly:このCookieをhttpまたはhttps送信に使用する必要があることを示します。これは、javascriptなどのブラウザスクリプトがこのCookieにアクセスして操作することを許可されていないことを意味します。
クッキーを取得する
# BaiduホームページからBaiduアカウントにログインし、Cookieを取得します
from selenium import webdriver
from time import sleep
import json
# chomeブラウザーを起動し、Baiduのホームページにアクセスします
option=webdriver.ChromeOptions()
option.add_argument('--start-maximized')
drive=webdriver.Chrome(options=option)
drive.get('http://www.baidu.com')print(drive.title)
# クリックしてログイン」
eled=drive.find_element_by_link_text("ログインする")
eled.click()sleep(2)
# 「ユーザー名ログイン」をクリックします
namelogin=drive.find_element_by_css_selector('p.tang-pass-footerBarULogin')
namelogin.click()sleep(2)
# ユーザー名、パスワードを入力してログインします
username = drive.find_element_by_id('TANGRAM__PSP_10__userName')
username.send_keys('********')sleep(1)
password = drive.find_element_by_id('TANGRAM__PSP_10__password')
password.send_keys('********')sleep(1)
submit = drive.find_element_by_id('TANGRAM__PSP_10__submit')
submit.click()sleep(3)
# ウェブサイトのCookieを取得する
diccookie=drive.get_cookies()
fw=open('baiducookie.txt','w')
json.dump(diccookie,fw)
fw.close()
ハードディスクからCookieを読み取り、リクエスト送信サーバーに追加します。
import time
import json
chomeブラウザーを起動し、Baiduのホームページにアクセスします
option=webdriver.ChromeOptions()
option.add_argument('--start-maximized')
drive=webdriver.Chrome(options=option)
drive.get('http://www.baidu.com')print(drive.title)
fr=open('baidu_cookie.txt','r')
cookielist=json.load(fr)
fr.close()for cookie in cookielist:
drive.add_cookie(cookie)sleep(5)
drive.get('http://www.baidu.com')
drive.refresh()
Cookieを介してBaiduにログインできませんでした:
Message: unable to set cookie
Message: invalid argument: invalid ‘expiry’
これまで、python selenium operation cookieの実装に関するこの記事を紹介しました。関連するpythonselenium operation cookieの内容については、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLou.Cnをさらにサポートしていただければ幸いです。 !
Recommended Posts